Yolov5-detect.py代码简化(便于移植)

这篇具有很好参考价值的文章主要介绍了Yolov5-detect.py代码简化(便于移植)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Yolov5-detect.py代码简化(便于移植)

# -*- coding: UTF-8 -*-  
# @Time : 2023/11/1 18:23
# @File : detect_iter.py
# @Software: PyCharm
# YOLOv5 🚀 by Ultralytics, GPL-3.0 license
import argparse
import os
import sys
import time
from pathlib import Path

import cv2
import numpy as np
import torch

torch.cuda.current_device()
import torch.backends.cudnn as cudnn

FILE = Path(__file__).resolve()
ROOT = FILE.parents[0]  # YOLOv5 root directory
if str(ROOT) not in sys.path:
    sys.path.append(str(ROOT))  # add ROOT to PATH
ROOT = Path(os.path.relpath(ROOT, Path.cwd()))  # relative

from models.experimental import attempt_load
from utils.datasets import LoadImages, LoadStreams
from utils.general import apply_classifier, check_img_size, check_imshow, check_requirements, check_suffix, colorstr, \
    increment_path, non_max_suppression, print_args, save_one_box, scale_coords, set_logging, \
    strip_optimizer, xyxy2xywh
from utils.plots import Annotator, colors, plot_one_box
from utils.torch_utils import load_classifier, select_device, time_sync
from utils.augmentations import letterbox


@torch.no_grad()
def run():
    # Initialize
    weights = './yolov5s.pt'  # model.pt path(s)
    device = 'cuda:0'  # cuda device, i.e. 0 or 0,1,2,3 or cpu
    save_conf = False
    imgsz = 640
    line_thickness = 3  # bounding box thickness (pixels)
    hide_labels = False  # hide labels
    hide_conf = False  # hide confidences
    half = False

    device = select_device(device)
    half &= device.type != 'cpu'  # half precision only supported on CUDA
    # Load model
    model = attempt_load(weights, map_location=device)  # load FP32 model
    stride = 32  # model stride
    names = model.module.names if hasattr(model, 'module') else model.names  # get class names
    if half:
        model.half()  # to FP16

    # 导入图片
    img = cv2.imread("./data/images/image2.jpg")
    im0 = img.copy()
    # 处理图片
    img = letterbox(img, new_shape=(imgsz, imgsz), stride=stride)[0]
    img = img.transpose((2, 0, 1))[::-1]  # HWC to CHW, BGR to RGB
    img = np.ascontiguousarray(img)
    # 个数统计
    statistic_dic = {name: 0 for name in names}

    img = torch.from_numpy(img).to(device)
    img = img.half() if half else img.float()  # uint8 to fp16/32
    img = img / 255.0  # 0 - 255 to 0.0 - 1.0
    if len(img.shape) == 3:
        img = img[None]  # expand for batch dim

    pred = model(img, augment=False, visualize=False)[0]
    # classes决定检测类别
    pred = non_max_suppression(pred, conf_thres=0.6, iou_thres=0.45, classes=None, max_det=1000)

    # Process predictions
    for i, det in enumerate(pred):  # per image
        if len(det):
            # Rescale boxes from img_size to im0 size
            det[:, :4] = scale_coords(img.shape[2:], det[:, :4], im0.shape).round()
            # Write results
            for *xyxy, conf, cls in reversed(det):
                c = int(cls)
                statistic_dic[names[c]] += 1
                xywh = (xyxy2xywh(torch.tensor(xyxy).view(1, 4))).view(-1).tolist()  # normalized xywh
                line = (cls, *xywh, conf) if save_conf else (cls, *xywh)  # label format
                label = None if hide_labels else (names[c] if hide_conf else f'{names[c]} {conf:.2f}')
                plot_one_box(xyxy, im0, label=label, color=colors(c, True), line_thickness=line_thickness)

        print(statistic_dic)
        cv2.imshow("img", im0)
        cv2.waitKey(0)
        cv2.destroyAllWindows()


if __name__ == "__main__":
    run()

Yolov5-detect.py代码简化(便于移植),YOLO,pytorch,人工智能文章来源地址https://www.toymoban.com/news/detail-737216.html

