yolov5/v7/v8自动检测多个文件夹及截取锚框

2023-05-16

目前yolo仅支持检测图片或单个文件夹,但在很多时候需要对成百上千个文件夹中图片进行检测,再根据得到的位置信息txt文件来截取图片,如何一步完成呢,详情见下文。

  1. 在detect.py中将save_txt设为store_false,则表示默认保存检测到的txt锚框位置信息

  1. 在最前面加入import shutil,接着ctrl+f找到 if save_txt or save_img:所在位置,在其后加上

    if save_txt or save_img:
        s = f"\n{len(list(save_dir.glob('labels/*.txt')))} labels saved to {save_dir/'labels'}" if save_txt else ''
        #print(f"Results saved to {save_dir}{s}")
    global old_path
    global new_path
    old_path = str(save_dir)+'/labels/'
    new_path = str(save_dir)
    for ipath in os.listdir(old_path):
        fulldir = os.path.join(old_path,ipath)
        print(fulldir)
        if os.path.isfile(fulldir):
            shutil.copy(fulldir,new_path)

这段代码是因为yolo会将测后图片与位置信息的txt分开文件夹放置,这里把他们move到一起,为了接下来从图片中截取出锚框图片。

  1. 在detect.py中拉到最后,找到detect(),在其后加入path = ...

        else:
            detect()
            #shutil.move()
            path = new_path         # jpg图片和对应的生成结果的txt标注文件,放在一起
            path3 = "data/person_reid_zhibo_allpic/"    # 裁剪出来的小图保存的根目录

            ss1=time.localtime().tm_min
            ss2=time.localtime().tm_sec
            #ss = 0
            
            path2 = os.path.join(path3,f"{ss1}{ss2}")
            os.mkdir(path2)

            w = 128                         # 原始图片resize
            h = 256
            img_total = []
            txt_total = []

            file = os.listdir(path)
            for filename in file:
                first,last = os.path.splitext(filename)
                if last == ".jpg":                      # 图片的后缀名
                    img_total.append(first)
                #print(img_total)
                else:
                    txt_total.append(first)

            for img_ in img_total:
                if img_ in txt_total:
                    filename_img = img_+".jpg"          # 图片的后缀名
                    # print('filename_img:', filename_img)
                    path1 = os.path.join(path,filename_img)
                    img = cv2.imread(path1)
                    img = cv2.resize(img,(w,h),interpolation = cv2.INTER_CUBIC)        # resize 图像大小,否则roi区域可能会报错
                    filename_txt = img_+".txt"
                    # print('filename_txt:', filename_txt)
                    n = 1
                    with open(os.path.join(path,filename_txt),"r+",encoding="utf-8",errors="ignore") as f:
                        for line in f:
                            aa = line.split(" ")
                            x_center = w * float(aa[1])       # aa[1]左上点的x坐标  
                            y_center = h * float(aa[2])       # aa[2]左上点的y坐标
                            width = int(w*float(aa[3]))       # aa[3]图片width
                            height = int(h*float(aa[4]))      # aa[4]图片height
                            lefttopx = int(x_center-width/2.0)
                            lefttopy = int(y_center-height/2.0)
                            roi = img[lefttopy+1:lefttopy+height+3,lefttopx+1:lefttopx+width+1]   # [左上y:右下y,左上x:右下x] (y1:y2,x1:x2)需要调参,否则裁剪出来的小图可能不太好
                            print('roi:', roi)                        # 如果不resize图片统一大小,可能会得到有的roi为[]导致报错         
                            filename_last = img_+"_"+str(n)+".jpg"    # 裁剪出来的小图文件名
                            # print(filename_last)
                            #path2 = os.path.join(path3,"1")           # 在path3路径下创建一个roi文件夹
                            #os.mkdir(path2)
                            print('path2:', path2)                    # 裁剪小图的保存位置
                            cv2.imwrite(os.path.join(path2,filename_last),roi)
                            n = n+1
                else:
                    continue

这段根据当前的时分建立文件夹名称,将每次detect后截取的图片放置在不同文件夹,这里的w和h可以根据自己的要求设置,注意w和h是截取之前原图的尺寸,不是截取后的尺寸。path3根据自己要放的地方设置,是截取小图要保存的根目录。

  1. 重复运行detect.py ,只需执行以下几行代码

