Home - martynwinn/map-recognition GitHub Wiki
There are several stages to the procedure, each of which we can look to improve:
Input map slices
- Vary the size of slices to capture different scales of features. Currently we use 48 x 48 pixels which covers quite a large area of the map.
- Look at thick slices (i.e. 3D) or thin slices where pixel values are averages over a few neighbouring slices.
- Vary the blurring of the original 3D map. I do this in Chimera, but also possible in scipy or scikit??
- Special case of crystallographic maps
- Ensure balanced dataset for training
Image pre-processing
- Scaling of pixel values, e.g. extract_EM_slices.py has a linear scaling using map_min and map_max. Non-linear scaling might be useful.
- Apply filters, see e.g. sobel_edge.py or canny_edge.py filters from scikit-image
- Keras data augmentation routines e.g. image rotations give 4x as many input images.
Machine learning model
- Different model architectures e.g. more layers
- Vary hyper-parameters e.g. kernel_size of convolution window
- Can Bayesian Optimization be used to optimise architecture and hyperparameters?
Results analysis
- What results to display
- Map slices with M-L predictions back to original 3D volume