【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

相关文章

Python将博客内容html导出为Markdown格式

《Python将博客内容html导出为Markdown格式》Python将博客内容html导出为Markdown格式,通过博客url地址抓取文章,分析并提取出文章标题和内容,将内容构建成html,再转... 目录一、为什么要搞?二、准备如何搞?三、说搞咱就搞!抓取文章提取内容构建html转存markdown

Python FastAPI+Celery+RabbitMQ实现分布式图片水印处理系统

《PythonFastAPI+Celery+RabbitMQ实现分布式图片水印处理系统》这篇文章主要为大家详细介绍了PythonFastAPI如何结合Celery以及RabbitMQ实现简单的分布式... 实现思路FastAPI 服务器Celery 任务队列RabbitMQ 作为消息代理定时任务处理完整

使用C#代码在PDF文档中添加、删除和替换图片

《使用C#代码在PDF文档中添加、删除和替换图片》在当今数字化文档处理场景中,动态操作PDF文档中的图像已成为企业级应用开发的核心需求之一,本文将介绍如何在.NET平台使用C#代码在PDF文档中添加、... 目录引言用C#添加图片到PDF文档用C#删除PDF文档中的图片用C#替换PDF文档中的图片引言在当

详解C#如何提取PDF文档中的图片

《详解C#如何提取PDF文档中的图片》提取图片可以将这些图像资源进行单独保存,方便后续在不同的项目中使用,下面我们就来看看如何使用C#通过代码从PDF文档中提取图片吧... 当 PDF 文件中包含有价值的图片,如艺术画作、设计素材、报告图表等,提取图片可以将这些图像资源进行单独保存,方便后续在不同的项目中使

Java实现文件图片的预览和下载功能

《Java实现文件图片的预览和下载功能》这篇文章主要为大家详细介绍了如何使用Java实现文件图片的预览和下载功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... Java实现文件(图片)的预览和下载 @ApiOperation("访问文件") @GetMapping("

使用Python实现获取网页指定内容

《使用Python实现获取网页指定内容》在当今互联网时代,网页数据抓取是一项非常重要的技能,本文将带你从零开始学习如何使用Python获取网页中的指定内容,希望对大家有所帮助... 目录引言1. 网页抓取的基本概念2. python中的网页抓取库3. 安装必要的库4. 发送HTTP请求并获取网页内容5. 解

一文教你Python引入其他文件夹下的.py文件

《一文教你Python引入其他文件夹下的.py文件》这篇文章主要为大家详细介绍了如何在Python中引入其他文件夹里的.py文件,并探讨几种常见的实现方式,有需要的小伙伴可以根据需求进行选择... 目录1. 使用sys.path动态添加路径2. 使用相对导入(适用于包结构)3. 使用pythonPATH环境

Python实现常用文本内容提取

《Python实现常用文本内容提取》在日常工作和学习中,我们经常需要从PDF、Word文档中提取文本,本文将介绍如何使用Python编写一个文本内容提取工具,有需要的小伙伴可以参考下... 目录一、引言二、文本内容提取的原理三、文本内容提取的设计四、文本内容提取的实现五、完整代码示例一、引言在日常工作和学

Python实现合并与拆分多个PDF文档中的指定页

《Python实现合并与拆分多个PDF文档中的指定页》这篇文章主要为大家详细介绍了如何使用Python实现将多个PDF文档中的指定页合并生成新的PDF以及拆分PDF,感兴趣的小伙伴可以参考一下... 安装所需要的库pip install PyPDF2 -i https://pypi.tuna.tsingh

基于Python开发批量提取Excel图片的小工具

《基于Python开发批量提取Excel图片的小工具》这篇文章主要为大家详细介绍了如何使用Python中的openpyxl库开发一个小工具,可以实现批量提取Excel图片,有需要的小伙伴可以参考一下... 目前有一个需求,就是批量读取当前目录下所有文件夹里的Excel文件,去获取出Excel文件中的图片,并