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:
Отличия
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 )