Yolov5检测并生成文本及标签文件

Yolov5 多边形标签转换,所有json文件自动转成txt格式[详细过程] 注:labelme是麻省理工(MIT)的计算机科学和人工智能实验室(CSAIL)研发的图像标注工具,人们可以使用该工具创建定制化标注任务或执行图像标注,项目源代码已经开源。通过labelme对图进行标注后,得到的是json文件,而Yolov5对数据进行模型构建的时候,读取需要的是txt格式的文件。txt_outer_path——保存txt文本的文件夹的绝对路径。json_name——json_name是json文本的名字。json_floder——读取json的文件夹的绝对路径。 阅读详情

检测目标文件夹

python detect.py --source **path/**/ --weights **.pt --img 640

生成文本文件

加 --save-txt 参数即可

python detect.py --source **path/**/ --weights **.pt --img 640 --save-txt

文本文件转成数组

function fnTxt2Arr($fn,$iW,$iH){
  $tStr = read2Str($fn); 
  $arr = explode("\r\n",$tStr);
  $arr = array_filter($arr);//清除空字符
  for($i=0;$i<count($arr);$i++){
     $arrT = explode(" ",$arr[$i]);
     $tArr[$i]["labId"] = $arrT[0];//种类标签序号
     $tArr[$i]["xMax"] = ($arrT[1]*$iW*2 + $arrT[3]*$iW  )/2;
     $tArr[$i]["xMin"] = $arrT[1]*$iW*2 - $tArr[$i]["xMax"];
     $tArr[$i]["yMax"] = ($arrT[2]*$iH*2 + $arrT[4]*$iH  )/2;
     $tArr[$i]["yMin"] = $arrT[2]*$iH*2 - $tArr[$i]["yMax"];
  }
  return $tArr;
}   

返回种类标签,xmax,xmin,ymax,ymin的数组。

数组转成json字符串

function fnTxt2json($arr){//文本文件转成json
global $yEnArr, $arrImg, $arrColor;
   for($i=0;$i<count($arr);$i++){
       $t1Arr[0]["x"] = $arr[$i]["xMin"];
       $t1Arr[0]["y"] = $arr[$i]["yMin"];
       $t1Arr[1]["x"] = $arr[$i]["xMax"];
       $t1Arr[1]["y"] = $arr[$i]["yMin"];
       $t1Arr[2]["x"] = $arr[$i]["xMax"];
       $t1Arr[2]["y"] = $arr[$i]["yMax"];
       $t1Arr[3]["x"] = $arr[$i]["xMin"];
       $t1Arr[3]["y"] = $arr[$i]["yMax"];
       $jArr[$i]["content"] = $t1Arr;
       $t2Arr["xMin"] = $arr[$i]["xMin"];
       $t2Arr["yMin"] = $arr[$i]["yMin"];
       $t2Arr["width"] = $arr[$i]["xMax"] - $arr[$i]["xMin"];
       $t2Arr["height"] = $arr[$i]["yMax"] - $arr[$i]["yMin"];
       $jArr[$i]["rectMask"] = $t2Arr;
       
       $t3Arr["labelName"] = trim($yEnArr[$arr[$i]["labId"]]);
       $tId = array_search($yEnArr[$arr[$i]["labId"]],$arrImg);
       $t3Arr["labelColor"] = $arrColor[$tId];
       $t3Arr["labelColorRGB"] = "undefined,undefined,undefined" ;
       $t3Arr["visibility"] = false; ;
       $jArr[$i]["labels"] = $t3Arr;
       
       $t4Arr["x"] = ($arr[$i]["xMin"] + $arr[$i]["xMax"])/2 ;
       $t4Arr["y"] = ($arr[$i]["yMin"] + $arr[$i]["yMax"])/2 ;
       $jArr[$i]["labelLocation"] = $t4Arr;
       $jArr[$i]["contentType"] = "rect";
   }  
  return json_encode($jArr);
}  

数组生成xml文件

