目标检测实战(八): 使用YOLOv7完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)

文章目录

一、目标检测介绍

目标检测(Object Detection)是计算机视觉领域的一项重要技术,旨在识别图像或视频中的特定目标并确定其位置。通过训练深度学习模型,如卷积神经网络(CNN),可以实现对各种目标的精确检测。常见的目标检测任务包括:人脸检测、行人检测、车辆检测等。目标检测在安防监控、自动驾驶、智能零售等领域具有广泛应用前景。

二、YOLOv7介绍

YOLOv7(You Only Look Once version 7)是YOLO系列目标检测算法的最新版本,以其高效的实时性能和出色的检测准确率而备受关注。YOLOv7在目标检测领域具有显著的创新点和优势,以下是对YOLOv7的一些关键介绍:

  1. 模型优化与技术发展:YOLOv7在模型结构、损失函数设计、正负样本匹配等方面进行了优化,以适应日益复杂的目标检测任务。

  2. 模型结构重参化:YOLOv7引入了模型结构重参化,通过优化网络中的不同层来提高模型性能,减少模型复杂度,提高推理速度,并提升检测精度。

  3. 动态标签分配策略:YOLOv7提出了一种新的动态标签分配策略,即coarse-to-fine策略,有效提高了模型的训练效果。

  4. ELAN高效网络架构:YOLOv7采用了名为ELAN的高效网络架构,专注于提高模型的推理速度和检测精度。

  5. 带辅助头的训练:YOLOv7采用了带辅助头的训练方法,通过在模型的不同阶段引入额外的监督信息,提高检测准确率。

  6. 技术原理:YOLOv7的技术原理基于深度学习和计算机视觉技术,包括输入处理、骨干网络、颈部网络和头部网络,其中每个部分都经过了精心设计和优化。

  7. 实际应用与前景展望:YOLOv7在自动驾驶、安防监控、智能家居等领域具有广泛的应用前景。

  8. 性能测试:YOLOv7在不同速度和精度的范围内超过了已知的检测器,特别是在GPU V100上进行测试时,展现了其卓越的性能。

  9. 模型缩放:YOLOv7为不同的GPU设计了不同版本的模型,包括边缘GPU、普通GPU和云GPU,并针对不同的服务需求进行了模型缩放。

  10. 实验与结论:YOLOv7在MS COCO数据集上进行了训练测试,证明了其在实时目标检测中的新标杆地位。

三、源码/论文获取

代码:https://github.com/WongKinYiu/yolov7

论文:https://arxiv.org/abs/2207.02696

四、环境搭建

python 复制代码
# (1)创建python环境
>conda create -n YOLOv8_My python=3.8.10
# (2)激活环境
>conda activate YOLOv8_My
# (3)安装ultralytics和pytorch
>pip install torch==1.13.1+cu116 torchvision==0.14.1+cu116 torchaudio==0.13.1 --extra-index-url https://download.pytorch.org/whl/cu116 -i https://pypi.tuna.tsinghua.edu.cn/simple/
>pip install ultralytics==8.1.3 -i https://pypi.tuna.tsinghua.edu.cn/simple
>pip install tensorboard -i https://pypi.tuna.tsinghua.edu.cn/simple/

4.1 环境检测

下载预训练模型:点击

然后命令行输入

python 复制代码
python detect.py --weights yolov7.pt

看到以下的图片就说明环境没问题。

五、数据集准备

这时候说明环境是没问题的了,我们可以准备数据集了,数据集的格式就是VOC格式中的Main里面的txt文件,图片的绝对路径。

直接将YOLO图片路径转成txt单文件:

python 复制代码
# From Mr. Dinosaur
 
import os
 
 
def listdir(path, list_name):  # 传入存储的list
    for file in os.listdir(path):
        file_path = os.path.join(path, file)
        if os.path.isdir(file_path):
            listdir(file_path, list_name)
        else:
            list_name.append(file_path)
 
 
list_name = []
path = r'E:/dataset/yolov5_dataset/steel_defect_datasets/images/train/'.replace("\\","/")  # 文件夹路径
listdir(path, list_name)
print(list_name)
 
with open(r'E:/dataset/yolov5_dataset/steel_defect_datasets/train.txt'.replace("\\","/"), 'w') as f:  # 要存入的txt
    write = ''
    for i in list_name:
        write = write + str(i) + '\n'
    f.write(write)

这时候我们可以看到Main文件下有train.txt和val.txt。

六、 模型训练

1.修改数据集配置文件:

2.修改模型配置文件

3.修改训练代码

4.命令行输入

python 复制代码
python train.py  

七、模型验证

修改test.py

然后在命令行运行:python test.py

八、模型测试

修改detect.py
然后在命令行运行:python detect.py

九、错误总结

9.1 错误1-numpy jas mp attribute int

numpy库如果安装最新的1.24.1,会发生module numpy has no attribute int 错误,这个错误我找了很久, 这个是因为numpy版本的原因,1.24以上的版本没有int了,改为inf了,换成1.23的版本就好了,或者把报错出的int改成inf就可以了,所以requirements.txt中的numpy库建议直接替换成numpy==1.23.0,这个就没有问题了。

9.2 错误2-测试代码未能跑出检测框

主函数加入

torch.backends.cudnn.enabled = False

9.3 错误3- Command 'git tag' returned non-zero

subprocess.CalledProcessError: Command 'git tag' returned non-zero exit status 128.
解决办法

改为绝对路径

python 复制代码
    parser.add_argument('--weights', type=str, default=r'F:\python\company_code\Object_detection\yolov7-main\yolov7.pt', help='initial weights path')

9.4 错误4-No loop matching the specified signature and casting was found for ufunc greater

临时解决方法:np.greater去掉dtype

相关推荐
神筆&『馬良』15 小时前
Foundation_pose在自己的物体上复现指南:实现任意物体6D位姿检测(利用realsense_D435i和iphone_16pro手机)
目标检测·ubuntu·机器人·视觉检测
工程师老罗17 小时前
基于Pytorch的YOLOv1 的网络结构代码
人工智能·pytorch·yolo
JarryStudy18 小时前
HCCL与PyTorch集成 hccl_comm.cpp DDP后端注册全流程
人工智能·pytorch·python·cann
Eloudy19 小时前
用 Python 直写 CUDA Kernel的技术,CuTile、TileLang、Triton 与 PyTorch 的深度融合实践
人工智能·pytorch
孤狼warrior21 小时前
YOLO目标检测 一千字解析yolo最初的摸样 模型下载,数据集构建及模型训练代码
人工智能·python·深度学习·算法·yolo·目标检测·目标跟踪
Rorsion21 小时前
PyTorch实现线性回归
人工智能·pytorch·线性回归
骇城迷影1 天前
Makemore 核心面试题大汇总
人工智能·pytorch·python·深度学习·线性回归
水中加点糖1 天前
小白都能看懂的——车牌检测与识别(最新版YOLO26快速入门)
人工智能·yolo·目标检测·计算机视觉·ai·车牌识别·lprnet
mailangduoduo1 天前
零基础教学连接远程服务器部署项目——VScode版本
服务器·pytorch·vscode·深度学习·ssh·gpu算力
多恩Stone1 天前
【3D AICG 系列-6】OmniPart 训练流程梳理
人工智能·pytorch·算法·3d·aigc