到了这里,关于Yolov5-detect.py代码简化(便于移植)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python —— 解析Yolov5 - detect.py

    Yolov5自带detect.py加入cv2简单操作      说明:im0为mat的原图     detect.py参数解析      1、运行detect.py的两种方式:           (1)、 使用命令 :                python detect.py --source ./testfiles/img1.jpg --weights runs/train/base/weights/best.pt --c

    2024年02月12日
    浏览(38)
  • yolov5的推理输出detect.py部分

        推理阶段是整个检测模型完成后,要对模型进行测试的部分。很重要的一部分,只有了解了这个部分,才能在比赛或者项目提交中很好的输出自己模型的检测结果。同时,推理输出对模型部署在不同的环境下也是十分重要的。 源码:https://github.com/ultralytics/yolov5 版本

    2024年02月04日
    浏览(36)
  • YOLOv5-6.x源码分析(一)---- detect.py

    这算是我的第一个正式博客文章吧,在准备动手写内容的时候,都有点无从下手的感觉。anyway,以后应该会写的越来越娴熟的。 YOLO系列我已经用了接近一年了吧,从去年暑假开始学习,打算入坑深度学习,其中跑过demo,自己用Flask搭配YOLOv5写过网页端实时检测,还看过源码

    2024年02月16日
    浏览(33)
  • 【Yolov5】保姆级别源码讲解之-推理部分detect.py文件

    克隆一下yolov5的代码 配置好项目所需的依赖包 opt 为执行可以传递的参数 具体的参数如图所示,比较重要的参数 weights权重文件、–source 数据集合 – data 数据集的配置 weights 权重文件 – source 为需要推理的原图 data参数 数据配置 imgsz 参数是训练配置图片的大小 device 设备信

    2024年02月08日
    浏览(37)
  • YOLOv5源码逐行超详细注释与解读(2)——推理部分detect.py

    前面简单介绍了YOLOv5的项目目录结构(直通车:YOLOv5源码逐行超详细注释与解读(1)——项目目录结构解析),对项目整体有了大致了解。 今天要学习的是 detect.py 。通常这个文件是用来预测一张图片或者一个视频的,也可以预测一个图片文件夹或者是一些网络流。下载后直

    2023年04月18日
    浏览(53)
  • 魔改并封装 YoloV5 Version7 的 detect.py 成 API接口以供 python 程序使用

    YoloV5 作为 YoloV4 之后的改进型,在算法上做出了优化,检测的性能得到了一定的提升。其特点之一就是权重文件非常的小,可以在一些配置更低的移动设备上运行,且提高速度的同时准确度更高。具体的性能见下图[^1]。本次使用的是最新推出的 YoloV5 Version7 版本。 GitHub 地址

    2024年01月17日
    浏览(42)
  • YOLOv5|YOLOv7|YOLOv8改进之实验结果(四):将多种算法的Loss精度曲线图绘制到一张图上,便于YOLOv5、v7系列模型对比实验获取更多精度数据,丰富实验数据

    💡该教程为改进YOLO高阶指南,属于 《芒果书》 📚系列,包含大量的原创首发改进方式🚀 💡更多改进内容📚可以点击查看:YOLOv5改进、YOLOv7改进、YOLOv8改进、YOLOX改进原创目录 | 老师联袂推荐🏆 💡 🚀🚀🚀本博客内含·改进源代码·,按步骤操作运行改进后的代码即可

    2023年04月17日
    浏览(50)
  • YOLOv5:解读general.py

    记录一下自己阅读general.py代码的一些重要点,方便自己查阅。特别感谢,在参考里,列举的博文链接,写得很好,对本人阅读理解yolo.py代码,有很大帮助。 由于本人水平有限,难免出现错漏,敬请批评改正。 更多精彩内容,可点击进入YOLO系列专栏、自然语言处理 专栏或我

    2024年02月10日
    浏览(41)
  • (四)yolov5--common.py文件解读

     🍨 本文为🔗365天深度学习训练营 中的学习记录博客 🍖 原作者:K同学啊|接辅导、项目定制  参考网址:https://blog.csdn.net/qq_38251616/article/details/124665998                   yolov5 代码解读 --common.py_XiaoGShou的博客-CSDN博客         上次对yolov5s.yaml文件进行了解读,这次在

    2024年02月09日
    浏览(36)
  • yolov5环境搭建(Anaconda-py3.9、PyTorch-CPU、yolov5-4.0、PyCharm)

    Windows 10 Anaconda(基于Python3.9),已配置好环境变量 yolov5相关的代码、权重文件等,已经打包整理好,可以通过百度网盘绿色下载。链接: https://pan.baidu.com/s/1okVkfpqjI5wD6PigK-AH0w?pwd=yscw 提取码: yscw Anconda除了提供丰富的科学包外,还可以通过创建虚拟化境的方式用于进行环境隔离

    2024年02月04日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包