谷歌colab训练自己的数据集YOLOv3
谷歌colab训练自己的数据集YOLOv3
自己电脑的GPU不支持cuda,所以尝试使用谷歌的Colabortory,免费提供GPU,最长运行时间12小时,因此一般需要挂载到谷歌云盘上,储存文件。
数据集
目标检测的数据集需要自己手动标注目标物体位置并对应生成xml文件表示目标框的位置,本文简单介绍windows系统下标注工具LabelImg的使用。
LabelImg下载链接:LabeIImg
下载好labelImg-master.zip后解压得到如下图所示。
shift+右击空白处打开powershell窗口
输入两个命令Pyrcc5 -o resources.py resources.qrc
python labelImg.py
可能会出现no module named libs.resources这样的错误,将resources.py拷贝到同级的libs目录下就可以解决了。再输入第二条命令就可以运行成功了。具体使用可以参考这篇windows下使用labelImg标注图像
本次采用的数据集是红细胞的检测,已经标注好的数据链接:已标注好的细胞数据连接,Annotations文件是已经标注好目标框的xml文件,JPEGImages是jpg图片文件。
colab使用
首先需要创建一个谷歌云盘账号,右键空白处->更多->Google Colabortory,相应目录下会生成一个.ipynb文件,下次使用可直接右键此文件以Google Colabortory方式打开。如果没有Googel Colabortory选项,点击关联更多应用添加。
首先训练自己的数据集需要挂载谷歌云盘,方便文件的传输。点击链接进去,复制代码到下面框中即可。
挂载成功如下图
下面介绍一些简单的文件操作:
设置GPU模式
安装Pytorch
colab自带的是tensorflow,因此需要自己从官网复制代码下载pytoch,如下图
配置文件
首先clone项目构建Darknet,输入以下命令
构建好后,右侧文件如下图:
上传并构建数据集
将刚才下载好的数据集上传到/darknet/data/目录下,在谷歌云盘中相应目录下空白处右击上传即可,修改数据集名字为yolov3。
点进Yolov3,创建imagesets空文件夹,imagesets存放图片路径。(忽略labels文件夹)
imagesets路径编写生成的txt文件内容如下,每张图片的完整路径。
分割数据集为训练集和测试集,分割后图片的名字存在imagesets下
imagesets下的文件
从xml文件中提取目标框坐标,并存入JPEGImages图片文件夹里,并在yolov3文件夹里生成train.txt和test.txt,与上面生成的不一样,这里是图片的完整路径
生成的labels文件内容如下:
配置文件
在/darknet/data/目录下创建rbc.data和rbc.names文件,如下:
网络结构配置,将/darknet/cfg/目录下的yolov3.cf文件基础上改,可以将yolov3.cf文件复制重命名为yolov3_custom.cfg再存到cfg目录下。修改地方如下,如何修改可参考Yolov3 win10+vs17 运行及训练自己的数据集
开始训练
下载预训练权重
训练,第一行是防止Permission denied错误。这里注意前面构建数据的文件一定要放对路径,不然会报奇奇怪怪的错。训练产生的权重文件自动保存在/darknet/backup中
如中间因不明原因停止可以查看backup目录下最后一次权重是多少(比如yolov3_custom_700.weights),然后运行如下代码就可以了。
用训练出来的权重测试
修改yolov3_custom.cfg为测试模式
随便找一张细胞图片放入/darknet/data文件下(BloodImages_00001.jpg),然后输入下列代码。
得到下列结果,可以看到预测到几个目标:
显示图片
显示预测结果