function fn2xml($arr,$imgFile,$iW,$iH,$fn,$arrCh,$arrEn){
   global $yEnArr;
   $arrsT = explode("/",$imgFile); 
   $jpgName = str_replace(".txt",".jpg",$arrsT[count($arrsT)-1]);
   $tStr =     "<annotation>\r\n";
   $tStr .= "    <folder>VOC2007</folder>\r\n";
   $tStr .= "    <filename>".$jpgName."</filename>\r\n";
   $tStr .= "    <path>".$jpgName."</path>\r\n";
   $tStr .= "    <source>\r\n";
   $tStr .= "        <database>Unknown</database>\r\n";
   $tStr .= "    </source>\r\n";
   $tStr .= "    <size>\r\n";
   $tStr .= "        <width>".$iW."</width>\r\n";
   $tStr .= "        <height>".$iH."</height>\r\n";
   $tStr .= "        <depth>3</depth>\r\n";
   $tStr .= "    </size>\r\n";
   $tStr .= "    <segmented>0</segmented>\r\n";
   for($i=0;$i<count($arr);$i++){
     $tStr .= "    <object>\r\n";
     $tStr .= "        <name>".trim($yEnArr[$arr[$i]["labId"]])."</name>\r\n";
     $tStr .= "        <pose>Unspecified</pose>\r\n";
     $tStr .= "        <truncated>0</truncated>\r\n";//是否分割 isP
     $tStr .= "        <difficult>0</difficult>\r\n";//困难字段 isD
     $tStr .= "        <bndbox>\r\n";
     $tStr .= "            <xmin>".round($arr[$i]["xMin"],1)."</xmin>\r\n";//舍去取整
     $tStr .= "            <ymin>".round($arr[$i]["yMin"],1)."</ymin>\r\n";
     $tStr .= "            <xmax>".round($arr[$i]["xMax"],1)."</xmax>\r\n";//进1取整
     $tStr .= "            <ymax>".round($arr[$i]["yMax"],1)."</ymax>\r\n";
     $tStr .= "        </bndbox>\r\n";
     $tStr .= "    </object>\r\n";       
     $labStr .= $yEnArr[$arr[$i]["labId"]].",";//标签的昆虫名称
   }
   $tStr .=     "</annotation>";
   $xmlFName= str_replace(".txt",".xml",$imgFile);
   $fp = fopen("$xmlFName", "w"); //打开文件指针,创建文件
   if(!is_writable($xmlFName) ){ die("文件:" .$xmlFName. "不可写,请检查!" );}
   fwrite($fp,$tStr);
   fclose($fp); 
   varTxt($imgFile,$labStr,$fn);//昆虫标签写入指定文本文件
}

Notepad++比较文本文件异同

compare插件

需github

C:\Windows\System32\drivers\etc下修改

HOSTS文件

ping github.com

加入IP地址

array_search()注意空字符

array_search(trim($str),$arr)

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

相关推荐

关于目标检测任务中,YOLO(txt格式)标注文件的可视化

本文为基于yolo标注的txt文件的目标检测数据集的可视化

Henry的博客 1万+

yolov5.7,predict分割生成txt,转标注json文件

【代码】yolov5.7,predict分割生成txt,转标注json文件。

weixin_50822407的博客 471

yolov5/v7修改标签和检测框显示【最全】

yolov5修改标签,检测框,文本框的大小,颜色等参数的修改,以及隐藏。

dal1223的博客 4万+

yolov5检测框显示中文标签

前言 很多人在训练yolov5目标检测的时候,标签只能显示英文的。怎么样才可以训练一个可以检测物体并且显示中文标签的模型呢。下面我们来一步一步的做。 1 有中文标签的数据集 首先在收集数据集 的时候 ...

didiaopao的博客 3万+

Yolov5实现道路裂缝检测

