Retraining YOLO v2 object detecting network for a specific biological problem

1 view (last 30 days)
Hi all,
I'm am a complete rookie in machine learning, but am currently engaged in solving an object detection problem in fluorescent microscopy images, so I though I would try some machine learning algorithms to help me out. I took this example and modified the code to my specific data and try to run in. It turns out that the network could not predict any objects. Therefore I would like to ask, which specific parameters I should focus on studying in order to make a better network for the problem at hand.
Here are the details of what I did:
  • The training data consisted of 20 images with 420 labelled objects (these wer labeled using Image Labeller in Matlab). This dataset was split into the training and test data, such that the training data contained 60% of the input images (same as in the example).
  • The training data was augmented and preprocessed in the same way as in the example.
  • I set the network input size as [256 256 3], which is the size of my input images; the latter are all of the same size, so no rescaling was needed.
  • The number of object classes was set to 1
  • For the feature extraction network I used the default ResNet-50 model.
  • I estimated 7 anchor boxes to be used for detection
  • For the feature extraction layer I used featureLayer = 'activation_40_relu';
The rest was the same as in the example. The training finished successfully, but when I ran the evaluation of the picker, nothing was detected, which I assumed was the reason for empty bboxes and scores variables and also the average precision was 0. Now, I know that this was a naive first attempt seeing that the feature extraction model used was not trained on biological features, but objects such as keyboards, TVs and so on, but I would like to ask, which parameter might make the biggest difference for the problem at hand. Use a different feature extraction network and if so, are there any microscopy oriented ones out there? Might simply using a larger training set work, or perhaps a different object detector than YOLO? Are the labeled features perhaps too small (the bounding boxes are roughly 6x6 pixels vs a 256x256 pixel image)? Or might the best course of action be to simply design a new detection network from scratch?
Any guidance in what to focus on would be warmly welcome. If any additional information is needed, please ask.
Many thanks,

Answers (1)

Shishir Singhal
Shishir Singhal on 29 Jul 2020
Hello Peter,
  • Since you wants to implement an object detection framework for microscopic images, I am assuming that the object present in these images are quite small which YOLO v2 might not give good results. I would recommend you to use YOLO v3, it is an enhanced verison of YOLO v2 which works well in case of small objects. Please refer to the documentation for YOLO v3:
  • Object detection accuracy also depends upon the quality of images. I mean, please do some image processing before directly feeding images into the model.
  • As you mentioned, the dataset consists of only 20 images. I would say even if you use data augmentation, you still need more images for proper training of the model. Otherwise, there could be chances of model overfitting. You will get good accuracy while training, but performs bad for test data points.
I hope that above mentioned points will help you.
Thanks,

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!