树莓派+NCS+yolov3-tiny实现目标检测
前言
深度学习的优劣绝大部分取决于模型训练的好坏,这里作为一个小白,踩了许多坑,写此博客作为参考和笔记。希望能帮到自己和正在摸索的新人,如有侵权,勿忘告知!
目录
- 调参
- 训练模型
- 保存模型
- 模型转换
调参
3.3修改配置文件
i>修改.names文件:
// 只保留自己所需要识别的
a
b
c
ii>修改.date文件:
classes= 1
train = /home/pty/darknet/train/train.txt
valid = /home/pty/darknet/train/test.txt
names = /home/pty/darknet/voc.names
backup = /home/pty/darknet/backup //权重保存的位置
iii>修改cfg/yolov3-tiny.cfg文件:
找到文件中类似代码段(yolo层附件),共2处:
[convolutional]
size=1
stride=1
pad=1
filters=18
activation=linear
[yolo]
mask = 3,4,5
anchors = 10,14, 23,27, 37,58, 81,82, 135,169, 344,319
classes=3 //训练识别的类别数
num=6 //与anchors保持一致
jitter=.3
ignore_thresh = .7
truth_thresh = 1
random=0
需要改变filters为 3*(classes+5),原因为:https://github.com/pjreddie/darknet/issues/582,同时修改下面的classes的种类。
训练保存模型
//生成预训练模型
// An highlighted block
./darknet partial ./cfg/yolov3.cfg ./yolov3.weights ./yolov3.conv.74
//检测权重精度
// An highlighted block
./darknet detector map digger.data yolov3-tiny-signals.cfg backup/yolov3-tiny-signals_3000.weights
//darknet开始训练
// An highlighted block
sudo ./darknet detector train cfg/voc.data cfg/yolov3-tiny.cfg yolov3-tiny.conv.15
./darknet detector train /home/zxx/digger/digger.data /home/zxx/digger/digger.cfg /home/zxx/darknetyolov3-tiny.conv.15
//从中止处继续训练
// An highlighted block
./darknet detector train digger.data yolov3-tiny-signals.cfg backup/yolov3-tiny-signals_3000.weights
模型转换
- darknet(.weights .names)–>tf(.pb)
python3 convert_weights.py --class_names digger.names --weights_file yolov3-tiny-signals_4000.weights --tiny --data_format NHWC
python3 convert_weights_pb.py --class_names digger.names --weights_file yolov3-tiny-signals_4000.weights --tiny --data_format NHWC
- tf(.pb)–>IR(xml bin)
python3 mo_tf.py --input_model frozen_darknet_yolov3_model.pb --tensorflow_use_custom_operations_config yolo_v3_tiny.json --input_shape [1,416,416,3] --data_type
- FP16
##mo_tf.py yolo_v3.json
/opt/intel/openvino/deployment_tools/model_optimizer/mo_tf.py
/opt/intel/openvino/deployment_tools/model_optimizer/extensions/front/tf/yolo_v3.json
“”
//yolo_v3_tiny.json与训练时.cfg文件中保持一致
[
{
“id”: “TFYOLOV3”,
“match_kind”: “general”
“custom_attributes”: {
“classes”: 3,
“anchors”: [10,14, 23,27, 37,58, 81,82, 135,169, 344,319],
“coords”: 4,
“num”: 6,
“masks”: [0,1,2],
“entry_points”: [“detector/yolo-v3-tiny/Reshape”,“detector/yolo-v3-tiny/Reshape_4”]
}
}
]
“”
5 8619
15 2873
参考链接
darknet训练自己的模型
OpenVINO-YoloV3测试可行的例子
yolo模型转换IR链接地址
标准IR模型下载地址