【yolov5改编系列之一】yolov5-6.0中detect.py检测单张图片,官方文档内容太多,看着眼花缭乱,我直接给它删掉一大堆。

本文主要是介绍【yolov5改编系列之一】yolov5-6.0中detect.py检测单张图片,官方文档内容太多,看着眼花缭乱,我直接给它删掉一大堆。,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

引言

各位同仁大家好,网上的资源众多但是感觉用起来有点麻烦,干脆自己整理一下。

yolov5官方的detect.py文件集成度比较高。一般情况下我们不需要同时实现这么多的功能,比如:检测图像、视频、摄像头等,包括支持pytorch、tensorflow等模型框架。

本节内容是基于yolov5-6.0的detect.py文件改写的。我相信也适用于相近的yolov5版本。

本节代码功能支撑:windows系统、pytorch模型框架、检测单张图像、基于python语言

使用方法:直接用本节代码替换detect.py文件或者在官方detect.py同级目录下新建一个py文件,配置好环境后直接运行。

代码文件.py
import cv2
import numpy as np
import torchfrom models.experimental import attempt_load
from utils.general import check_img_size, non_max_suppression, scale_coords
from utils.plots import Annotator, colors
from utils.augmentations import letterbox
from utils.torch_utils import select_deviceimg_size = 640
stride = 32
weights = 'yolov5s.pt'  # 模型权重文件路径
device = '0'  # 设置设备类型
image_path = 'data/images/zidane.jpg'  # 输入图像路径(也可以是绝对路径)
save_path = 'run1/11.jpg'  # 输出图像保存路径(也可以是绝对路径)
view_img = True  # 是否显示检测结果的图像窗口
half = Falsedevice = select_device(device)
half &= device.type != 'cpu'  # half precision only supported on CUDA# 导入模型
model = attempt_load(weights, map_location=device)  # 加载模型
img_size = check_img_size(img_size, s=stride)  # 检查图像尺寸是否符合规范
names = model.names  # 获取模型输出的类别名称(people、bus等)# Padded resize
img0 = cv2.imread(image_path)  # 读取输入图像
img = letterbox(img0, img_size, stride=stride, auto=True)[0]  # 对输入图像进行填充和调整大小# Convert
img = img.transpose((2, 0, 1))[::-1]  # 图像通道转换和颜色通道转换
img = np.ascontiguousarray(img)
img = torch.from_numpy(img).to(device)
img = img.float() / 255.0   # 归一化图像数据
img = img[None]     # [h w c] -> [1 h w c]# inference
pred = model(img)[0]  # 进行目标检测
pred = non_max_suppression(pred, conf_thres=0.25, iou_thres=0.45, max_det=1000)  # 非最大抑制,保留置信度最高的目标框# plot label
det = pred[0]
annotator = Annotator(img0, line_width=3, example=str(names))  # 创建绘制标签的对象
if len(det):det[:, :4] = scale_coords(img.shape[2:], det[:, :4], img0.shape).round()  # 将检测结果的坐标转换到原始图像坐标系中for *xyxy, conf, cls in reversed(det):  # 遍历每个目标框c = int(cls)  # 目标类别label = f'{names[c]} {conf:.2f}'  # 标签文字内容annotator.box_label(xyxy, label, color=colors(c, True))  # 绘制标签框和文字# write image
im0 = annotator.result()  # 获取带有标签的图像
cv2.imwrite(save_path, im0)  # 保存图像
if view_img:im0 = cv2.resize(im0, None, fx=0.5, fy=0.5, interpolation=cv2.INTER_CUBIC) # 按比例修改需要展示的图像大小cv2.imshow(str('image'), im0)  # 显示图像cv2.waitKey(1000)  # 等待按键(1000毫秒)
print(f'Inference {image_path} finish, save to {save_path}') # 打印图片来源和输出保存路径

请添加图片描述

结语

大家一起努力,一步一个脚印,加油!!!

参考资料

链接: YOLOv5的Tricks | 【Trick13】YOLOv5的detect.py脚本的解析与简化

