在Jetson TX1 上训练darknet
本文介绍在Jetson TX1上用VOC2007数据集训练YOLO。
Reference:
1 下载数据集
Pascal VOC 数据集是一个用来进行目标检测的数据集,官网链接pascal voc
从上面下载VOC2007 的数据集,解压后放到 /darknet/scripts
2 修改
scripts下的voc_label.py可以用来将voc数据集转换成yolo格式的数据集,对voc_label.py进行修改
sets=[('2007','train'),('2007','val')] //这里只用了VOC2007里的train和validation数据集
如果是自己的数据集,需要相应的修改成VOC格式,在进行修改,
可以参考这里YOLO(v1)用自己的数据集训练模型
做自己的VOC2007数据集
运行pyhon voc_label.py后可以发现/VOCdevkit/VOC2007 下多了一个labels文件夹。
修改YOLO 源码
然后修改/darknet/src/yolo.c中的源码
char *train_images="/home/ubuntu/darknet/scripts/2007_train.txt"
char *backup_directory= "/home/ubuntu/darknet/backup" //用来保存中间的权重
重新训练
make编译后,可以重新训练
./darknet yolo train cfg/tiny-yolo.cfg darknet.conv.weights
darknet.conv.weights 是卷积网络在分类网络上预训练的权重,在此基础上训练,
可以从这里下载darknet.conv.weights
下载后放到/darknet目录即可
在Jetson TX1 上训练时的技巧
由于TX1 只有4G的共用内存和显存,因此batch需要重新设置,更改tiny-yolo.cfg的配置
batch=64
subdivisions=8
其中batch是64,指的是64张图片后更新权重,subdivions是为了适应GPU有限的资源,在这里GPU每次只处理 8(64/8)张图片.所以是进行8个新的子batch后更新权重。
此时可以在根目录下运行./tegrastats产看内存和现存资源占用情况,可以看到占用在3339/3994左右,还不会崩~