[Обновление]: Это репо является кодом драйвера для моего исследования. Я только что закончил колледж и очень занят поиском исследований стажировки / стипендий, прежде чем в конечном итоге подавать заявку на получение магистра. У меня не будет времени, чтобы рассмотреть проблемы на данный момент. Спасибо.
Этот репозиторий содержит код для детектора объектов на основе Yolov3: постепенное улучшение, реализованный Pytorch. Кодекс основан на официальном кодексе Yolo V3, а также на порте Pytorch оригинального кода, Марвис. Одна из целей этого кода - улучшить оригинальный порт путем удаления избыточных частей кода (официальный код в основном является полностью взорванной библиотекой глубокого обучения и включает в себя такие вещи, как модели последовательности, которые не используются в YOLO). Я также старался сохранить код минимальным и документировать его так же, как и я.
Если вы хотите понять, как реализовать этот детектор с нуля, то вы можете пройти эту очень подробную учебную серию из 5 частей, которую я написал в Paperpace. Идеально подходит для тех, кто хочет переехать от начинающего к промежуточным навыкам питорха.
Внедрить Yolo V3 с нуля
На данный момент код содержит только модуль обнаружения, но вы должны ожидать обучающего модуля в ближайшее время. :)
Использование Pytorch 0,3 сломает детектор.
Клон и cd в каталог репо. Первое, что вам нужно сделать, это получить файл веса на этот раз, для v3 авторы поставили вес здесь только для Коко и место
Веса подают в ваш каталог репо. Или вы можете просто напечатать (если вы находитесь на Linux)
wget https://pjreddie.com/media/files/yolov3.weights
python detect.py --images imgs --det det
--images Flag определяет каталог для загрузки изображений или одного файла изображения (он выяснит его), и --det -это каталог для сохранения изображений. Другие настройки, такие как размер партии (с использованием флага --bs ), уверенность порога объекта может быть изменена флагами, с которыми можно посмотреть.
python detect.py -h
Вы можете изменить разрешения входного изображения на флаге --reso . Значение по умолчанию составляет 416. Какое бы вы ни выбрали значение, помнить, он должен быть кратным 32 и больше 32 . Странные вещи произойдут, если вы этого не сделаете. Вы были предупреждены.
python detect.py --images imgs --det det --reso 320
Для этого вы должны запустить файл, video_demo.py с флагом -video, указывающий видеофайл. Видеофайл должен быть в формате .avi, поскольку OpenCV принимает только OpenCV в качестве входного формата.
python video_demo.py --video video.avi
Настройки можно увидеть с флагом -h.
Чтобы ускорить вывод видео, вы можете попробовать использовать файл video_demo_half.py, который делает все вывод с 16-разрядными половинами поплавок вместо 32-разрядного плавания. Я не видел больших улучшений, но я приписываю это с более старой картой (Tesla K80, Kepler Arch). Если у вас есть одна из карт с быстрым поддержкой Float16, попробуйте, и, если возможно, сравните ее.
То же, что и видео модуль, но вам не нужно указывать видеофайл, так как подача будет взят с вашей камеры. Чтобы быть точным, подача будет взят из того, что OpenCV, распознает как камеру 0. Разрешение изображения по умолчанию составляет 160 здесь, хотя вы можете изменить его с помощью флага reso .
python cam_demo.py
Вы можете легко настроить код для использования разных карьеров, доступных на веб -сайте Yolo
Примечание. Функции Scales были отключены для лучшего рефакторинга.
YOLO V3 производит обнаружения в разных масштабах, каждый из которых депутат в обнаружении объектов разных размеров в зависимости от того, собирают ли они грубые особенности, тонкие функции или что -то между ними. Вы можете экспериментировать с этими масштабами на флаге --scales .
python detect.py --scales 1,3