Yolov5实现道路裂缝检测 参考代码链接 Github代码链接 基于Pytorch的Yolov5道路裂缝检测程序运行说明。大家可以结合我的说明和原文说明使用,有问题欢迎询问。 文章目录Yolov5实现道路裂缝检测环境要求测试训练自己的数据集1.创建dataset.yaml文件2.创建标签文件3.组织文件路径4.选择模型5.开始训练 环境要求 Python 3.8或之后的版本 还要安装requirements.txt文件中所有依赖包,包括1.7及以上版本的torch $ pip install -r req

qq_26751379的博客 2万+

下载并运行YOLOV5检测模型,检测图片、视频,并用自己的训练集训练模型

下载并运行YOLOV5检测模型,检测图片、视频,并用自己的训练集训练 1、首先,到github上下载YOLOV5包,下载地址为https://github.com/ultralytics/yolov5 在code的下拉箭头中,点击Download ZIP,即可进行下载 2、下载好之后,解压,用pycharm打开 可以看到,在model中,提供了四个模型,每个模型的大小和精度都不一样,源码中用的是yolov5s.yaml 3、打开detect.py,直接运行,如果不报错的话,运行结束之后,会把infere

weixin_44928646的博客 2万+

一文详解Yolov5——基于Yolov5的火灾检测系统

本文以yolov5为基础设计一套火灾检测系统,由于大多数设备、算法的实时性较差或检测精确度偏低,而YOLOv5 检测算法拥有轻量级的模型和优良的性能,针对于此,本项目基于 YOLOv5 算法, 着重解决的问题是如何实现准确快速地检测火灾,以减小在复杂环境中的误检率,并提高检测精确率和实时性。

weixin_63866037的博客 1万+

[yolov5] yolo的数据标签格式

yolov5 的标签格式https://github.com/ultralytics/yolov5/issues/9816你好!。感谢您询问YOLOv5🚀数据集格式。用于分割的XY坐标与用于长方体中心的标准坐标相同。为了正确训练,您的数据必须为YOLOv5格式。有关数据集设置的完整文档以及开始培训您的第一个模型所需的所有步骤,请参阅我们的训练定制数据教程。以下是该教程的几个节选:是一个示例性的小教程数据集,由中的前128张图像组成。这些相同的128张图像用于训练和验证,以验证我们的训练管道是否会过拟合。是

condom10010的博客 1万+

【目标检测】YOLOv5:标签中文显示/自定义颜色

本篇主要用来实现将YOLOv5输出的标签转成中文,并且自定义标签颜色的需求。我所使用的是YOLOv5-5.0版本。

兴趣使然的创作者 1万+

YOLOv5-目标检测

简介: YOLOv5在YOLOv4算法的基础上做了进一步的改进,检测性能得到进一步的提升。虽然YOLOv5算法并没有与YOLOv4算法进行性能比较与分析,但是YOLOv5在COCO数据集上面的测试效果还是挺不错的。 YOLOv5是一种单阶段目标检测算法,该算法在YOLOv4的基础上添加了一些新的改进思路,使其速度与精度都得到了极大的性能提升。主要的改进思路如下所示: 1>输入端:在模型训练阶段,提出了一些改进思路,主要包括Mosaic数据增强、自适应锚框计算、自适应图片缩放; 2> 基准网络:融

余生的博客 7054

python yolov5 脚本制作(第2部分:图片标记并生成对应标签文件、数据集的训练、使用训练出来的权重文件)

python yolov5 脚本制作(第2部分:图片标记并生成对应标签文件、数据集的训练、使用训练出来的权重文件)

chatblanc的博客 4307

基于 YOLOV5 的 SAR 图像舰船检测

基于 YOLOv5 实现的 SAR 图像舰船检测(全流程)

我有两颗糖 8926

yolov5对识别出的图片如何进行文本检测?

