YOLOV5 的安装与使用
预备环境:pytorch
第一步,从github上下载工程文件
因为版本会经常更新,所以还是从官方下载比较好,百度下很容易出现依赖与yolov5版本不一致,权重文件不匹配等问题(别问我是怎么知道的)。本文所有步骤需要的包都从可靠来源下载。
github网址
在搜索栏中搜索yolov5。
如果没有git,那么直接下载zip包即可。
如果嫌下载慢,可以把这个仓库克隆到码云,从码云上下载。这个方法百度一下有很多博客写道。百度一下:“github迁移码云”这类关键字即可。下载完后,解压到想要的路径。以下所说的工程路径就是这个解压后的文件夹。
第二步 下载依赖
在解压好的工程文件中,可以找到requirements.txt文件。在yolov5目录下打开命令行,或者在开始菜单打开命令行,通过 cd /d(如果想要跳转的目录分区和当前命令行运行分区相同则不用输入/d) yolov5工程路径进入指定路径 。
然后输入命令
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple,等待pip自动下载所需要的依赖。-i 参数是从清华镜像中下载依赖包,如果不加,则从国外源下载,不仅速度慢,还容易下载失败。
第三步 下载权重文件
在https://github.com/ultralytics/yolov5/releases中下载4个权重文件,放到工程路径下的weights文件夹中。
可以不全部下载,先下载最小的(容易下载成功)。等到以后要用的时候再想办法下载其他的权重文件。
第四步 测试detect.py
在工程文件在运行cmd。
然后输入python detect.py --source 0 --weights=“weights/yolov5s.pt” (如果设备有摄像头)
或者python detect.py --source=“data/images/bus.jpg” --weights=“weights/yolov5s.pt”(设备没有摄像头)
前者会打开摄像头并实时探测物品,后者将用工程自带的一张测试图片进行测试。运行结束后,会打印结果文件的位置。在这个位置中可以找到测试结果。
第五步 制作自己的数据集–下载LabelImg
任意位置运行cmd,然后 pip install LabelImg -i https://pypi.tuna.tsinghua.edu.cn/simple
下载安装完成后运行cmd,输入LabelImg,打开程序
第六步 制作自己的数据集–打标签
把准备好的图片放到一个文件夹中,在LabelImg中打开这个文件夹。然后设置标签文件输出位置(change save Dir)。不要放在与图片相同的位置就行。然后对每张图片画框打标签。按w键可以画框,画完框后,就会弹出对话框,然后在对话框上写上标签名就行(这步工作就是说明图片上这个位置是什么东西)。打完标签后,你就得到两个文件夹。图片和标签。在标签文件夹中,你还得到了一个classes.txt文件。这个文件记录了数据集中所有类别。标签文件中记录的是引索。需要通过这个classes.txt文件才能知道对应的物品名称。图片和标签两个文件夹中的文件一一对应,它们名字相同,后缀名不同。然后你需要把数据分为训练集和测试集,比例要适中。
此时,你拥有4个文件夹和一个class.txt文件。
- train图片
- train标签(与train 图片一一对应,名字相同,后缀不同)
- test图片
- test标签 (与test 图片一一对应,名字相同,后缀不同)
第七步 把自己的数据集转移到yolov5工程目录
在工程目录下找到data文件夹,在这个文件夹里新建一个文件夹。可以任意命名(为方便说明,这里用命名为mydataset。在mydataset下新建两个文件夹。一个命名为images,另一个命名为labels。这两个文件夹名字是规定的,不能随意。然后分别在这两个文件夹下都新建两个文件夹,命名为train,test。
然后把第六步得到的4个文件夹中的文件转移到对应目录中
- train图片->images/train
- train标签->labels/train
- test图片->images/test
- test标签->labels/test
第七步 调整配置文件
-
打开工程目录/models/yolov5s.yaml文件(如果训练的是其他模型则打开其他模型的yaml文件),然后把nc改为第六步中classes.txt中类别的数量。(你数据集中标签了多少样东西,这个数字就是几)
-
打开工程目录/data/coco128.yaml文件。
把train:设置为第六步的train图片的存放位置
把val:设置为第六步的test图片的存放位置
程序会自动搜索labels文件的位置。这也就是第六步为什么要规定图片与标签文件夹名字的原因。这个搜索是通过简单字符串替换实现的
把nc:改为数据集的类别数目(1中的一样)
把names改为类别名称,顺序要和第六步得到的classes.txt中的一样。 -
(可选)在train.py后面追加一句
strip_optimizer(best)
追加这一句可以使得得到的权重文件的大小与公布的一致,否则,会比较大。
第七步 训练权重
命令行切换到工程目录下。运行命令(运行之前确保修改的配置文件都保存好了)
python train.py --img 640 --data data/coco128.yaml --cfg models/yolov5s.yaml --weights weights/yolov5s.pt --batch-size 8 --epochs 50
这些参数根据实际情况进行调整。–cfg 指示用到的模型的配置文件的位置。–weights 指示对应模型权重文件的位置。
在开始训练前。会打印输出的位置。我们会得到训练指标,训练后的两个权重文件(一个是最佳权重,一个是最后一轮训练得到的权重)。
训练完成后,就可以去那个目录查看结果。
第八步 用训练得到的权重进行预测
与第四步一样,不同的是权重文件的位置变了
python detect.py --source 0 --weights=“weights/yolov5s.pt”。改一下权重路径就行。
=>python detect.py --source 0 --weights=“runs\train\exp3\weights\best.pt”
source 参数说明
如果是0,则打开摄像头
如果是图片路径,则对图片进行预测。结果路径会打印
如果是文件夹,则对文件夹中的图片和视频进行预测。
如果是视频,则对视频进行预测。