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