1. 源码下载
去哪里下?怎么下?怎么打开?
- 去哪里下
yolov5的源码放在Github上,Github可能存在打不开的情况,因此有个国内版的,叫Gitee。
在Github上搜索栏里搜索“yolov5”,出现的第一条就是官方源码仓库 - 怎么下
首先选择版本信息 - 再点击下载
- 怎么打开
打开第一步下载好的IDE打开文件即可,我打开的pycharm。
2. yolov5的README.md解读
我将.md格式的文件转为pdf,在pad上用MarginNote3上进行标注,导入的pdf格式上有些出入。
我进行标注的文件上传到了我的资源中,或是查看我的参考链接:目标检测 YOLOv5 开源代码项目调试与讲解实战【土堆 x 布尔艺数】
3. 进行预测
在pycharm找到"detect.py"文件,并打开。
3.1 检测或修改解释器
选择好在环境配置过程中利用Anaconda配置好的环境
3.2 环境和依赖的安装
在运行"detect.py"文件之前,先找到一个"requirement.txt"的文件,这个文件介绍了所需要的库以及库的版本,在pycharm的终端上输入就可以完成对所需库的安装。
pip install -r pip install -r yolov5-master/requirements.txt
3.3 其他问题的解决
报错 | 解决 |
Downloading https://github.com/ultralytics/yolov5/releases/download/v6.0/yolov5s.pt to yolov5s.pt…之后出现一大堆报错 | 在官方下载”yolo5s.pt"放入yolov5-master文件夹下 |
Can’t get attribute ‘SPPF’ on <module ‘models.common’ from… | AttributeError: Cant get attribute SPPF on module models.common from e:\pyWorkSpace\yolov5 |
UserWarning: torch.meshgrid: in an upcoming release,… | 感觉是由于pytorch版本的问题,未解决 |
4.detect.py中opt模型主要参数解析
def parse_opt():
parser = argparse.ArgumentParser()
"""
'--weights'# 初始化的权重文件的路径地址
'--source' # 测试数据,可以是图片/视频路径,也可以是'0'(电脑自带摄像头),也可以是rtsp等视频流
'--imgsz', '--img', '--img-size' # 网络输入图片大小。在处理过程中的图像尺寸,不同权重参数推荐的也不同,以“6”为结尾的权重推荐设置为1280
'--conf-thres' # 置信度阈值,越大标注框越少
'--iou-thres' # 交并比阈值,越大所得的重叠框越多
'--max-det' # 一张图片中最多的检测个数
'--device' # 所用设备,如CPU或GPU,程序为自动选择
->'--view-img' # 是否展示预测之后的图片/视频,默认False
->'--save-txt' # 是否将预测的框坐标以txt文件形式保存,默认False
->'--save-conf' # 是否保存置信度值在--save-txt文件夹中
->'--save-crop' # 是否保存裁剪的预测框,默认False
->'--nosave' # 是否不保存预测结果,默认False,即默认是将预测结果保存的
'--classes' # 设置只保留某一部分类别,形如0或者0 2 3
->'--agnostic-nms' # 进行nms是否也去除不同类别之间的框,默认False
->'--augment' # 推理的时候进行多尺度,翻转等操作(TTA)推理
->'--visualize' # 可视化特征,默认False
->'--update' # 如果为True,则对所有模型进行strip_optimizer操作,去除pt文件中的优化器等信息,默认为False
'--project' # 预测结果的存储路径,默认在runs/detect目录下
'--name' # 预测结果的存储路径下的文件夹名,默认exp
->'--exist-ok' # 若设置该参数,则在相同文件夹下生成文件
'--line-thickness' # 标注狂的厚度
'--hide-labels' # 隐藏标签
'--hide-conf' # 隐藏置信度
->'--half' # use FP16 half-precision inference
->'--dnn' # use OpenCV DNN for ONNX inference
"""
opt = parser.parse_args()
opt.imgsz *= 2 if len(opt.imgsz) == 1 else 1 # expand
print_args(FILE.stem, opt)
return opt
在上方代码中,参数前面标注"->“代表的需要标注的参数,具体实现方式为:点击右上角”detect”,编辑配置,在图片圈出的Parameters添加参数
- 检测视频类型
- 在data文件夹下新建一个video文件夹;
- 将视频数据放入该文件夹;
- 在“detect.py的第207行,修改default里的内容,修改为:
parser.add_argument('--source', type=str, default=ROOT / 'data/video', help='file/dir/URL/glob, 0 for webcam')
- 只显示person类型
- detect.py第218行添加参数”–classes",即可指定需要显示的类型:
parser.add_argument('--classes', nargs='+', type=int, help='filter by class: --classes 0, or --classes 0 2 3')
- 找到person指定的类别,在data文件夹下,查看了几个.yaml文件,发现person都被安排在第一个,我就用0试了一下;
- 点击右上角的“detect",Edit Configuration,在Parameters中输入”–classes 0"
参考链接
目标检测 YOLOv5 开源代码项目调试与讲解实战【土堆 x 布尔艺数】