Caffe学习(五)win10下配置vs2013版本的yolo+mobileNet训练自己的数据集
准备阶段
1、caffe-mobilenet-windows
2、数据集
3、python
caffe-yolo
关于Caffe-YOLOv3-Windows的安装配置请参考
https://blog.csdn.net/mqyw29995/article/details/105961674
数据集
1、工具下载
标定数据集可以使用labelme,具体下载可去GitHub上下在,安装按照上面提示进行。
2、数据标定
对数据进行标定后会生产相应的xml。
PS:由于这一步不是重点且教程很多所以不详细叙述
制作lmdb
这里说的txt是图片位置以及xml位置,这里需要打乱顺序。
可以直接写一个py脚本进行分类也可以用官方的脚本,这里是darknet下的scripts文件夹下的voc_label.py做修改(这里的darknet是yolov3的可参考yolov3配置文章)。
1、由于这个是直接调用的voc的所以我们这边可以套用voc的框架,首先生成两个文件,train.txt和val.txt
train.txt:记录你的训练集,val.txt记录你的验证集。
PS:这里生成可以自己用python或者c++写一个生成工具,红色框内对应的是xml的文件名(同时也是图片的位置),需要注意的是xml存在图片一定要存在。同时训练集和测试集的xml最好放同一个文件夹下,比较方便。
2、首先吧sets修改成只有两个数组,然后把classes修改成你对应的类别(我这边是只有一类所以选aeroplane,如果你标定的有两类,三类就加队对应的名称,这里需要和你xml标定的名称一样)
3、修改路径,这里的所有路径都需要改成你对应的图片已经xml和txt所在的路径,当然如果你不修改,也可以根据他的路径创造文件夹然后放下去。
特别注意:最后一个写入地址需要改成
修改最后两条os.system() (这里可以选择屏蔽,由于语句是Linux下语句,所以需要换成window下操作命令)
然后运行py就可以生成需要的两个文件
其中内容大致是这样的
3、生成lmdb
这里需要调用工程自带的 convert_annoset.exe
Caffe-YOLOv3-Windows-master\scripts\build\tools\Release\convert_annoset.exe --anno_type=detection --encode_type=jpg --encoded=true --shuffle=true --label_map_file=labelmap_voc.prototxt VOCdevkit\VOC2012\Germany\ VOCdevkit\2012_train.txt VOCdevkit\train_voc_lmdb
Caffe-YOLOv3-Windows-master\scripts\build\tools\Release\convert_annoset.exe --anno_type=detection --encode_type=jpg --encoded=true --shuffle=true --label_map_file=labelmap_voc.prototxt VOCdevkit\VOC2012\Germany\ VOCdevkit\2012_val.txt VOCdevkit_voc_lmdb
然后运行脚本,最后就可以生成lmdb文件了(注意正常大小说明生成成功,如果两个文件都只有8k说明失败)。
开始训练
1、模型位置在 Caffe-YOLOv3-Windows-master\models\yolov3\ 下
1、修改solver文件:
1、2两个net替换成你(修改过的)的net文件位置
2、修改test文件:
2.1、 修改成你对应的lmdb所在的目录
2.2、 修改你标签文件所在的目录下(这里的标签文件可以参考voc的标签文件格式改成自己的,即去掉多余的,加上自己的,background必须保留)。
2.3、修改数量
2.3.1、这里修改修改成你的类别数+1(例如,我是1类所以是2)
2.3.2、这里需要修改成(类别数+5)*3(例如,我只有一类就是(1+5)*3)
2.4、修改train文件
2.4.1、修改训练集所在位置,添加跟test一样的label位置
2.4.2、修改类别数,这里注意有几类就写几(不用像test一样 +1)
2.4.3、修改num_output:这里修改的方法跟test是一直的(其实值是一样的)
最后编写bat文件执行,开始训练
Caffe-YOLOv3-Windows-master\scripts\build\tools\Release\caffe.exe train -solver VOCdevkit/mobilenet_yolov3_lite_solver.prototxt
这里注意:由于我训练的没有预训练模型,所以不用加(预训练模型要跟你的网络模型一致才能用)。
等待训练完成。