环境
caffe, Ubuntu16.04, python2.7
编译caffe
这里需要注意一点,读取数据用python读取图片,不用官方推荐的lmdb数据格式,这样更容易定位问题
定义类名为1
classifyInput
的python类文件:1
classify-input.py
1 | import caffe |
继承caffe.Layer,复写setup()方法和forward()方法,定义完后将文件放在1
path/caffe-master/python
文件夹下
添加环境变量
1 | export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64:/usr/local/lib:/xxx/software/anaconda2/lib/ |
制作数据
将数据标注成pascal voc的格式,再使用如下脚本随机切取目标
1 | import os |
每个目标在扩大20%的范围内随机裁剪3个正样本,三个负样本
cfg文件
定义配置文件,描述数据路径,训练的batch,类别数量,图片resize高宽
1 | batch_size:256 |
solver文件
1 | net: "light-classify-train.prototxt" |
模型文件
自定义的数据读取层如下:
1 | name: "YOLOV3-TINY" |
除了最后一层loss,剩下的和推理的一样
训练
1 | cd path/light_classify/cfg |
测试
python测试:
1 | cd path/light_classify |
TensorRT
使用docker,运行TensorRT-caffe项目