Git Product home page Git Product logo

Comments (4)

mikeszabi avatar mikeszabi commented on May 24, 2024

I am trying to use ssd_7 to detect power pylons - which have pretty large aspect ratios (height/width). Small datasets (~200 images) would not converge for me too. I wonder it is because of the unusual aspect ratios or because fo the lack of enough training images...
My aspect ratios are:
aspect_ratios = [2.5, 3.5, 4.5, 5.5]

from ssd_keras.

luckyuho avatar luckyuho commented on May 24, 2024

hello, pierluigiferrari
I have tried about 2000 images for ssd7, however it still can work but with bad prediction.
I still can not figure why we need so lots data for predicting our training data, so I assume maybe it is caused by the difficult environment and variant objects.
Therefore, I build a environment myself in unity like this.
unity_scene
I want to set all same types of cars and people, the only different things would be color and scale
What I try to do is recognize road, people and car like below
labels
I want to try an easy dataset first to learn how the network works, but I do not understand the number of data is good to work, all I know is the more the better ==".
so how many data do you think for ssd7 to get work in this environment?
Thank you!!^^

from ssd_keras.

pierluigiferrari avatar pierluigiferrari commented on May 24, 2024

I've just tried to overfit a small fraction of the Udacity dataset (120 images), and it overfits quite nicely:

ssd7_120_images_overfitting

I cannot reproduce the issue you're having. That being said, I did make a change to the loss function in a recent update just now. Maybe pull the latest commit and try again with the updated version.

You can also use the new random_sample option of BatchGenerator's parse_csv(). It allows you to randomly sample a fraction of a dataset. In my overfitting experiment I used 0.005 of the original Udacity dataset.

@mikeszabi the small number of training images is not the cause if it doesn't converge. Fewer images make the weights converge faster (and overfit of course). Be careful with the aspect ratios though: Using large aspect ratios without adjusting the scaling factors at the same time could lead to anchor boxes that are larger in one spatial dimension than the receptive field of their predictor layer. If you wanted to do this in a systematic way you would really have to compute what your aspect ratios actually mean in terms of the sizes of the resulting anchor boxes in pixels and compare that to the receptive fields of the respective predictor layers. I know it sounds tedious to do that, but training an SSD is non-trivial in this respect. I recommend reading and understanding the first part of the code of SSDBoxEncoder's generate_anchor_boxes() method. The widths and heights of the anchor boxes are computed as follows:

w = scale * size * sqrt(aspect_ratio)
h = scale * size / sqrt(aspect_ratio)

You might have to decrease the scaling factors in order to get anchor box sizes that make sense for the respective predictor layers. I believe it is likely that decreasing the scaling factors would help.

from ssd_keras.

luckyuho avatar luckyuho commented on May 24, 2024

Oh, it's my fault!
and random sampling is really important when we only has small dataset!!(my little experiment)
really thanks for your help, pierluigiferrari!!!

from ssd_keras.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.