4
$\begingroup$

I want to detect the location of a single class of object, which might occur multiple times in an image. Specifically, this relates to research on detecting brake lights for autonomous vehicles. I imagine similar techniques could be used to detect all faces for security applications, or balls for robot soccer, or a specific type of cancer or...

At the moment I am considering retraining a YOLO9000 or SSD network, as both have the necessary real-time performance to run 30fps. However, I'm assuming that at least some of their capacity is dedicated to features I don't need

  • classification across a wide range of classes
  • detecting whether something is an object or not for any of these classes

Since my problem is much simpler, I wondered whether there are any network architectures which have specialised on the localisation task?

I have found similar questions, but in both cases the question I want an answer to was mixed up with a secondary question and didn't give the answer I was looking for. I'd be happy to close as a dupe if one of these gets a better answer:

https://stackoverflow.com/questions/45891271/neural-network-to-detect-one-class-of-object-only https://ai.stackexchange.com/questions/2279/cnn-for-detecting-not-just-the-nature-of-the-object-but-position-within-image-a

I did learn one helpful thing from those questions: trying to detect a single class is actually differentiating between 2 classes - objects I want to detect and background/everything else.

$\endgroup$
  • $\begingroup$ I think you're interested in keypoint detection. Usually the way these work is first, convolutions generate a heatmap on the image corresponding to identified objects. NMS suppression is then used to both group keypoints and discern if they are different. Take a look at recent work done on face keypoint detection and pose estimation for more inspiration. $\endgroup$ – Alex R. Jun 13 '18 at 0:27
  • $\begingroup$ Thanks for that suggestion. Having read up on it, it seems that there are aspects of keypoint detection that would be helpful, but still 1 feature that I don't need, and 1 feature missing that I do need: facial keypoint detection detects many different classes (edge of eyes, lips etc) and gives only a location estimate. I will need an estimate of the border (or failing that the bounding box or a radius) so that I can test those pixels as to whether the brake light is on or off. It's also looking for exactly 15 points, whereas I don't know a priori how many brake lights will be in an image. $\endgroup$ – craq Jun 13 '18 at 21:25
  • $\begingroup$ I'm not sure I see an issue here. Most keypoint detections support multiple bodies (i.e detections) in the image. If you only have one class, then fine, just get rid of the other classes in the model and train it only with one class. $\endgroup$ – Alex R. Jun 14 '18 at 18:01
  • 1
    $\begingroup$ To test the brake light, whether it's on or off, it might make more sense to instead use a bounding box model to first find brake-lights and then run a secondary classification on them to see if they are on or off. Then this model will just have 2 classes, brakelights or background. To be clear, background is never actually reported in the classifications, it's just used to determine if something is a brake light , Tensorflow's vanilla object detection framework should work great for this:github.com/tensorflow/models/tree/master/research/… $\endgroup$ – Alex R. Jun 14 '18 at 18:04
  • $\begingroup$ Yes, I agree that it will probably be best to detect the light first, and then assess whether it is on or off. Tensorflow's object detection looks promising, but I wonder if it will be fast enough for real-time? At this stage I think I'm realising that there is no clear cut answer. So I'll give TF, SSD and YOLO a go and see what works. $\endgroup$ – craq Jun 15 '18 at 4:54
0
$\begingroup$

I am currently doing a single class segmentation network to detect pixels in microscopy images. What I am doing is like one step more than what you need to do.

Basically I am using FCN-8 to do pixel classification, but the first part of the model is a VGG16.

I would look online for a generic Keras or other library VGG16 model, and retrain it on your dataset.

This implies that you have a large enough dataset to train the model with and some time in front of you as they require a long training to be really accurate.

One article that might be of help: https://alexisbcook.github.io/2017/global-average-pooling-layers-for-object-localization/

$\endgroup$
  • $\begingroup$ The YOLO9000 paper implies that VGG16 isn't well suited to real-time applications, because it needs roughly 4x as many flops for 2% better accuracy. I suppose real-time is not a requirement for microscopy. Perhaps I should add that requirement to my question? openaccess.thecvf.com/content_cvpr_2017/papers/… $\endgroup$ – craq Jun 12 '18 at 23:25
  • 1
    $\begingroup$ indeed you should add this requirement else you will not get an accurate enough answer. Then I'll just say, retrain the YOLO one. $\endgroup$ – Xqua Jun 13 '18 at 4:14

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.