在Jetson TX1上用YOLO训练VOC2007

来源:互联网 发布:航测软件 编辑:程序博客网 时间:2024/06/05 03:02

在Jetson TX1 上训练darknet

本文介绍在Jetson TX1上用VOC2007数据集训练YOLO。

Reference:

YOLO主页

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=64subdivisions=8

其中batch是64,指的是64张图片后更新权重,subdivions是为了适应GPU有限的资源,在这里GPU每次只处理 8(64/8)张图片.所以是进行8个新的子batch后更新权重。

此时可以在根目录下运行./tegrastats产看内存和现存资源占用情况,可以看到占用在3339/3994左右,还不会崩~

0 0