import os           # 导入系统环境变量
import sys          # 导入 python环境变量相关的函数
import cv2
import torch        # 导入机器学习库 pytorch
import torch.backends.cudnn as cudnn    # 导入nvdia cudnn 相关库
import warnings
warnings.filterwarnings("ignore")from pathlib import Path
from models.experimental import attempt_load    # attempt_load用于加载模型权重文件并构建模型(可以构造普通模型或者集成模型)
from utils.datasets import LoadImages        # cv2图片、视频读取函数
from utils.general import non_max_suppression, scale_coords, set_logging
from utils.plots import Annotator, colors
from utils.torch_utils import select_device# 1. 路径处理
FILE = Path(__file__).resolve()     # 解析当前文件的绝对路径
ROOT = FILE.parents[0]              # 解析文件root 目录
if str(ROOT) not in  sys.path:      # 如果当前目前不在python 环境变量中,则添加环境变量sys.path.append(str(ROOT))
ROOT = Path(os.path.relpath(ROOT, Path.cwd()))  # 计算当前路径距根目录的相对路径source = str(ROOT / "data/images/4.jpeg")          # 要检测的文件路径 set_logging()   # 日志# 2. 配置显卡
device = select_device(device='')           # 使用默认的CUDA 显卡
half = device.type != 'cpu'                 # 半精度浮点数仅GPU支持# 3. 加载 yolov5s.pt 模型,开始建模
weights = str(ROOT / 'yolov5s.pt')               # 模理权重文件路径
model = attempt_load(weights, map_location=device)
stride = int(model.stride.max())                # 获取当前模型中支持的最大模型数量
names = model.modules.names if hasattr(model, 'module') else model.names    # 获取当前模型中各模型的nameif half:                # 如果支持半精度浮点model.half()        # 修改所有参数和buffer 为half半精度浮点类型imgsz = [640,640]# 4. 加载图片、视频资源
dataset = LoadImages(source, img_size=640,stride=stride, auto=True)# 5. 开始检测
if device.type != 'cpu':model(torch.zeros(1,3,*imgsz).to(device).type_as(next(model.parameters())))for path, img, im0s, vid_cap in dataset:img = torch.from_numpy(img).to(device)img = img.half() if half else img.float()  # uint8 to fp16/32img = img / 255.0if len(img.shape) == 3:img = img[None]# 6. 配置特征图可视化pred = model(img, augment=False, visualize=False)[0]# NMSpred = non_max_suppression(pred, 0.5, 0.45, None, False, multi_label=False, labels=(), max_det=300)# 7.开始预测    for i, det in enumerate(pred):p, s, im0, frame = Path(path), '', im0s.copy(), getattr(dataset, 'frame', 0)s += '%gx%g, ' % img.shape[2:]                # print stringannotator = Annotator(im0, line_width=3, example=str(names))if len(det):# Rescale boxes from img_size to im0 sizedet[:, :4]  = scale_coords(img.shape[2:], det[:, :4], im0.shape).round()# Print resultsfor c in det[:, -1].unique():n = (det[:, -1] == c).sum()  # detections per classs += f"{n} {names[int(c)]}{'s' * (n > 1)}, "  # add to stringprint(s)# Write resultsfor *xyxy, conf, cls in reversed(det):c = int(cls)  # integer classlabel = (f'{names[c]} {conf:.2f}')annotator.box_label(xyxy, label, color=colors(c, True))print(label,xyxy)# Stream resultsim0 = annotator.result()cv2.imshow(str(p), im0)cv2.waitKey(5000)  # 1 millisecond

运行结果:

PS C:\Users\ciellee\Desktop\Yolo\yolov5-6.0> & C:/ProgramData/Miniconda3/envs/pytorch/python.exe c:/Users/ciellee/Desktop/Yolo/yolov5-6.0/detect_test.py
YOLOv5  2021-10-12 torch 1.10.2 CPUFusing layers...
Model Summary: 224 layers, 7266973 parameters, 0 gradients
image 1/1 C:\Users\ciellee\Desktop\Yolo\yolov5-6.0\data\images\4.jpeg: 384x640, 5 persons, 4 cars, 1 traffic light,
person 0.54 [tensor(61.), tensor(158.), tensor(145.), tensor(382.)]
traffic light 0.59 [tensor(1225.), tensor(59.), tensor(1242.), tensor(88.)]
person 0.65 [tensor(728.), tensor(173.), tensor(775.), tensor(371.)]
person 0.70 [tensor(673.), tensor(166.), tensor(750.), tensor(366.)]
car 0.75 [tensor(1133.), tensor(198.), tensor(1218.), tensor(268.)]
car 0.75 [tensor(1027.), tensor(195.), tensor(1102.), tensor(273.)]
car 0.79 [tensor(367.), tensor(206.), tensor(483.), tensor(328.)]
car 0.86 [tensor(128.), tensor(172.), tensor(385.), tensor(357.)]
person 0.88 [tensor(436.), tensor(0.), tensor(744.), tensor(710.)]
person 0.91 [tensor(811.), tensor(26.), tensor(1054.), tensor(613.)]
PS C:\Users\ciellee\Desktop\Yolo\yolov5-6.0>

