1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/wuzhihao7788-yolodet-pytorch

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
pp-yolo_cn.md 8.6 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 28.11.2024 17:32 e6044b6

PP-YOLO модель

Содержание:

  • Введение.
  • Структура сети и особенности.
  • Отличия.
  • Как использовать.

Введение

PP-YOLO — это модель, оптимизированная и улучшенная компанией Baidu на основе YOLOv3. По данным Baidu, точность модели (по данным COCO) и скорость вывода превосходят показатели модели YOLOv4. На тестовом наборе данных COCO точность достигает 45,9%, а скорость вывода на одной карте V100 в режиме FP32 составляет 72,9 FPS. При использовании TensorRT на V100 скорость вывода в режиме FP16 составляет 155,6 FPS.

Структура сети и особенности

Особенности PP-YOLO:

  • базовая сеть: ResNet50vd-DCN;
  • Drop Block;
  • Exponential Moving Average;
  • IoU Loss;
  • Grid Sensitive;
  • Matrix NMS;
  • CoordConv;
  • Spatial Pyramid Pooling;
  • IOU_Aware_Loss;
  • лучшая предобученная модель (трансферное обучение);
  • дополнительное объяснение функции потерь IoU_Aware_Loss. В оригинальной серии YOLO оценка достоверности представляет собой произведение вероятности классификации на оценку объекта. Не учитывается точность позиционирования ограничивающего прямоугольника. Эта функция потерь используется для измерения точности позиционирования ограничивающих прямоугольников.

Отличия

Baidu использует ResNet50 с ветвью ResNet-D. Я использовал предобученную модель из PyTorch, которая имеет структуру ветви ResNet-B. Модель ResNet50 от Baidu была обучена с использованием трансферного обучения и имеет более высокую точность по сравнению с моделью из PyTorch.

В статье C5->P5 (вход: 512, выход: 512), C4->P4 (вход: 512, выход: 256), C3->P3 (вход: 256, выход: 128). Однако в реальной реализации кода, поскольку выходные данные ResNet составляют [512, 1024, 2048], фактическая реализация кода — C5->P5 (ввод: 2048, вывод: 512), C4->P4 (ввод: 1024, вывод: 256), C3->P3 (ввод: 512, вывод: 128).

В последней реализации Paddle для C5->P5 позиция DropBlock отличается от позиции, указанной в статье. В статье DropBlock используется в первом блоке Conv, но в реальном коде он используется во втором блоке Conv. Мы следуем реализации Paddle по умолчанию. Вы можете изменить конфигурацию PPFPN в шее, установив second_drop_block=False, чтобы соответствовать статье.

IoU_Aware_Loss

Относительно определения положительных и отрицательных образцов, PP-YOLO использует определение, аналогичное оригинальному YOLO, с добавлением функций потерь xy_loss, wh_loss и IoU_Aware_Loss. Однако эксперименты показали, что использование определения положительных и отрицательных выборок YOLOv5 и функции потерь приводит к более быстрой сходимости модели, чем оригинальное определение PP-YOLO. Если ресурсы ограничены, и вы хотите быстро сходиться, можно использовать определение положительных и отрицательных выборок и функцию потерь YOLOv5. По умолчанию используется метод YOLOv5, соответствующий параметр — yolo_loss_type=yolov5. Для получения подробной информации о YOLOv5 обратитесь к разделу YOLOv5. Установите значение None, чтобы использовать определение функции потерь PP-YOLO, или установите значение yolov4, чтобы использовать исходное определение функции потерь YOLO.

Метод использования

Подготовка

Загрузите предварительно обученную модель ResNet50 самостоятельно. Адрес для скачивания: https://download.pytorch.org/models/resnet50-19c8e357.pth. Измените параметр конфигурации pretrained на путь к локально сохранённой предварительно обученной модели.

type='PPYOLODetector',  
pretrained='Путь к предварительно обученной модели ResNet50',  
backbone=dict(  
  type='ResNet',  
  depth=50,  
  num_stages=4,  
  out_indices=(1, 2, 3),  
  frozen_stages=1,  
  norm_cfg=dict(type='BN', requires_grad=True),  
  norm_eval=True,  
  style='pytorch',  
  dcn=dict(type='DCNv2',deformable_groups=1, fallback_on_stride=False),  
  # dcn=None,  
  stage_with_dcn=(False, False, False, True)  
)

Подготовьте набор данных для обучения самостоятельно и укажите местоположение набора данных для обучения. Подробные инструкции см. в разделе «Подготовка данных» здесь. Вы также можете обратиться к разделу «YOLOv4» здесь для быстрого доступа.

Использование GPU для обучения

python tools/train.py ${CONFIG_FILE}

Если вы хотите указать рабочий каталог в команде, вы можете добавить параметр --work_dir ${YOUR_WORK_DIR}. Например, при использовании YOLOv4 для обучения модели:

python tools/train.py cfg/yolov4_coco_100e.py --device ${device} --validate

Использование указанного GPU для обучения

python tools/train.py ${CONFIG_FILE} --device ${device} [optional arguments]

Например, при использовании YOLOv4 для обучения модели:

python tools/train.py cfg/yolov4_coco_100e.py --device 0,1,2 --validate

Необязательные параметры:

  • --validate (настоятельно рекомендуется): выполнять оценку во время каждой эпохи k (значение по умолчанию равно 1, его можно изменить таким образом this).

  • --work_dir ${WORK_DIR}: переопределить рабочий каталог, указанный в файле конфигурации.

  • --device ${device}: указать устройство для обучения, 0 или 0, 1, 2, 3 или cpu, по умолчанию используются все устройства.

  • --resume_from ${CHECKPOINT_FILE}: продолжить обучение с контрольной точки.

  • --multi-scale: масштабирование с несколькими масштабами, диапазон размеров составляет ± 50% от размера обучающего изображения.

Разница между resume_from и load_from:

resume_from загружает состояние оптимизатора и веса модели и продолжает обучение с указанной контрольной точки. Обычно он используется для возобновления прерванного обучения. load_from только загружает веса модели и начинает обучение с эпохи 0. Обычно он используется для точной настройки.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/wuzhihao7788-yolodet-pytorch.git
git@api.gitlife.ru:oschina-mirror/wuzhihao7788-yolodet-pytorch.git
oschina-mirror
wuzhihao7788-yolodet-pytorch
wuzhihao7788-yolodet-pytorch
master