AIWintermuteAI / aXeleRate

Keras-based framework for AI on the Edge
MIT License
177 stars 71 forks source link

Does training with negative samples(pictures without objects of interest) increase accuracy? #41

Closed wwzh2015 closed 3 years ago

wwzh2015 commented 3 years ago

if whether these empty negative sample be trained that is no target of image and just a background image, that relevant xml also no target element.

The aXeleRate network have supported these empty negative sample that can be trained?

So, the work can improve AP or PR?

AIWintermuteAI commented 3 years ago

Referenced and explained in https://github.com/AIWintermuteAI/aXeleRate/issues/12 Short answer: it does support training with images with empty negative samples, but it very likely will not increase accuracy.

wwzh2015 commented 3 years ago

Referenced and explained in #12 Short answer: it does support training with images with empty negative samples, but it very likely will not increase accuracy.

So I should copy target object to empty background image,that be changed to positive sample?

AIWintermuteAI commented 3 years ago

I think what you're trying to describe is called Synthetic data - and yes, that could be good approach to increase the accuracy. Have a look at this article: https://www.hackster.io/dmitrywat/synthetic-data-generation-for-object-detection-e0f023

wwzh2015 commented 3 years ago

Now, the two class target objects is cxtstence , one is a positive sample, but another object is negative samples, They don't exist in the same image,But I just train and detect only one class object.

AIWintermuteAI commented 3 years ago

Sorry, I'm not following - Word "sample" refers to images. You can say you have 1000 samples, which would mean you have 1000 images. The images(samples) can contain multiple instances of the same class or multiple instances of different classes.

AIWintermuteAI commented 3 years ago

emm, I mean motorbike and bike 2 classes objects, but I only annotate label bike for single class object to train(positive sample)。 I don't want annotate label these voc-xml of motorbike for train(negative samples), but these motorbike and bike look is very similar! Usually these bikes and motorbikes are not in the same image of dataset! So, I want just add these no annotation label voc-xml of motorbike to train(object element is not exist), that can improve recall rate or AP ? voc-xml of motorbike example(a negative sample):

    <annotation>
      <folder>VOC2007</folder>
      <filename>fyb004595.jpg</filename>
      <source>
          <database>Unknown</database>
      </source>
      <size>
          <width>600</width>
          <height>775</height>
          <depth>3</depth>
      </size>
      <segmented>0</segmented>
    </annotation>

The VOC API have supported the format of XML.

Yes, it is possible to train with empty samples (not containing any instances of object of interest). According to at least one evidence https://github.com/AIWintermuteAI/aXeleRate/issues/12 that does not increase accuracy.