python 简单实现目标检测代码相关推荐

  1. Python实现一个简单的目标检测

    Python实现一个简单的目标检测 相关介绍 实验环境 基本思路 代码实现 输出结果 相关介绍 选择性搜索(Select Search)算法属于候选区域算法,用分割不同区域的办法来识别潜在的物体.在分 ...

  2. 深度学习 + OpenCV,Python实现实时视频目标检测

    选自PyimageSearch 机器之心编译 参与:路雪.李泽南 使用 OpenCV 和 Python 对实时视频流进行深度学习目标检测是非常简单的,我们只需要组合一些合适的代码,接入实时视频,随后加 ...

  3. 【自动驾驶】鸽了很久的小物体目标检测代码【小物体目标检测】

    鸽了很久的小物体目标检测代码 https://github.com/LT1st/SmallObstacleDetection/tree/main/code#readme Pytorch: Small ...

  4. 3D目标检测——代码理解——Second代码:数据处理kitti_dataset.py的理解

    3D目标检测-代码理解-Second代码:数据处理kitti_dataset.py的理解 Second代码的github地址:Second代码的github地址 Second文章的链接:Second文 ...

  5. python简单目标检测代码_Python Opencv实现单目标检测的示例代码

    一 简介 目标检测即为在图像中找到自己感兴趣的部分,将其分割出来进行下一步操作,可避免背景的干扰.以下介绍几种基于opencv的单目标检测算法,算法总体思想先尽量将目标区域的像素值全置为1,背景区域全 ...

  6. 用verilog实现检测1的个数_入门指南:用Python实现实时目标检测(内附代码)

    全文共6821字,预计学习时长20分钟 来源:Pexels 从自动驾驶汽车检测路上的物体,到通过复杂的面部及身体语言识别发现可能的犯罪活动.多年来,研究人员一直在探索让机器通过视觉识别物体的可能性. ...

  7. python目标检测答案_入门指南:用Python实现实时目标检测(内附代码)

    全文共6821字,预计学习时长20分钟 来源:Pexels 从自动驾驶汽车检测路上的物体,到通过复杂的面部及身体语言识别发现可能的犯罪活动.多年来,研究人员一直在探索让机器通过视觉识别物体的可能性. ...

  8. python实现yolo目标检测_从零开始PyTorch项目:YOLO v3目标检测实现

    在过去几个月中,我一直在实验室中研究提升目标检测的方法.在这之中我获得的最大启发就是意识到:学习目标检测的最佳方法就是自己动手实现这些算法,而这正是本教程引导你去做的. 在本教程中,我们将使用 PyT ...

  9. python实现yolo目标检测_Yolov5—实现目标检测(win10)

    Yolov5-实现目标检测(win10) 该方法可以在win10上实现Yolov5的目标检测,配置前需要安装Anaconda3 一.环境配置 源码下载地址:https://github.com/ult ...

最新文章

  1. 手把手教你 Socket 通信(TCP/IP)
  2. spring mvc DispatcherServlet详解之一---处理请求深入解析(续)
  3. 小白初学搭建 配置本地yum
  4. 发布地图服务属性表_Web3D地图来了!腾讯位置服务正式版发布!
  5. python3如何使用mysql_python3怎么用sqlalchemy操作mysql
  6. es 精确查询不模糊_ES系列17:Terms聚合结果不精确,怎么破?
  7. static和瞬态_具有瞬态属性的视图对象的钝化和激活
  8. java wmi远程桌面服务器_WMI实现远程监控多台windows服务器
  9. 仿淘宝网站的TabPage导航效果
  10. JAVA使用FTPClient类读写FTP
  11. json返回值为null显示key值的设置
  12. 公式之美:打通复杂思维的任督二脉
  13. python进阶(四) windows下虚拟环境使用
  14. 罗永浩:当年签了 “流氓协议” 将公布这个恶劣投资者
  15. 常见Web安全漏洞及测试方法(转载)
  16. JQuery提交表单
  17. 2022苏州市小学信息学奥赛T2-汉诺塔
  18. 【破解三网】iphone5 国行 A1429
  19. Root file specified for compilation Vetur
  20. css float与学习骑自行车

热门文章

  1. 终结所有短信猫(GPRS,GSM,CDMA,PHS)的发短信问题,以及想语音告警的问题!
  2. 计算机软件行业关联,2016年计算机市场现状分析-中国计算机行业与上下游之间关联性情况分析 - 观研报告网...
  3. 华容道游戏算法实现(java/android)
  4. 数据结构——表达式求值
  5. js放羊动画js特效代码
  6. oracle之case函数(case when then else end)用法
  7. windows11电脑右下角没有输入法解决方法
  8. springBoot + KISSO实现单点登录
  9. JavaScript实现搜索功能
  10. Facebook广告投放平台:个人账户和企业账户有什么区别?