Yolov3 на одном классе набора данных COCO - PullRequest
1 голос
/ 28 января 2020

Я хочу сравнить производительность модели yolov3, которая может обнаружить несколько классов, с моделью yolov3, которая может обнаружить только один класс.

Что я сделал до сих пор:

  • Для сравнения я использую модель yolov3, которая предварительно обучена на наборе данных COCO. Поэтому я использую файлы yolov3.cfg coco.data и файлы yolov3.weights, которые упоминаются здесь: https://pjreddie.com/darknet/yolo/
  • Затем я загрузил данные train и val для уточнения c класс с сайта COCO. ~ 6400 обучающих изображений и ~ 2600 проверочных данных для человека класса и ~ 12744 обучающих изображений и ~ 580 проверочных изображений для кресла класса.
  • для моделей с одним классом, я изменил yolov3.cfg в соответствующей линии (# классы = 1 и # фильтры = 18)
  • Затем я обучил модель yolov3 для каждого (человек и кресло) на основе файла предварительно обученных весов: darknet53.conv.74

Обучение

  • Я обучил модель для классного человека примерно 267100 партиям. (AVG-LOSS: 1.3)
  • Я подготовил модель для кресла класса примерно для 51200 партий. (AVG-LOSS: 1.0)

Проверка

  • Я использовал загруженные проверочные изображения для расчета карты -value / ар-значение. Я сделал это, позвонив по номеру darknet detector map model.data model.cfg model.best.weights

из класса

  • Когда я использую модель кокоса по умолчанию, которая может обнаружить 80 классов, я получаю:

    class_id = 0, name = person, ap = 76.56%, (TP=7684, FP=3982)

  • Обученная одноклассная модель достигает:

    class_id = 0, name = person, ap = 66.63%, (TP=6515, FP=2259)

стул класса

  • Когда я использую модель кокоса по умолчанию, которая может обнаружить 80 классов, я получаю:

    class_id = 0, name = person, ap = 60.58%, (TP=880, FP=504)

  • Обученная одноклассная модель достигает:

    class_id = 0, name = person, ap = 38.59%, (TP=482, FP=232)

Вопросы

  1. Почему средняя потеря во время тренировки все еще превышает 1,0? Похоже, что функция уже сошлась, и я уже выше эмпирического правила ~ 2000 пакетов в классе.

  2. Разве объем данных не должен быть достаточным для обучения только один класс? Особенно, когда я использую предварительно подготовленные веса для конвальных слоев?

  3. Являются ли средние значения точности (ap) реалистичными c? Верно ли, что модели с одним классом работают хуже, чем модель, которая обучается во всех 80 классах? Если нет, что может быть причиной того, что точность одноклассной модели хуже?

  4. Если да, то это связано с тем, что если мы тренируемся со всеми классами, мы действительно можем узнать различия между классами, и это приводит к лучшей производительности, что просто изучение только одного класса ?

изображение поезда класса стул

Train image of class chair

изображение поезда человека класса

Train image of class person

...