🏆 本文收录于《全栈Bug调优(实战版)》专栏,致力于分享我在项目实战过程中遇到的各类Bug及其原因,并提供切实有效的解决方案。无论你是初学者还是经验丰富的开发者,本文将为你指引出一条更高效的Bug修复之路,助你早日登顶,迈向财富自由的梦想🚀!同时,欢迎大家关注、收藏、订阅本专栏,更多精彩内容正在持续更新中。让我们一起进步,Up!Up!Up!    备注: 部分问题/难题源自互联网,经过精心筛选和整理,结合数位十多年大厂实战经验资深大佬经验总结所得,数条可行方案供所需之人参考。

**My Coding Family** 1203

目标检测--yolov5检测框显示中文标签

目标检测--yolov5检测框显示中文标签

jiaoty19的博客 3931

达梦数据库集群部署(主备)

达梦数据库集群部署(主备)

m0_71845127的博客 1462

别再傻傻分不清PBR和NPR了!从《原神》到《双城之战》,聊聊游戏里那些让你眼前一亮的渲染风格

本文深入解析了PBR(基于物理的渲染)与NPR(非真实感渲染)在游戏视觉风格中的应用差异,通过《原神》和《双城之战》的案例,展示了两种渲染技术如何创造出截然不同的艺术效果。从技术原理到实战案例,帮助读者理解如何根据项目需求选择合适的渲染风格。

weixin_30425949的博客 148

YOLOv5和YOLOv8中隐藏标签,只显示检测框的方法

在我们平时发表论文的过程中,会遇到这样的需求,在进行推理的时候,仅需要在推理图片上面显示出检测框。不需要显示标签信息,尤其是在目标众多的时候,标签之间相互遮挡,使得图片的质量下降。话不多说,怎么实现这个过程,见下面步骤。在这个文件下面找到下面标红这一行,注释掉,然后进行推理,就不会有标签信息了。v5就比较简单了,网上有很多。这边我也列出来吧,方便大家使用。然后将hide-labels改为True就可以。在v5工程根目录下找到detect.py文件。就可以实现和上面v8一样的效果了。

Z1986185459的博客 7282

手把手教你用Apple Developer App完成苹果开发者账号注册(含证件验证失败解决方案)

本文详细指导如何通过Apple Developer App完成苹果开发者账号注册,特别针对证件验证失败问题提供解决方案。从准备工作到注册流程,再到验证失败的处理方法,帮助开发者顺利完成注册,避免常见错误。

moss5的博客 1159

YOLOv8修改输出文件夹位置,按日期生成文件夹,包含图片标签文本

YOLOv8修改输出文件夹位置,按日期和运行次数生成文件夹,文件夹中包含检测后图片和对应的标签文本。

记录自己的学习历程。 5845

探索Python融合地学:一文解决osgeo库安装失败问题

总结一下,要安装osgeo模块,关键在GDAL依赖库的安装,如果能够顺利安装GDAL依赖库,因其是osego的模块,因此osgeo的部分模块也能够得到自动安装,此时再运行代码,发现代码并不报错,能够正常运行了。第一步,我们要安装imagecodecs库,它支持多种常见的图像格式,当然也包含我们的目标tif格式,为方便后续的图像处理和安装osgeo模块,先安装此库。目前GDAL已经更新到了3.10版本,这里主要看你的Python版本是上面,小编用的是Python3.13,电脑是64位的,因此,我们选择。

Promising_GEO的博客 5461

如何判断一个程序员的技术比你强?

技术大佬与普通程序员之间存在明显的认知差异:前者善于将复杂问题抽象为经典计算机科学问题,用声明式代码替代过程式逻辑;对异常和边界条件极度敏感,具备系统化的排查方法论;代码追求高可读性而非炫技,且执着于底层原理研究。这种技术压制体现在解决问题的确定性上——通过扎实的理论功底和工程直觉,快速定位问题本质,而非依赖试错或搜索。真正的技术实力源于对底层逻辑的深刻理解和对系统稳定性的敬畏。

wldtzzming的专栏 1088
上一篇: make_image_classifier 分类模型
下一篇: 微信小程序文件上传file
model2005
博客等级 码龄18年 97粉丝 112原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值