yolov3

爱笑的加油怪

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

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

img

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

img

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

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

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

img

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

img

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

img

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

img

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

img

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

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

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

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

img

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

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

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

img

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

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

img和batch各砍掉一半:

img

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

img

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

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

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

img

运行后的结果:

img

图像:

img

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

原文地址:https://www.cnblogs.com/2506236179zhw/p/14706917.html