I'm solving a problem of detecting an optic disc in a retina image. As you can see from the image:

retina image

the optic disc is the epicentrum of the blood vessels, has an irregular circular shape and has a brighter color than the rest of the retina.

Now I want to use a convolutional neural network to detect it. I know that typical approaches to detecting something in an image using CNNs (consisting mostly of conv., pooling, dropout and fully connected layers) devide an image into smaller parts, each of them is send to a classifier asking whether there is the object or not.

But I'm thinking about another approach. It'd be a model, which gets a normal RGB image of Height x Width size as input, which goes through several convolution layers so as the size remains the same (Height x Width) but with more channels let's say N. There would be no pooling layers(??), so the final output of the convolution would be of the size Height x Width x N.

In this output there'd be Height x Width feature vectors of the size N, each somehow describing the pixel on this position in the original image and its neighbourhood (??). Now what I'm trying to do here is to take these individual vectors as inputs to a fully connected layer network. Output of this would be some number describing the relative position of the input pixel in respect to the position of the optic disc in the image (maybe its distance, or the position itself, I don't know yet...). The training data consists of an image and the x, y position ot the optic disc.

But I'm not sure about some things about this approach. Can I not to use pooling layers? I thought maybe it wouldn't be transform invariant then, or something like that. I'm also not sure if what I'm doing in the fully connected layers is correct. I don't understand neural networks so well to say that "it is obvious that this should work" or "or this is that case where it is not easy to say and it's worth implementing it to see how it will work" or "this obviously won't work because...". So my question is just: which one of this three cases is this?

And isn't there some "obvious" method for this stuff and I'm just trying to solve something that was already solved? (maybe RNNs or something...)

  • $\begingroup$ Why do you want to use a CNN? In this case, I would expect simpler approaches to work better, more reliable, with less computational power and less memory. And I expect those to be easier to develop. What are difficult cases for the optical disc? $\endgroup$ Nov 2, 2017 at 7:40
  • $\begingroup$ Yes there are such approaches. But there are some diseases that make mess from the optic disc (change its color, shape...) and it's more difficult to find it then. Also there is a typical CNN approach to detect objects, it sends just smaller regions of interest to the net which says it's the object or not. But I think that an improvement can be made in this use case, as the blood vessels in the whole image are somehow indicating which in way the OD is. And I thought that maybe every vector from a feature map like the one from my question would have some useful information about the OD position $\endgroup$
    – T.Poe
    Nov 2, 2017 at 8:01
  • $\begingroup$ Here the main problem I see is that you didn't well specify the training data. Ideally, you should have several thousands of examples of such images $x_i$, for each one $N$ transformed images $\varphi_j(x_i)$ from which the object is easier to detect (one with the contours of the object highlighted, and two others indacting the vessels direction and intensity ?) as well as the hand-anoted localization and parameters $p_i$ of the object, so you can train a CNN+classifier to do $x_i \mapsto \varphi(x_i) \mapsto p_i$. $\endgroup$
    – reuns
    Nov 22, 2017 at 3:38


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.