.. | ||
obj2Yolov4dataset.py | ||
objs2Yolov4dataset.py | ||
README.md | ||
yolov4_min.cfg | ||
yolov4_min.data | ||
yolov4_objs2.cfg | ||
yolov4_objs2.data | ||
yolov4_test.cfg |
Инструкция для запуска
Должен быть установлен пакет BlenderProc
Создание датасета в формате YoloV4 для заданного объекта
Команда для запуска:
blenderproc run obj2Yolov4dataset.py [obj] [output_dir] [--imgs 1]
- obj: файл описания объекта *.obj
- output_dir: выходной каталог
- --imgs 1: количество изображений на выходе
Создание датасета в формате YoloV4 для серии заданных объектов в заданной сцене
Команда для запуска:
blenderproc run objs2Yolov4dataset.py [scene] [obj_path] [output_dir] [vhacd_path] [--imgs 1]
- scene: путь к файлу описания сцены (*.blend)
- obj_path: путь к каталогу с файлами описания детектируемых объектов *.obj
- output_dir: выходной каталог
- vhacd_path: каталог, в котором должен быть установлен или уже установлен vhacd (по умолчанию blenderproc_resources/vhacd)
- --imgs 1: количество серий рендеринга (по 15 изображений каждая) на выходе (например, если imgs=100, то будет получено 1500 изображений)
Файл описания сцены обязательно должен содержать плоскость (с именем 'floor'), на которую будут сэмплированы объекты для обнаружения.
Должен быть собран пакет darknet для работы на заданном ПО и оборудовании (CPU, GPU ...)
Обучение нейросети и получение файла с её весами
Команда для запуска:
darknet detector train [data] [cfg] [weight]
- data: файл с описанием датасета (*.data)
- cfg: файл с описанием нейросети
- weight: файл весов нейросети
Для обучения нужно загрузить файл с предобученными весами (162 MB): yolov4.conv.137
Для разного количества детектируемых объектов в выборке нужны свои файлы data и cfg.
Команда для обнаружения объектов нейросетью с обученными весами
- вариант 1 (в файле t.txt - список изображений):
darknet detector test yolov4_objs2.data yolov4_test.cfg yolov4_objs2_final.weights -dont_show -ext_output < t.txt > res.txt
- вариант 2 (файл 000015.jpg - тестовое изображение):
darknet detector test yolov4_objs2.data yolov4_test.cfg yolov4_objs2_final.weights -dont_show -ext_output 000015.jpg > res.txt
- вариант 3 (в файле t.txt - список изображений):
darknet detector test yolov4_objs2.data yolov4_test.cfg yolov4_objs2_final.weights -dont_show -ext_output -out res.json < t.txt
Файл res.txt после запуска варианта 2:
net.optimized_memory = 0
mini_batch = 1, batch = 1, time_steps = 1, train = 0
Create CUDA-stream - 0
Create cudnn-handle 0
nms_kind: greedynms (1), beta = 0.600000
nms_kind: greedynms (1), beta = 0.600000
nms_kind: greedynms (1), beta = 0.600000seen 64, trained: 768 K-images (12 Kilo-batches_64)
Detection layer: 139 - type = 28
Detection layer: 150 - type = 28
Detection layer: 161 - type = 28
000015.jpg: Predicted in 620.357000 milli-seconds. fork.001: 94% (left_x: 145 top_y: -0 width: 38 height: 18) asm_element_edge.001: 28% (left_x: 195 top_y: 320 width: 40 height: 61)
start_link.001: 87% (left_x: 197 top_y: 313 width: 39 height: 68)
doking_link.001: 99% (left_x: 290 top_y: 220 width: 32 height: 21)
start_link.001: 90% (left_x: 342 top_y: 198 width: 33 height: 34)
doking_link.001: 80% (left_x: 342 top_y: 198 width: 32 height: 34)
assemb_link.001: 100% (left_x: 426 top_y: 410 width: 45 height: 61)
Файл res.json после запуска варианта 3:
[
{
"frame_id":1,
"filename":"img_test/000001.jpg",
"objects": [
{"class_id":5, "name":"asm_element_edge.001", "relative_coordinates":{"center_x":0.498933, "center_y":0.502946, "width":0.083075, "height":0.073736}, "confidence":0.999638},
{"class_id":4, "name":"grip-tool.001", "relative_coordinates":{"center_x":0.858856, "center_y":0.031339, "width":0.043919, "height":0.064563}, "confidence":0.996551}
]
},
{
"frame_id":2,
"filename":"img_test/000002.jpg",
"objects": [
{"class_id":1, "name":"start_link.001", "relative_coordinates":{"center_x":0.926026, "center_y":0.728457, "width":0.104029, "height":0.132757}, "confidence":0.995811},
{"class_id":0, "name":"assemb_link.001", "relative_coordinates":{"center_x":0.280403, "center_y":0.129059, "width":0.029980, "height":0.025067}, "confidence":0.916782}
]
}