import os

#global dir_count

for dir in os.listdir('./your_pic_dir/'):
    #dir_count += len(dir)
    s1 = os.path.basename(dir)
    s2 = os.path.join('./your_pic_dir/',s1)

    run = f'python detect_label.py --weights runs/train/yolov7-tiny_320_desk/weights/best.pt --img-size 320 --source {s2}'
    os.system(run)

print('done')

注意这里的your_pic_dir是你要检测的所有文件夹的根目录,s2是根目录下遍历每个文件夹,这样就可以重复运行detect.py对根目录下每个文件夹进行检测了。再结合在detect.py中加入的代码,可以实现分别检测后再截取保存到各自文件夹下。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

yolov5/v7/v8自动检测多个文件夹及截取锚框 的相关文章

  • yolov5标签数据增强脚本

    此代码用于将标注好的图片及其标签进行数据增强 xff0c 优点在于不需要重新打标签 span class token keyword import span xml span class token punctuation span etr
  • YOLOv5的详细使用教程,以及使用yolov5训练自己的数据集

    YOLOv5的详细使用教程 xff0c 以及使用yolov5训练自己的数据集 文章目录 xff1a 1 安装环境依赖 1 1 克隆项目1 2 安装必要的环境依赖2 下载预训练模型和标注的数据集 2 1 下载预训练模型 2 1 1 执行脚本下
  • Colab运行YOLOv5训练自己的数据集

    最近想使用YOLOv5模型训练自己的数据集 xff0c 但是没有GPU 所以白嫖一下Google的Colab 第一 xff1a 制作自己的数据集 这里给出一篇自己看过的博客写和博主自制的视频 xff0c 我觉得讲的挺好 xff0c 数据集方
  • 一文读懂YOLOv5 与 YOLOv4

    作者 xff1a William 来源 xff1a 自动驾驶全栈工程师知乎专栏 链接 xff1a https www zhihu com people william hyin columns YOLO之父Joseph Redmon在今年年
  • [jetson浅试] yolov5+deepsort+Tensorrt C++部署(Xavier AGX)

    1 简介 xff1a 这学期刚开学的时候搞的 xff0c 空下来整理一些 xff08 以后还是应该养成边搞边写博客的好习惯 xff09 本文主要是对yolov5 deepsort tensorrt A c 43 43 implementat
  • YOLOv5训练参数简介

    YOLOv5参数解析 xff0c 这次主要解析源码中train py文件中包含的参数 1 1 39 weights 39 1 2 39 cfg 39 1 3 39 data 39 1 4 39 hyp 39 1 5 39 epochs 39
  • 【Yolo】YoloV5训练自定义模型

    Yolo Jetson Orin Nano下部署 YoloV5 上一篇博文主要记录了在Jetson Orin Nano下部署YoloV5环境 xff0c 并运行了yoloV5n pt模型 xff0c 本篇在上一篇的基础上 xff0c 进一步
  • RoboCom机器人大赛使用yolov5抽取20个随机图片进行人群识别

    目录 1 原理 2 思维流程 2 1 进行yolov5的环境搭建 2 1 1 在Linux的ubuntu环境anaconda的安装 2 1 2 Vscode的安装和配置 2 1 3 Github上面yolov5文件的下载 2 1 4 使用A
  • c++部署yolov5模型

    C 43 43 部署yolov5模型 前言一 准备模型二 Fastdeploy准备三 调用总结 前言 不可否认 xff0c yolov5在目标检测方面大杀四方 xff0c 在 SOTA 榜上留下过万众瞩目的成绩 xff0c 但是官网代码给的
  • yolov5报错:RuntimeError: a view of a leaf Variable that requires grad is being used in an in-place

    在执行下面代码时 python train span class token punctuation span py span class token operator span img span class token number 64
  • unbuntu18.04 install pytorch1.8-cpu+yolov5

    1 install pytorch 1 change pip source reference link 2 install all pip3 install torchvision 61 61 0 9 0 pip3 install tor
  • yolov5/v7/v8自动检测多个文件夹及截取锚框

    目前yolo仅支持检测图片或单个文件夹 xff0c 但在很多时候需要对成百上千个文件夹中图片进行检测 xff0c 再根据得到的位置信息txt文件来截取图片 xff0c 如何一步完成呢 xff0c 详情见下文 在detect py中将save
  • YOLOv5识别目标的实时坐标打印

    引言 这个功能看似鸡肋 xff0c 但对于无人机目标识别与追踪有重要意义 xff0c 通过目标在摄像头视野的坐标位置 xff0c 可以推算出无人机相对与目标的位置 xff0c 从而对无人机进行位置矫正 因此 xff0c 添加代码打印坐标并不
  • math模块

    math 模块是Python中的标准模块 并且始终可用 要在此模块下使用数学函数 您必须使用导入模块import math 它提供对基础C库函数的访问 导入数学函数库 import math 查看 math 查看包中的内容 print di
  • Win10环境下CPU+GPU版本基于YOLOv5的行人检测研究(包括Anaconda安装超详细)

    安装Anaconda 直达链接Anaconda 点击get started 点击Download Anaconda Installers 点击Download 然后保存执行文件即可 开始安装Anaconda 双击执行文件 Anaconda3
  • 小白YOLOv5全流程-训练+实现数字识别

    目录 一 配置 二 准备相关文件进行训练 三 使用labelImg标注图片 1 安装labellmg 2 使用 labellmg 四 划分数据集以及配置文件的修改 1 在VOCData目录下创建程序 split train val py 并
  • FPN网络结构+源码讲解

    YOLOF前传 特征金字塔 FPN 前言 这几天在读CVPR2021的中稿论文YOLOF You Only Look One level Feature 文章回顾了单阶段的特征金字塔网络 FPN 指出FPN的成功的原因在于它对目标检测中优化
  • Yolox_s可视化网络结构图

    Yolox共有七种网络结构 包含2种轻量级网络 和5种标准网络 轻量级网络 1 Yolox Nano可视化网络结构图 点击查看 2 Yolox Tiniy可视化网络结构图 点击查看 标准网络 1 Yolox s可视化网络结构图 点击查看 2
  • 基于 PyTorch实现YOLOv5

    目录 The First Article 前言 实现环境 基本流程 数据准备 建立模型 训练模型 模型评估 图片预测 视频预测 The First Article 前言 本文记录基于PyTorch实现Github作者ultralytics的
  • “分页文件太小,无法完成此操作”尝试训练 YOLOv5 对象检测模型时出错

    我有大约 50000 个图像和注释文件用于训练 YOLOv5 对象检测模型 我在另一台计算机上仅使用 CPU 训练模型没有问题 但需要太长时间 因此我需要 GPU 训练 我的问题是 当我尝试使用 GPU 进行训练时 我不断收到此错误 OSE

