содержание
Резюме
YOLOv4-large — это архитектура, специально разработанная для облачных графических процессоров, основной целью которой является повышение точности обнаружения целей. Авторы разработали полноразмерный YOLOv4-P5 на основе вышеупомянутого анализа и расширенных YOLOv4-P6 и YOLOv4-P7. Соответствующая схема структуры сети показана на следующем рисунке.
Экспериментально автор обнаружил, что: YOLOv4-P6 (коэффициент масштабирования ширины 1) может достигать производительности обработки в реальном времени 30 кадров в секунду; YOLOv4-P7 (коэффициент масштабирования ширины 1,25) может достигать скорости обработки 15 кадров в секунду.
Бумага:АР Вест V.org/ABS/2011.08…
Идея диплома:
Путем анализа современных современных детекторов объектов мы обнаружили, что магистраль CSPDarknet53 YOLOv4 [1] соответствует почти всем оптимальным архитектурным характеристикам, полученным с помощью методов поиска сетевой архитектуры.
Глубина, коэффициент узких мест и коэффициент роста возрастной ширины CSPDarknet53 составляют 65, 1 и 2 соответственно. Поэтому мы разработали метод масштабирования модели на основе YOLOv4 и предложили шкалу YOLOv4. Предложенный скейлинг yolov4 имеет отличную производительность, как показано на следующем рисунке:
Процесс проектирования шкалы - yolov4 выглядит следующим образом
Сначала был переработан yolov4, предложен YOLOv4-CSP, а затем на основе YOLOv4-CSP разработан scale-yolov4.
В предлагаемом масштабе-yolov4 в этой статье обсуждаются верхняя и нижняя границы моделей линейного масштабирования, а также анализируются вопросы, на которые необходимо обратить внимание при масштабировании малых и больших моделей соответственно. Таким образом, мы можем систематически разрабатывать модели YOLOv4-large и yolov4-tiny. Scaled-YOLOv4 обеспечивает наилучший баланс между скоростью и точностью, обеспечивая обнаружение объектов в режиме реального времени в фильмах с частотой 15, 30 и 60 кадров в секунду и во встроенных системах.
Подведем итоги работы над этой статьей:
1. Разработать мощный метод масштабирования модели для небольших моделей, который систематически уравновешивает вычислительные затраты и пропускную способность хранения неглубоких CNN;
2. Разработать простую и эффективную стратегию масштабирования для крупномасштабных детекторов объектов;
3. Проанализируйте взаимосвязь между факторами масштабирования каждой модели и масштабируйте модель на основе оптимального группового разделения;
4. Эксперименты подтвердили, что структура FPN по существу является одноразовой структурой;
5. Используйте описанный выше метод для разработки yolov4-tiny и yolo4v4-large.
Сравнительный тест между YOLOv4-large и другими моделями
тренироваться
Сделать набор данных
Анализ кода ScaledYoloV4 показал, что набор данных ScaledYoloV4 такой же, как у YoloV5. Если вы использовали YoloV5, вы можете напрямую следовать методу YoloV5.
Конкретный код может относиться к моему предыдущему сообщению в блоге:
Набор данных COCO to YoloV5, подходящий для YoloV5, ScaledYoloV4
Ван Хао.blog.CSDN.net/article/decent…
Данные аннотации Win10 Labelme преобразуются в набор обучающих данных YOLOV5.
Ван Хао.blog.CSDN.net/article/decent…
В среде Win10 преобразуйте набор данных VOC в набор данных, используемый YOLOV5.
Ван Хао.blog.CSDN.net/article/decent…
Набор данных с аннотациями Labelme, выбранный в этом примере. Адрес набора данных:
download.CSDN.net/download/Хе-хе…
Поместите подготовленный набор данных в тот же каталог, что и ScaledYOLOv4-yolov4-large.
Скачать код и файлы весов
В этой Scaled всего три модели. В этой статье используется Yolov4-большой. Файл веса связан в файле Readme. Если вы тренируете свой собственный набор данных, его не нужно загружать.
Добавить функцию Миш
Есть два способа добавить функцию Mish.Если вам нужно использовать предварительно обученную модель, вы можете использовать только метод, представленный в файле Readme.У этого метода есть проблема, когда я использую его в среде Win10, и я использую свой собственный набор данных.Обучение модели, поэтому я использую другой способ добавления функции Миша в программу.
Откройте models/common.py, добавив следующий код:
class Mish(torch.nn.Module):
def __init__(self):
super().__init__()
def forward(self, x):
x = x * (torch.tanh(torch.nn.functional.softplus(x)))
return x
готов тренироваться
Добавьте voc.yaml в папку данных и напишите конфигурацию набора данных конфигурации.
# train and val datasets (image directory or *.txt file with image paths)
train: ../VOC/images/train/ # 118k images
val: ../voc/images/val/ # 5k images
test: ../voc/images/test/ # 20k images for submission to https://competitions.codalab.org/competitions/20794
# number of classes
nc: 2
# class names
names: ['aircraft', 'oiltank']
Затем откройте файл train.py и добавьте его в начало файла.
import os
os.environ['KMP_DUPLICATE_LIB_OK']='True'
Не забудьте положить его сверху.
Затем измените параметры
- установить веса на ""
parser.add_argument('--weights', type=str, default='', help='initial weights path')
- В кфг ставится профиль yolo4-p5 parser.add_argument('-cfg', type=str, default='models/yolov4-p5.yaml', help='model.yaml path')
- Настройте набор данных для voc.yaml, который мы только что добавили parser.add_argument('--data', type=str, default='data/voc.yaml', help='data.yaml path')
4、根据电脑的情况调节batch-size
parser.add_argument('--batch-size', type=int, default=2, help='total batch size for all GPUs')
改完上面的参数就可以运行。
После завершения тренировки вы можете увидеть результаты тренировки в прогонах.
контрольная работа
Откройте test.py и измените конфигурацию параметров.
parser.add_argument('--weights', nargs='+', type=str, default='runs/exp0/weights/best.pt', help='model.pt path(s)')
parser.add_argument('--data', type=str, default='data/voc.yaml', help='*.data path')
parser.add_argument('--batch-size', type=int, default=2, help='size of each image batch')
parser.add_argument('--img-size', type=int, default=640, help='inference size (pixels)')
parser.add_argument('--conf-thres', type=float, default=0.8, help='object confidence threshold')
parser.add_argument('--iou-thres', type=float, default=0.65, help='IOU threshold for NMS')
parser.add_argument('--task', default='test', help="'val', 'test', 'study'")
В соответствии с приведенной выше конфигурацией параметров вы можете протестировать.После завершения теста вы можете увидеть результаты теста.
Откройтеdetect.py, чтобы протестировать изображение, или вы можете открыть тест камеры, чего можно добиться, изменив параметры конфигурации.
1. Измените путь веса.
parser.add_argument('--weights', nargs='+', type=str, default='runs/exp9/weights/best.pt', help='model.pt path(s)')
2、修改source参数,这个参数支持单张图片,图片文件夹和摄像头三种,如果需要设置为为0就可以调用摄像头。设置为图片的路径就可测试单张的图片。
parser.add_argument('--source', type=str, default='inference/images', help='source') # file/folder, 0 for webcam
3、输出结果的存放位置。
parser.add_argument('--output', type=str, default='inference/output', help='output folder') # output folder
Вот некоторые результаты тестов:
Код отладки и адрес загрузки набора данных:download.CSDN.net/download/Хе-хе…
Ссылаться на: