《caffe学习之路》第七章:Ubuntu16.04 MobileNet_YOLOv3训练自己的数据集

MobileNet_YOLOv3有着速度快,mAP高的优势

 这是MobileNet_SSD,这个推理速度稍微快一点

 

在MobileNet_YOLOv3如何训练自己的数据

第一步、生成lmdb数据集

这一步在此就不用多说了,第六章有详细介绍:

https://blog.csdn.net/hunzhangzui9837/article/details/88319710

第二步、训练

1、搭建环境

主要是cuda、cudnn、opencv以及python相关的包的安装,详情参考:

https://blog.csdn.net/hunzhangzui9837/article/details/87939458

2、下载

git clone https://github.com/eric612/MobileNet-YOLO.git

3、编译

cd $MobileNet-YOLO_root/
mkdir build`
cd build
cmake ..
make -j4
make pycaffe

可以通过运行里面的demo,测试是否编译成功,如:

cd $MobileNet-YOLO_root/
sh demo_yolo.sh

4、训练准备

(1)找一个模型做训练,如train_yolov3.sh

打开可以看到,里面用的solver是:models/yolov3/mobilenet_yolov3_solver.prototxt

用的预训练模型是:mobilenet_iter_73000.caffemodel

(2)在根目录example里面建立一个文件(自己定义),里面用于保存自己的训练文件

里面包含如下文件:

其中,train_Mobilenet_YOLOv3.sh是train_yolov3.sh基础上改的,里面包含solver.prototxt(在mobilenet_yolov3_solver.prototxt基础上改的),以及预训练模型路径。如下:

#!/bin/sh
./build/tools/caffe train -solver="examples/YOLO_Helmet/solver.prototxt" \
-weights="models/MobileNet/mobilenet_iter_73000.caffemodel" \
--gpu 1 2>&1 | tee examples/YOLO_Helmet/YOLO_Helmet.log \

YOLO_Helmet.log为训练时输出的日志,便于查看哪一次训练的mAP更高;

我们一层一层的看,solver.prototxt里面的内容:

train_net: "examples/YOLO_Helmet/train.prototxt"
test_net: "examples/YOLO_Helmet/test.prototxt"
test_iter: 635
test_interval: 2000
base_lr: 0.0005
display: 10
max_iter: 120000
lr_policy: "multistep"
gamma: 0.5
weight_decay: 0.00005
snapshot: 2000
snapshot_prefix: "models/MobileNet/mobilenet_yolov3_deploy"
solver_mode: GPU
debug_info: false
snapshot_after_train: true
test_initialization: false
average_loss: 10
stepvalue: 25000
stepvalue: 50000
stepvalue: 75000
iter_size: 4
type: "RMSProp"
eval_type: "detection"
ap_version: "11point"
show_per_class_result: true

每行参数的意义我就不一一说明(自行百度),重点说一下三个路径:

train_net:存放train.prototxt(在mobilenet_yolov3_train.prototxt基础上改的)的路径;
test_net:存放test.prototxt(在mobilenet_yolov3_test.prototxt基础上改的)的路径;
snapshot_prefix:训练输出模型的路径,其中mobilenet_yolov3_deploy为模型名字;

我们一层一层的看,先看test.prototxt

找到上图的位置,修改三个地方:

(a)source路径(这里就是lmdb格式的测试集);

(b)batch_size的大小,这里的batch_size×solver.prototxt里面的test_iter>=测试集的数据,不然在训练时loss值可能不会下降,但是batch_size不能过大,否则GPU承受不了。
(c)label_map_file路径要修改

上图的num_output需要修改(有三处),具体大小参考官方说明:

比如我的分类只有5类(不包含background),所以这里设置为30

所以上图的num_classes设置为5

但是这儿需要设置为6(包含background)

我们一层一层的看,再看train.prototxt

这儿跟上面一样,修改就好了

这儿也跟上面一样,修改就好了

num_classes都设置为5(有三处)、

5、训练

cd $MobileNet-YOLO_root/
./examples/YOLO_Helmet/train_Mobilenet_YOLOv3.sh 

慢慢等待吧!

  • 0
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 25
    评论
评论 25
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值