Как увеличить скорость обнаружения объекта с помощью YOLO в C#. net - PullRequest
2 голосов
/ 07 января 2020

Я хочу определить регион номерного знака по YOLO V3. Для этой цели я использовал dar knet. После тренировки был создан файл веса. Размер этого файла составлял 234 МБ, и я использовал darknet53.conv.74 файл и 650 изображений для поезда.

Файл конфигурации (yolov3.cfg) равен

# Testing
# batch=64
# subdivisions=8
# Training
batch=64
subdivisions=64
width=608
height=608
channels=3
momentum=0.9
decay=0.0005
angle=0
saturation = 1.5
exposure = 1.5
hue=.1

learning_rate=0.001
burn_in=1000
max_batches = 4000
policy=steps
steps=3200,3600
scales=.1,.1
....

После этого я использовал Alturos.Yolo 2.6.2 NuGet в C#. NET

YoloWrapper yoloWrapper;
private void Form_Load(object sender, EventArgs e)
{
   yoloWrapper = new YoloWrapper("yolov3.cfg", "yolov3.weights", "voc.names");
}

private void btnDetect_Click(object sender, EventArgs e)
{
   var items = yoloWrapper.Detect(path);
   ...
}

Проблема в скорости. Обнаружение региона номерного знака занимает около 3 секунд.

Есть ли у вас какое-либо решение для увеличения скорости обнаружения?

CPU Usage Image

1 Ответ

2 голосов
/ 07 января 2020

Поскольку вы сами тренировались, я думаю, вы уже знаете, что нейронной сети нужен GPU для более быстрой работы. В любом случае, для более быстрого обнаружения вы должны либо уменьшить разрешение сети, либо использовать крошечный вариант YOLO. Сегодня здесь представлен самый сильный и быстрый вариант: yolo_v3_tiny_pan3.cfg . Другие самые последние модели Дар knet доступны здесь . Некоторые другие сети, такие как mobil enet, более оптимизированы для более быстрой работы на процессоре.

В любом случае, для этих альтернативных сетей требуется реализация AlexeyAB dar knet, поэтому вам придется перекомпилировать dar knet вашей c# оболочки.

...