====== How to use SPHIRE's Cinderella for micrograph selection ====== This tutorial describes how to use Cinderella to sort micrographs. Unfortunately, we cannot provide a pretrained model yet. Therefore the first step is to train a model (see section //Training//) and to apply a model (see section //Classify//). ==== Download & Install ==== You can find the download and installation instructions here: [[auto_2d_class_selection|Download and Installation]] ==== Training ==== The first step is to train Cinderella with manually selected good and bad micrographs. Create two folders, one containing manually selected good micrographs (e.g ''GOOD_MICS/'') and one contain bad micrographs (e.g ''BAD_MICS/''). Both folders can contain subfolders. **How many micrographs do I need?** We typically start with 30 good and 30 bad micrographs. Then specify the paths into a config file like this: { "model": { "input_size": [512,512] }, "train": { "batch_size": 6, "good_path": "GOOD_MICS/", "bad_path": "BAD_MICS/", "pretrained_weights": "", "saved_weights_name": "my_model.h5", "learning_rate": 1e-4, "nb_epoch": 100, "nb_early_stop": 15 } } The fields in the section **model** have the following meaning: * **input_size**: This is the image size to which each micrograph is resized to. * **mask_radius**: (Optional) Circular mask radius which is applied after resizing to the input size. If not given, it uses 0.4 * **input_size** as default. The fields in the section **train** have the following meaning: * **batch_size**: How many micrographs are in one mini-batch. If you have memory problems, you can try to reduce this value. * **good_path**: Path to folder with good micrographs. * **bad_path**: Path to folder with bad micrographs. * **pretrained_weights**: Path to weights that are used to initialize the network. It can be empty. As Cinderella is using the same network architecture as crYOLO, we are typically using the [[downloads:cryolo_1#general_phosaurusnet_models|general network of crYOLO]] as pretrained weights. * **saved_weights_name**: Final model filename * **learning_rate**: Learning rate, should not be changed. * **nb_epoch**: Maximum number of epochs to train. However, it will stop earlier (see nb_early_stop). * **nb_early_stop**: If the validation loss did not improve "nb_early_stop" times in a row, the training will stop automatically. The next step is to run the training: sp_cinderella_train.py -c example_config.json --gpu 1 This will train a classification network on the GPU with ID=1. After the training finishes, you get a ''my_model.h5'' file. This can then be used to classfiy micrographs into good / bad categories. ==== Classify ==== Suppose you want to separate good and bad micrographs in the folder ''micrographs'' and you want to save a list with the filenames of the good / bad micrographgs into the folder ''output_folder''. Furthermore you want to use the model ''my_model.h5'' and the GPU with ID=1. Micrographs with a confidence bigger than 0.5 should be classified as good micrograph. This is the command to run: sp_cinderella_predict.py -i micrographs/ -w model.h5 -o output_folder/ -t 0.5 --gpu 1 You will find the files ''bad.txt'' and ''good.txt'' in your ''output_folder''.