当前位置: 首页 > news >正文

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

文章目录

  • 一、目标检测介绍
  • 二、YOLOv7介绍
  • 三、源码/论文获取
  • 四、环境搭建
    • 4.1 环境检测
  • 五、数据集准备
  • 六、 模型训练
  • 七、模型验证
  • 八、模型测试
  • 九、错误总结
    • 9.1 错误1-numpy jas mp attribute int
    • 9.2 错误2-测试代码未能跑出检测框
    • 9.3 错误3- Command 'git tag' returned non-zero
    • 9.4 错误4-No loop matching the specified signature and casting was found for ufunc greater

一、目标检测介绍

目标检测(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

四、环境搭建

# (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 detect.py --weights yolov7.pt

看到以下的图片就说明环境没问题。
在这里插入图片描述

五、数据集准备

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

在这里插入图片描述

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

# From Mr. Dinosaurimport osdef listdir(path, list_name):  # 传入存储的listfor 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:  # 要存入的txtwrite = ''for i in list_name:write = write + str(i) + '\n'f.write(write)

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

六、 模型训练

1.修改数据集配置文件:
在这里插入图片描述

2.修改模型配置文件
在这里插入图片描述
3.修改训练代码
在这里插入图片描述
4.命令行输入

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.
解决办法
改为绝对路径

    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

相关文章:

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

文章目录 一、目标检测介绍二、YOLOv7介绍三、源码/论文获取四、环境搭建4.1 环境检测 五、数据集准备六、 模型训练七、模型验证八、模型测试九、错误总结9.1 错误1-numpy jas mp attribute int9.2 错误2-测试代码未能跑出检测框9.3 错误3- Command git tag returned non-zero…...

github中fasttext库README官文文档翻译

参考链接:fastText/python/README.md at main facebookresearch/fastText (github.com) fastText模块介绍 fastText 是一个用于高效学习单词表述和句子分类的库。在本文档中,我们将介绍如何在 python 中使用 fastText。 环境要求 fastText 可在现代 …...

WouoUIPagePC端实现

WouoUIPagePC端实现 WouoUIPage是一个与硬件平台无关,纯C语言的UI库(目前只能应用于128*64的单色OLED屏幕上,后期会改进,支持更多尺寸)。因此,我们可以在PC上实现它,本文就以在PC上使用 VScode…...

W801学习笔记十九:古诗学习应用——下

经过前两章的内容,背唐诗的功能基本可以使用了。然而,仅有一种模式未免显得过于单一。因此,在本章中对其进行扩展,增加几种不同的玩法,并且这几种玩法将采用完全不同的判断方式。 玩法一:三分钟限时挑战—…...

类加载器ClassLoad-jdk1.8

类加载器ClassLoad-jdk1.8 1. 类加载器的作用2. 类加载器的种类(JDK8)3. jvm内置类加载器如何搜索加载类--双亲委派模型4. 如何打破双亲委派模型--自定义类加载器5. 自定义一个类加载器5.1 为什么需要自定义类加载器5.2 自定义一个类加载器 6. java代码加…...

24年最新AI数字人简单混剪

24年最新AI数字人简单混剪 网盘自动获取 链接:https://pan.baidu.com/s/1lpzKPim76qettahxvxtjaQ?pwd0b8x 提取码:0b8x...

免备案香港主机会影响网站收录?

免备案香港主机会影响网站收录?前几天遇到一个做电子商务的朋友说到这个使用免备案香港主机的完整会不会影响网站的收录问题,这个问题也是站长关注较多的问题之一。小编查阅了百度官方规则说明,应该属于比较全面的。下面小编给大家介绍一下使用免备案香…...

低代码工业组态数字孪生平台

2024 两会热词「新质生产力」凭借其主要特征——高科技、高效能及高质量,引发各界关注。在探索构建新质生产力的重要议题中,数据要素被视为土地、劳动力、资本和技术之后的第五大生产要素。数据要素赋能新质生产力发展主要体现为:生产力由生产…...

代码随想录第三十八天(完全背包问题)|爬楼梯(第八期模拟笔试)|零钱兑换|完全平方数

爬楼梯(第八期模拟笔试) 该题也是昨天的完全背包排列问题,解法相同,将遍历顺序进行调换 import java.util.*; public class Main{public static void main (String[] args) {Scanner scnew Scanner(System.in);int nsc.nextInt(…...

idea常用知识点随记

idea常用知识点随记 1. 打开idea隐藏的commit窗口2. idea中拉取Git分支代码3. idea提示代码报错,项目编译没有报错4. idea中实体类自动生成序列号5. idea隐藏当前分支未commit代码6. idea拉取新建分支的方法 1. 打开idea隐藏的commit窗口 idea左上角File→Settings…...

(双指针) 有效三角形的个数 和为s的两个数字 三数之和 四数之和

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 文章目录 前言 一、有效三角形的个数(medium) 1.1、题目 1.2、讲解算法原理 1.3、编写代码 二、和为s的两个数字 2.1、题目 2.2、讲解算…...

力扣每日一题114:二叉树展开为链表

题目 中等 提示 给你二叉树的根结点 root ,请你将它展开为一个单链表: 展开后的单链表应该同样使用 TreeNode ,其中 right 子指针指向链表中下一个结点,而左子指针始终为 null 。展开后的单链表应该与二叉树 先序遍历 顺序相同…...

Linux系统下使用LVM扩展逻辑卷的步骤指南

Linux系统下使用LVM扩展逻辑卷的步骤指南 文章目录 Linux系统下使用LVM扩展逻辑卷的步骤指南前言一、逻辑卷管理(LVM)简介二、扩展逻辑卷步骤1. 检查当前的磁盘布局2. 创建新的分区3. 更新内核的分区表4. 初始化新的物理卷5. 将物理卷添加到卷组6. 调整逻…...

探索AI编程新纪元:从零开始的智能编程之旅

提示:Baidu Comate 智能编码助手是基于文心大模型,打造的新一代编码辅助工具 文章目录 前言AI编程概述:未来已来场景需求:从简单到复杂,无所不包体验步骤:我的AI编程初探试用感受:双刃剑下的深思…...

RustGUI学习(iced)之小部件(三):如何使用下拉列表pick_list?

前言 本专栏是学习Rust的GUI库iced的合集,将介绍iced涉及的各个小部件分别介绍,最后会汇总为一个总的程序。 iced是RustGUI中比较强大的一个,目前处于发展中(即版本可能会改变),本专栏基于版本0.12.1. 概述 这是本专栏的第三篇,主要讲述下拉列表pick_list部件的使用,会…...

【OceanBase诊断调优】—— Unit 迁移问题的排查方法

适用版本:V2.1.x、V2.2.x、V3.1.x、V3.2.x 本文主要介绍 OceanBase 数据集在副本迁移过程中遇到的问题的排查方法。 适用版本 V2.1.x、V2.2.x、V3.1.x、V3.2.x 手动调度迁移问题的排查 OceanBase 数据库的 RootService 模块负责 Unit 迁移的调度,如果…...

[极客大挑战 2019]PHP

1.通过目录扫描找到它的备份文件,这里的备份文件是它的源码。 2.源码当中涉及到的关键点就是魔术函数以及序列化与反序列化。 我们提交的select参数会被进行反序列化,我们要构造符合输出flag条件的序列化数据。 但是,这里要注意的就是我们提…...

数据结构之跳跃表

跳跃表 跳跃表(skiplist)是一种随机化的数据, 由 William Pugh 在论文《Skip lists: a probabilistic alternative to balanced trees》中提出, 跳跃表以有序的方式在层次化的链表中保存元素, 效率和平衡树媲美 —— …...

搜维尔科技:动作捕捉解决方案:销售、服务、培训和支持

动作捕捉解决方案:销售、服务、培训和支持 搜维尔科技:动作捕捉解决方案:销售、服务、培训和支持l...

数据库管理-第184期 23ai:干掉MongoDB的不一定是另一个JSON数据库(20240507)

数据库管理184期 2024-05-07 数据库管理-第184期 23ai:干掉MongoDB的不一定是另一个JSON数据库(20240507)1 JSON需求2 关系型表设计3 JSON关系型二元性视图3 查询视图总结 数据库管理-第184期 23ai:干掉MongoDB的不一定是另一个JSON数据库(20…...

CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型

CVPR 2025 | MIMO:支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题:MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者:Yanyuan Chen, Dexuan Xu, Yu Hu…...

Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例

使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件,常用于在两个集合之间进行数据转移,如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model:绑定右侧列表的值&…...

抖音增长新引擎:品融电商,一站式全案代运营领跑者

抖音增长新引擎:品融电商,一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中,品牌如何破浪前行?自建团队成本高、效果难控;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...

Python如何给视频添加音频和字幕

在Python中,给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加,包括必要的代码示例和详细解释。 环境准备 在开始之前,需要安装以下Python库:…...

浅谈不同二分算法的查找情况

二分算法原理比较简单,但是实际的算法模板却有很多,这一切都源于二分查找问题中的复杂情况和二分算法的边界处理,以下是博主对一些二分算法查找的情况分析。 需要说明的是,以下二分算法都是基于有序序列为升序有序的情况&#xf…...

vue3+vite项目中使用.env文件环境变量方法

vue3vite项目中使用.env文件环境变量方法 .env文件作用命名规则常用的配置项示例使用方法注意事项在vite.config.js文件中读取环境变量方法 .env文件作用 .env 文件用于定义环境变量,这些变量可以在项目中通过 import.meta.env 进行访问。Vite 会自动加载这些环境变…...

【Go语言基础【12】】指针:声明、取地址、解引用

文章目录 零、概述:指针 vs. 引用(类比其他语言)一、指针基础概念二、指针声明与初始化三、指针操作符1. &:取地址(拿到内存地址)2. *:解引用(拿到值) 四、空指针&am…...

【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的“no matching...“系列算法协商失败问题

【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的"no matching..."系列算法协商失败问题 摘要: 近期,在使用较新版本的OpenSSH客户端连接老旧SSH服务器时,会遇到 "no matching key exchange method found"​, "n…...

tomcat入门

1 tomcat 是什么 apache开发的web服务器可以为java web程序提供运行环境tomcat是一款高效,稳定,易于使用的web服务器tomcathttp服务器Servlet服务器 2 tomcat 目录介绍 -bin #存放tomcat的脚本 -conf #存放tomcat的配置文件 ---catalina.policy #to…...

手机平板能效生态设计指令EU 2023/1670标准解读

手机平板能效生态设计指令EU 2023/1670标准解读 以下是针对欧盟《手机和平板电脑生态设计法规》(EU) 2023/1670 的核心解读,综合法规核心要求、最新修正及企业合规要点: 一、法规背景与目标 生效与强制时间 发布于2023年8月31日(OJ公报&…...