4
$\begingroup$

I want to use a pre-trained convolutional network for image classification. My base data has resolutions of 500x500px up to 1000x1000px. Pre-trained architectures often expect less (between 255 and 299px in case of Googles Inception network).

Firstly: Would it potentially have a big impact to use higher resolution images? I.e. is it worthwhile investigating it? Secondly: Does it make sense and is it possible to use a pre-trained network on low resolution and re-training the last layer/classifier with higher resolutions?

$\endgroup$

1 Answer 1

5
$\begingroup$

Would it potentially have a big impact to use higher resolution images?

Yes, if you increase the input size to your convolutional neural network, the size of each activation map for each layer increases, so you will have more computation. Also if you use same architecture, the number of neurons and consequently the number of parameters, in dense layers increases.

Does it make sense and is it possible to use a pre-trained network on low resolution and re-training the last layer/classifier with higher resolutions?

The answer is no. When you train a network with a special size of input, you reserve variables to hold the weights and middle variables. If you increase the size of input, dense layers will have different size, so their number of wights should vary too.

To wrap up, for networks with classification tasks, it is appropriate to pass the network small size of images. For other tasks like edge detection where the information of edges can be destroyed by resizing, you have to be careful. In those cases you have to find an appropriate size of the image in order to keep the important information. The small size of the inputs is for reducing number of operations and number of parameters.

$\endgroup$
6
  • $\begingroup$ Thanks for your input. Can you explain the last part: You distinguish between classification and edge detection. Aren't they the same? A network that does classification needs things like edge detection on lower levels to classify? $\endgroup$
    – Gegenwind
    Feb 26, 2018 at 12:21
  • $\begingroup$ @Gegenwind No, I was speaking about something else. Pre-trained models in keras are for classification tasks. There are some researches about finding the edges using neural networks. They are completely different from classification tasks. In those nets, by decreasing the size, you may lose the corners and sharp edges. That was what I was speaking about. $\endgroup$ Feb 26, 2018 at 12:29
  • $\begingroup$ I think I need to read up on edge detection tasks. For the time being I deal with classification. Still: If reducing resolution is capable of preventing edge detection it will also negatively impact classification in the same way? Maybe you can provide a source that helps me understand how edge detection is different from the lower layers of a classification-purposed NN $\endgroup$
    – Gegenwind
    Feb 26, 2018 at 12:51
  • $\begingroup$ Actually there are papers about edge finding using deep nets but forget about them, they are a bit complicated. What I mean was that for classification tasks, by resizing the images, you definitely loose some information, but the point is that you will have main information and they suffice for classification tasks. But in tasks like car detection and car localization in autonomous driving it is vital to know the exact place of edges of cars. Yes, I can provide links for that. Take a look at the videos here. $\endgroup$ Feb 26, 2018 at 13:04
  • $\begingroup$ Thanks for clearing it up. I currently struggle with the performance of my pre-trained inceptionV3 network regarding prediction quality. It seemed obvious to use higher resolution images since they are available. $\endgroup$
    – Gegenwind
    Feb 26, 2018 at 13:12

Your Answer

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

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