这篇博客记录了我运行YOLO V3代码的过程。由于这是在成功运行一段时间后编写的,因此每一步并不特别详细,具体的步骤可以搜索其他博客。此篇博客主要记录了成功运行所需的一些关键步骤
目录
YOLO V3代码
github链接:
GitHub - eriklindernoren/PyTorch-YOLOv3: Minimal PyTorch implementation of YOLOv3
将项目在本地打开后,点击README文件,按照步骤进行:
安装代码的依赖环境
首先为项目创建一个新的环境,其次安装requirement.txt
pip install -r requirements.txt
这是我目前的环境(pytorch) 以及pip list(部分展示):
由于我并没有新建环境,一些库在本项目中并不需要,建议大家直接新建环境安装requirement.txt
下载预训练参数
在pycharm中点击weights/download_weights.sh
这里有两种下载方法
1.wget 下载
windows的安装参考这篇博客:wget 的安装与使用(Windows)_wget windows-CSDN博客
2.直接点击网页进行下载
这里推荐打开百度网盘,点击“离线下载”,粘贴链接
选用百度网盘下载一方面是速度快,一方面是比较稳定。我是之前在网页上直接下载,经常因为网络问题而中断,建议大家后续的数据集也采用网盘下载,再从网盘中下载到本地
下载完成后,我们的weight路径下应该有这几个文件
下载COCO数据集
这里按照README提示,进入data路径下点击get_coco_datasets.sh文件
第一步 在coco路径下新建文件夹images并进入该目录data/coco/images
第二步 下载train2014.zip与val2014.zip文件,这里有个要注意的地方,我按照这个路径下载的压缩包告诉我train2014.zip有损坏,目前我不太清楚是当时网页下载的网络问题还是这个压缩包本身损坏,建议大家去官网找到train、val数据集并在百度网盘进行下载(这也是我后来的解决方法)
第三步 解压下载的训练集数据集
第四步 返回目录data/coco
第五步 下载图中四个文件,其中instance_train_val2014.zip与labels.tgz都是压缩包,进行解压
.tgz的解压可以参考其他教程,这里我直接将后缀改为.zip再进行解压,应该是可以的,程序正常运行
第六步 在data/coco使用git bash
git bash中的粘贴不支持ctrlV,可以右键点击Paste进行粘贴,依次输入
paste <(awk "{print \"$PWD\"}" <5k.part) 5k.part | tr -d '\t' > 5k.txt
paste <(awk "{print \"$PWD\"}" <trainvalno5k.part) trainvalno5k.part | tr -d '\t' > trainvalno5k.txt
此时我们的data/coco路径下会生成两个txt文件
但是我们需要将这两个文件中的路径稍加修改
5k.txt与trainvalno5k.txt均需要修改,代码如下
import os
# 读取存放图像路径的文本文件
with open(r"D:\Users\TAELLL-\大三下合集\CV\Practice_14_YOLOv3Detector\data\coco\5k_new.txt", 'r') as file:
paths = file.readlines()
print(paths)
new_paths = []
for path in paths:
# 去除行尾的换行符,然后修改路径前缀
new_path = path.replace("/d", "D:")
new_paths.append(new_path)
print(new_path)
# 将新路径写入新的文本文件
with open(r'D:\Users\TAELLL-\大三下合集\CV\Practice_14_YOLOv3Detector\data\coco\5k_new.txt', 'w') as file:
for new_path in new_paths:
file.write(new_path)
此时我们的配置都大功告成啦,接下来可以测试啦[撒花][撒花]
运行train.py
如果以上都配置正确,那么应该可以正常运行train.py/test.py/detect.py文件了
如果报错在我们配置的数据集中缺少XX图片,很有可能是下载的数据损坏,需要重新下载
受算力限制,在这里我只是简单train了二十分钟就中断训练了
运行test.py
可以看到我们的多分类任务最终mAP为0.515
运行detect.py
在我们的data/samples下,代码提供了我们几个样本
detect.py运行结束后,会将结果放在output文件夹下,点击output/dog.png,显示如下,可以看到模型已经将我们的samples全部标注好了
对于每一张samples图片,模型输出其labels与置信度
接下来我们随机选择一张图片进行测试,这里我依旧上传一张狗狗的图片
运行detect.py后
预测为狗,置信度0.976