目标监测yolov3
yolov4 https://github.com/AlexeyAB/darknet
Yolov3 训练脚本bin/ITRI_ADAT/darknet at master · jklhj222/bin
yolo golang lib
https://github.com/wattanakorn495/go-yolo-webrtc
https://github.com/PengyiZhang/SlimYOLOv3
YoloV3 教程 - 知乎
golang darknet
YOLOv3: 训练自己的数据 - 微风❤水墨 - CSDN博客
深度学习笔记(四)---YOLO目标检测 - 一一
关于yolov3的网络结构理解 - weixin_40003920的博客
darknet-yolov3训练自己的数据集(超详细)voc转yolo格式 - AnswerThe - 博客园
重新训练
./darknet detector train cfg/voc.data cfg/yolov3-voc.cfg darknet53.conv.74 -gpus 0,1
继续训练
./darknet detector train cfg/voc.data cfg/yolov3-voc.cfg backup/yolov3-voc.backup -gpus 0,1
1538 ./darknet detector valid cfg/voc.data cfg/yolov3-voc.cfg cfg/yolov3-voc_1226.weights
1548 ./darknet detector recall cfg/voc.data cfg/yolov3-voc.cfg cfg/yolov3-voc_1226.weights
1662 cd work_wpj
1663 cd darknet/
1664 cd cfg
1665 ll
1666 vi yolov3-voc.cfg
1667 cd ..
1668 ./darknet detector valid cfg/voc.data cfg/yolov3-voc.cfg cfg/yolov3-voc.weights
1669 ./darknet detector valid cfg/voc.data cfg/yolov3-voc.cfg cfg/yolov3-voc_1226.weights
1670 cd work_wpj
1671 ./darknet classifier valid cfg/voc.data cfg/yolov3-voc.cfg cfg/yolov3-voc.weights
1672 cd darknet/
1673 ./darknet classifier valid cfg/voc.data cfg/yolov3-voc.cfg cfg/yolov3-voc.weights
1674 cd cfg/
1675 ll
1676 ./darknet classifier valid cfg/voc.data cfg/yolov3-voc.cfg cfg/yolov3-voc_1226.weights
1677 cd ..
1678 ./darknet classifier valid cfg/voc.data cfg/yolov3-voc.cfg cfg/yolov3-voc_1226.weights
1679 cd data/
1771 ./darknet detector train cfg/voc.data cfg/yolov3-voc.cfg darknet53.conv.74 -gpus 0,1
1772 python voc_label.py
1773 cd /usr/local/cuda/lib64/
1774 ll
1775 cd /etc
1776 ll
1777 cd ld.so.conf.d/
1778 ll
1779 vi cuda.conf
1780 ll
1781 sudo cuda.conf
1782 sudo gedit cuda.conf
1783 ll
1784 sudo ldconfig
1785 sudo ln -sf /usr/local/lib/libcudnn.so.7.1.3 /usr/local/lib/libcudnn.so.7
1786 sudo ldconfig
1787 sudo ./darknet detector train cfg/voc.data cfg/yolov3-voc.cfg darknet53.conv.74 -gpus 0,1
1788 nvcc --version
1789 sudo ./darknet detector train cfg/voc.data cfg/yolov3-voc.cfg darknet53.conv.74 -gpus 0,1
1790 nvidia-smi
1791 sudo ./darknet detector train cfg/voc.data cfg/yolov3-voc.cfg darknet53.conv.74
1792 nvidia-smi
1793 sudo ./darknet detector train cfg/voc.data cfg/yolov3-voc.cfg darknet53.conv.74
1794 nvidia-smi
1795 sudo ./darknet detector train cfg/voc.data cfg/yolov3-voc.cfg darknet53.conv.74
1796 nvidia-smi
训练
10.开始训练
./darknet detector train cfg/voc.data cfg/yolov3-voc.cfg scripts/darknet53.conv.74 -gpus 0,1
#注意文件路径
11.测试识别。训练后会在backup文件夹下生成权重文件,利用生成的权重文件进行测试
./darknet detector test cfg/voc.data cfg/yolov3-voc.cfg backup/yolov3-voc_600.weights data/210.jpg
./darknet detect cfg/yolov3.cfg yolov3.weights data/dog.jpg #默认使用第1块GPU
./darknet detect cfg/yolov3.cfg yolov3.weights -i 1 data/dog.jpg # -i 1:使用第2块GPU
./darknet -nogpu detect cfg/yolov3.cfg yolov3.weights data/dog.jpg #-nogpu:不使用GPU
使用yolov3-tiny 检测
./darknet detect cfg/yolov3-tiny.cfg weights/yolov3-tiny.weights data/dog.jpg
模型对应关系
- TF之YOLO:将weights文件转换为tensorflow需要的h5文件的几种分类
解决问题
将weights文件转换为tensorflow需要的h5文件的几种分类python yad2k.py tiny-yolo-5clesses.cfg tiny-yolo-5clesses_100.weights model_data/tiny-yolo-5cl.h5
- 由于想把yolo生成的模型移植到android手机上,所以需要将生成的权重文件转化为.pb格式
生成.pb文件
将darknet中你用到的cfg和生成的.weights文件拷贝到darkflow的根目录,然后输入一下命令
flow --model (你用到的).cfg --load (你生成的).weights --savepb
2.2 安装步骤
【(1) 获取图像检测训练模型
git clone https://github.com/pjreddie/darknet
【(3) 修改Makefile文件 GPU参数配置】】
# 使用GPU,设为1
GPU=1
# 启用CUDNN,设为1
CUDNN=1
【(4) 编译】
make
make clean(清除编译)
(5) 获取训练模型权重】
weights 下载
#!/bin/bash
# make '/weights' directory if it does not exist and cd into it
mkdir -p weights && cd weights
# copy darknet weight files, continue '-c' if partially downloaded
wget -c https://pjreddie.com/media/files/yolov3.weights
wget -c https://pjreddie.com/media/files/yolov3-tiny.weights
wget -c https://pjreddie.com/media/files/yolov3-spp.weights
# yolov3 pytorch weights
# download from Google Drive: https://drive.google.com/drive/folders/1uxgUBemJVw9wZsdpboYbzUN4bcRhsuAI
# darknet53 weights (first 75 layers only)
wget -c https://pjreddie.com/media/files/darknet53.conv.74
# yolov3-tiny weights from darknet (first 16 layers only)
# ./darknet partial cfg/yolov3-tiny.cfg yolov3-tiny.weights yolov3-tiny.conv.15 15
# mv yolov3-tiny.conv.15 ../
#wget https://pjreddie.com/media/files/darknet19_448.conv.23
#wget https://www.dropbox.com/s/yvca2um3dketvxi/first-test-core-yolo-obj_20000.weights?dl=0
./darknet detector demo cfg/coco.data cfg/yolov2.cfg yolov2.weights
训练到一定程度需要测试效果时,可以终止一下训练(ctrl+c),此时在backup文件夹下有好多训练权重(.weight)文件。用其检测样本的代码如下:
./darknet detector test cfg/voc.data cfg/yolov3-voc.cfg backup/yolov3-voc_600.weights data/210.jpg
注 :我这里是yolov3-voc_600.weights文件,根据实际文件名修改
1
检测完继续训练则用如下代码:
./darknet detector train cfg/voc.data cfg/yolov3-voc.cfg scripts/yolov3-voc_600.weights
这里注意要把yolov3-voc_600.weights文件放在darknet文件夹下
在终端里,直接运行时Yolo的Darknet的各项命令,
darknet/cfg/coco.data文件,使用原件:
=======================================coco.data=====================================================
classes= 80
train = /home/pjreddie/data/coco/trainvalno5k.txt
valid = coco_testdev
#valid = data/coco_val_5k.list
names = data/coco.names
backup = /home/pjreddie/backup/
eval=coco
(1)检测一张图片
wp@wp-MS-7519:~/darknet$ ./darknet detect cfg/yolov3.cfg wp_data/yolov3.weights data/dog.jpg
出现问题:
./darknet detector test cfg/yolov3.cfg wp_data/yolov3.weights data/dog.jpg报错names: Using default 'data/names.list'。。。Couldn't open file: data/names.list
./darknet detect cfg/yolov3.cfg yolov3.weights data/dog.jpg 没有结果出来。
(2)检测一段视频
接好usb后,直接运行usb视频检测
./darknet detector demo /home/wp/darknet/cfg/coco.data /home/wp/darknet/cfg/yolov3.cfg /home/wp/darknet/weights/yolov3.weights
说明:在CPU下,运行的特别卡。"直接接USB,然后执行:./darknet detector demo cfg/coco.data cfg/yolov3.cfg yolov3.weights就可以了啊,
官网https://pjreddie.com/darknet/yolo/说的很详细的。"
YOLO V3常用命令总结
参考@http://www.cnblogs.com/pprp/p/9525508.html
(1)在GPU下训练自己的模型
1.1 单GPU训练:./darknet -i <gpu_id> detector train <data_cfg> <train_cfg> <weights>
$ ./darknet detector train cfg/voc.data cfg/yolov3-voc.cfg darknet53.conv.74
1.2 多GPU训练,格式为0,1,2,3:./darknet detector train <data_cfg> <model_cfg> <weights> -gpus <gpu_list>
$ ./darknet detector train cfg/voc.data cfg/yolov3-voc.cfg darknet53.conv.74 -gpus 0,1,2,3
(2)单张测试命令:
$ ./darknet detect cfg/yolov3.cfg yolov3.weights data/dog.jpg
添加阈值:阈值范围0~1,By default, YOLO only displays objects detected with a confidence of .25 or higher. You can change this by passing the -thresh (3)批量测试图片 $ ./darknet detector test cfg/voc.data cfg/yolov3-voc.cfg backup/yolov3-voc_20000.weights /home/learner/darknet/data/voc/2007_test.txt # 完整路径。 (4)生成预测结果: $ ./darknet detector valid cfg/voc.data cfg/yolov3-voc.cfg backup/yolov3-voc_20000.weights (5)官网的测试命令作为入口 @https://pjreddie.com/darknet/yolo/ 5.2 多张测试命令: 5.3 改变阈值 5.4 Real-Time Detection on a Webcam 本地视频检,直接输入视频:
$ ./darknet detect cfg/yolov3.cfg yolov3.weights data/dog.jpg -thresh 0官网的测试命令,只能单张测试,如果需要批量测试则yolov3-voc.cfg(cfg文件夹下)文件中batch和subdivisions两项必须为1,并修改detector.c文件中的相关地方,重新进行编译make clean,make。
开始批量测试:
接着在终端中,输入Image Path(所有的测试文件的路径,可以复制voc.data中valid后边的路径):
结果都保存在./data/out(detector.c中设定路径)文件夹下。
$ ./darknet detector valid yolov3-voc.cfg(cfg文件夹下)文件中batch和subdivisions两项必须为1。
结果生成在<data_cfg>的results指定的目录下以<out_file>开头的若干文件中,若<data_cfg>没有指定results,那么默认为<darknet_root>/results。
执行语句如下:在终端只返回用时,在./results/comp4_det_test_[类名].txt里保存测试结果
5.1 单张测试命令:
$ ./darknet detect cfg/yolov3.cfg yolov3.weights data/dog.jpg
./darknet 是执行当前文件下面已经编译好的darknet文件
detect 是命令 后面三个分别是参数: 网络模型 网络权重 需要检测的图片
命令“ ./darknet detect ”等同于“ ./darknet detector test ”,The detect command is shorthand for a more general version of the command. It is equivalent to the command:
$ ./darknet detector test cfg/coco.data cfg/yolov3.cfg yolov3.weights data/dog.jpg
$ ./darknet detect cfg/yolov3.cfg yolov3.weights
Enter Image Path: data/dog1.jpg
Enter Image Path: data/dog2.jpg
YOLO默认阈值0.25,可以自行设定:
$ ./darknet detect cfg/yolov3.cfg yolov3.weights data/dog.jpg -thresh 0
实时视频检,测需要Darknet with CUDA and OpenCV,-c
$ ./darknet detector demo cfg/coco.data cfg/yolov3.cfg yolov3.weights
$ ./darknet detector demo cfg/coco.data cfg/yolov3.cfg yolov3.weights