随机推荐

  • vc++ 6.0bug C1853

    c documents and settingsstudent桌面musicplayermaindlg cpp 1 fatal error C1853 Debug MusicPlayer pch is not a precompiled h
  • 人工智能知识点汇总

    一 AI应用领域 AI目前主要的应用领域有3个方向 xff0c 包括 xff1a 计算机视觉 语音交互 自然语言处理 1 1 计算机视觉 xff08 CV xff09 计算机视觉是一门研究如何使机器 看 的科学 xff0c 就是指用摄影机和
  • Java17(291)之后 , 禁用了TLS1.1 , 使JDBC无法用SSL连接SqlServer怎么办,以下是解决办法

    修改java security文件 1 找到jre的java security文件 2 打开java security并搜索 jdk tls disabledAlgorithms 61 3 删掉TLSv1 TLSv1 1 4 保存 可以了
  • NumPy、Torch和Tensorflow 代码对比

    深度学习 在深入学习的基本单位上实施初级到高级操作 gt Excerpts 我习惯于为不同的问题创建新的深度学习架构 xff0c 但选择哪个框架 xff08 Keras Pytorch TensorFlow xff09 通常比较困难 由于其
  • 2023年 机器学习常用算法

    01 线性回归 线性回归 xff08 Linear Regression xff09 可能是最流行的机器学习算法 线性回归就是要找一条直线 xff0c 并且让这条直线尽可能地拟合散点图中的数据点 它试图通过将直线方程与该数据拟合来表示自变量
  • STM32上SPI+DMA实现大批量读取flash数据

    最近做项目需要使用SPI 43 DMA xff0c 为了做实验感受DMA传输数据块 xff0c 本人以SPI 43 DMA来读取flash中的数据 网上有很多例程是spi直接读取flash xff0c 无法提高性能 因为只是简单的实验SPI
  • stm32通用定时器1s延时实现LED闪烁

    stm32有很多定时器 xff0c 每种定时器的功能也不尽相同 xff0c 今天学习了如何用通用定时器实现1s延时 xff0c 使LED灯闪烁 xff0c 现总结如下 xff1a 步骤总结 xff1a 使能定时器时钟 gt 配置定时器结构体
  • JDK 中使用js调用java类、方法

    最近研究阅读这个APP 其主要功能就是通过一个个书源 从而实现移动端阅读的体验 比如说某些在线小说阅读网站 会加上相应的广告 从而影响用户阅读体验 于是阅读这个APP就是做了类似净化阅读体验 但是小说阅读网站千千万万 如果去适配每个小说阅读
  • Spring项目在tomcat启动时调用action

    1 实现ServletContextListener接口 添加 64 WebListener注解 2 按照示例写代码 xff1a 第一个是开启时 xff0c 第二个是销毁时
  • ubuntu16.04安装opencv3.4

    参考blog https blog csdn net u013066730 article details 79411767 直接进行 完全没问题 sudo apt get install build essential libgtk2 0
  • 使用switch-case语句输出成绩等级

    问题描述 xff1a 输入一个0 100范围内发分数 xff0c 在不同的等级范围内输出不同的值 xff0c 要求使用switch case控制 0 60 等级为E 60 70 等级为D 70 80 等级为C 80 90 等级为B 90 1
  • 输出图案(六)---输出空心矩形

    输入矩形的宽 xff0c 高 xff0c 输出该空心矩形 xff0c 用 来进行表示 参考代码1 xff1a span class hljs comment include lt stdio h gt span span class hlj
  • C语言中交换两个数的方法

    问题描述 xff1a 程序中有两个数a b 其中a 61 4 b 61 5 xff0c 现在希望交换两个数的值 xff0c 使得a 61 5 b 61 4 在这里我总结了一下目前我已经掌握的C语言中交换两个数的方法 xff0c 主要如下几种
  • 输出平行四边形图案(多种方案)

    问题描述 xff1a 使用 在控制台打印平行四边形 例如 xff1a 平行四边形中最长的一行输出的 是5个 xff0c 则平行四边为 xff1a span class hljs bullet span span class hljs emp
  • 自己实现strcat函数

    问题描述 xff1a 自己实现一个MyStrcat函数 xff0c 要和C语言库函数的strcat函数完成同样的功能 问题分析 xff1a 首先我们要了解一下strcat函数它到底做了什么事情 1 函数原型 char strcat char
  • 简易文件打包程序

    对指定目录下面的文件进行打包 简易解包程序参考博客另外一篇文章 xff1a http blog csdn net yi ming he article details 77689453 打包方式 xff1a 把目录下面的文件名 xff0c
  • 简易解包程序

    对压缩包进行解压 简易压缩程序请参考博客的另外一篇文章 xff1a http blog csdn net yi ming he article details 77689405 解包方式 xff1a 根据打包建立的索引表 xff0c 找到对
  • linux 挂载错误Transport endpoint is not connected

    mount了mfs后 xff0c 重新挂载之后 xff0c 出现如下错误 xff1a usr local mfs bin mfsmount H 192 168 103 101 mnt fuse bad mount point 96 mnt
  • 新字体的永久注册

    CString GetCurrentModuleDir TCHAR szPath MAX PATH 43 1 61 0 if 0 61 61 GetModuleFileName HMODULE amp ImageBase szPath MA
  • yolov5/v7/v8自动检测多个文件夹及截取锚框

    目前yolo仅支持检测图片或单个文件夹 xff0c 但在很多时候需要对成百上千个文件夹中图片进行检测 xff0c 再根据得到的位置信息txt文件来截取图片 xff0c 如何一步完成呢 xff0c 详情见下文 在detect py中将save