YOLOv3测试

  昨天配置了YOLOv3的环境,今天用官方文档内的coco128数据集跑一下:

  本次YOLOv3的使用基本上跟调用api一样,就是把数据集格式处理好后使用大佬们写好的py文件,本人实力有限,实在是看不太懂源码。

 

 

   YOLOv3运行所使用的数据集是有严格的格式要求的,具体可以参考官方文档(有其他版本的YOLOv3实现,这里仅展示我使用的ultralytics/yolov3):

 

 

   以这张图为例,对应图片的txt文件内要有五个参数:类数(从0开始计,第一类为0,第二类为1...),X_center,Y_center(图片中心的XY坐标),Width,Height(宽高)。

  附上coco128的数据集格式对比:

首先是coco128目录下,images和labels子文件夹,一个存放图片,一个存放标签

 

 

 两个文件夹下存放的.jpg文件和.txt文件名字要对应

 

 

 txt文件内就是刚才说的格式:

 

  明白数据集结构之后,再回到代码中:

 

 

 这三个文件是我们需要使用的,train.py是训练,test.py是测试,detect.py是用模型预测。图中没有画框的yolov3.pt就是我们训练后的模型文件,这个是官方源码中自带的,我们训练后的模型文件并不在这儿。

 

 

 这个地方改成自己的yaml文件(原来是coco.yaml)

首次运行可能会给你报错:

OMP: Error #15: Initializing libiomp5md.dll, but found libiomp5md.dll already initialized.

这个时候在train.py开头加上这句:

 

 官方文档中给的运行示例都是用命令行实现的,我这里也不用pycharm跑了,打开Anaconda Powershell Prompt:

切换到这个项目的目录下之后,运行代码:

python train.py --img 640 --batch 16 --epochs 5 --data coco128.yaml --weights yolov3.pt

 

 这里报错,大致意思就是我的显存不够(6G),带不动,现在还没租服务器,也没法换电脑,那就改运行参数:

python train.py --img 320 --batch 8 --epochs 5 --data coco128.yaml --weights yolov3.pt

img和batch各砍掉一半:

 

 运行成功,最后这段告诉了我们模型存储的位置:runs\train\exp4\weights\,存了last.pt和best.pt,runs文件在yolov3这个项目里,exp4是因为我之前已经训练了三次模型:

 

 我们从网上下载一个图,使用训练好的模型做一下预测吧,coco128数据集有80个类,我们选择“斑马”类来预测一下:

python detect.py --source data/images --weights yolov3.pt --conf 0.25

source后写下图片地址,weights后写使用模型的地址,这里注意模型地址是相对地址,它以yolov3这个项目的地址为起点,所以直接从runs开始写,conf设置权重

 

 运行后的结果:

 

 图像:

 

   以上就是YOLOv3的coco128数据集测试。

posted @ 2021-04-26 19:24  千幽行  阅读(573)  评论(0编辑  收藏  举报