这篇关于【yolov5改编系列之一】yolov5-6.0中detect.py检测单张图片,官方文档内容太多,看着眼花缭乱,我直接给它删掉一大堆。的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/373974

相关文章

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

python: 多模块(.py)中全局变量的导入

文章目录 global关键字可变类型和不可变类型数据的内存地址单模块(单个py文件)的全局变量示例总结 多模块(多个py文件)的全局变量from x import x导入全局变量示例 import x导入全局变量示例 总结 global关键字 global 的作用范围是模块(.py)级别: 当你在一个模块(文件)中使用 global 声明变量时,这个变量只在该模块的全局命名空

使用opencv优化图片(画面变清晰)

文章目录 需求影响照片清晰度的因素 实现降噪测试代码 锐化空间锐化Unsharp Masking频率域锐化对比测试 对比度增强常用算法对比测试 需求 对图像进行优化,使其看起来更清晰,同时保持尺寸不变,通常涉及到图像处理技术如锐化、降噪、对比度增强等 影响照片清晰度的因素 影响照片清晰度的因素有很多,主要可以从以下几个方面来分析 1. 拍摄设备 相机传感器:相机传

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖

活用c4d官方开发文档查询代码

当你问AI助手比如豆包,如何用python禁止掉xpresso标签时候,它会提示到 这时候要用到两个东西。https://developers.maxon.net/论坛搜索和开发文档 比如这里我就在官方找到正确的id描述 然后我就把参数标签换过来

科研绘图系列:R语言扩展物种堆积图(Extended Stacked Barplot)

介绍 R语言的扩展物种堆积图是一种数据可视化工具,它不仅展示了物种的堆积结果,还整合了不同样本分组之间的差异性分析结果。这种图形表示方法能够直观地比较不同物种在各个分组中的显著性差异,为研究者提供了一种有效的数据解读方式。 加载R包 knitr::opts_chunk$set(warning = F, message = F)library(tidyverse)library(phyl

烟火目标检测数据集 7800张 烟火检测 带标注 voc yolo

一个包含7800张带标注图像的数据集,专门用于烟火目标检测,是一个非常有价值的资源,尤其对于那些致力于公共安全、事件管理和烟花表演监控等领域的人士而言。下面是对此数据集的一个详细介绍: 数据集名称:烟火目标检测数据集 数据集规模: 图片数量:7800张类别:主要包含烟火类目标,可能还包括其他相关类别,如烟火发射装置、背景等。格式:图像文件通常为JPEG或PNG格式;标注文件可能为X

【生成模型系列(初级)】嵌入(Embedding)方程——自然语言处理的数学灵魂【通俗理解】

【通俗理解】嵌入(Embedding)方程——自然语言处理的数学灵魂 关键词提炼 #嵌入方程 #自然语言处理 #词向量 #机器学习 #神经网络 #向量空间模型 #Siri #Google翻译 #AlexNet 第一节:嵌入方程的类比与核心概念【尽可能通俗】 嵌入方程可以被看作是自然语言处理中的“翻译机”,它将文本中的单词或短语转换成计算机能够理解的数学形式,即向量。 正如翻译机将一种语言

计算机毕业设计 大学志愿填报系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点赞 👍 收藏 ⭐评论 📝 🍅 文末获取源码联系 👇🏻 精彩专栏推荐订阅 👇🏻 不然下次找不到哟~Java毕业设计项目~热门选题推荐《1000套》 目录 1.技术选型 2.开发工具 3.功能

基于 YOLOv5 的积水检测系统:打造高效智能的智慧城市应用

在城市发展中,积水问题日益严重,特别是在大雨过后,积水往往会影响交通甚至威胁人们的安全。通过现代计算机视觉技术,我们能够智能化地检测和识别积水区域,减少潜在危险。本文将介绍如何使用 YOLOv5 和 PyQt5 搭建一个积水检测系统,结合深度学习和直观的图形界面,为用户提供高效的解决方案。 源码地址: PyQt5+YoloV5 实现积水检测系统 预览: 项目背景