【图像标注技巧】目标检测图像标注技巧

介绍一些图像标注技巧。之前引用过别人的文章 yolo目标检测 技巧 trick 提升模型性能,deep research检测调研报告也可以进行参考。

拉框类的标注,如果你不确定哪种方法好,你可以把所标注区域的都剪切出来,然后站在屏幕一米之外眯起眼睛,看看能否区分不同的标注类别,人工模拟卷积过程。

1.模糊、重合图像

参考d-fine的标注方法,模糊、重合物体可以这样标注。
在这里插入图片描述
前后重合(例如近处一个人张开手,远处在他的手下面还有一个人),可以将两个人分别标注;模糊目标也可以整体标注,但是置信度可能较低。

2.过大的目标

假设一张图像中,人体比例大于画面整体70%,那么你可以把图像处理成下图那样(加个黑边),然后再进行标注、模型训练。推理的时候,如果需要,也可以把图像进行类似的加黑边处理。
在这里插入图片描述

3.一般原则

  1. 距离太远⽆法判断,不标。角度相似的重复样本只取一张 (除非角度有变化,比如在侧面和正面拍摄了同一台笔记本)。
  2. 主要目标被异物遇到遮挡⼤于 70%时,⽆需标注。(假设一个人站在一块大模板上,只漏出脖子和胸部,那么大概率你不能把他标成“人体”;个人感觉,在这样的条件下即便不标注,模型也有一定的概率识别出“人体”)。
  3. 只能看到⼀个⽬标的局部图,占据整体图像⾯积超过70%且⽆法分辨具体⽬标,不标(假设你在距离一台施工机械一米的地方拍了张照片,你只能看到黄色的车体结构,但是无法分辨挖掘机/吊车等具体类型,此时可以不标注,但是模型仍有可能识别出某一种施工机械)。
  4. 对于过明,过暗,模糊,⼈⼯标注图⽚(图中有标注框)时,不标。

4.细长目标

可以从中间断开,例如一根电线被电线杆阶段,则可以分成两个区域,标注电线杆左边和右边的电线,如红色框:
在这里插入图片描述
如果中间没有分割,例如一条垂直的细线,那么你可以把标注框稍微留宽一点(也可以先贴着边缘标注,然后用代码统一沿较细的边按照10%等比例进行放大,这个方法试过,即便没有提升,也不会有太大的损失),例如左右各延长1/3:
在这里插入图片描述

5.倾斜目标

建议用旋转目标检测或分割解决。图中红框有些超过边界了。

6.零散目标

假设着火了,4条火线聚在一起,远处有一条短的火线,且距离较远,那么也许可以使用右图的绿框进行标注(尽可能让画框中的火焰面积占比大一些),但是没有验证过。

在这里插入图片描述

7.L形目标

例如下图近处的金属杆子,呈现L形,用两个框标注L的每一条臂。
在这里插入图片描述

8.易混淆目标

例如吊车、斗臂车,二者底盘几乎一致(都是黄色的多轮卡车),那么在标注的时候就可以先标出施工机械整体,再标出标“底盘”、“吊臂”、“载人斗臂”等(可以不标底盘),通过组合关系进行判断(例如在施工机械整体大框中,有一个吊臂的框,那么大概率这就是一辆吊车臂车)。有时候你进能看到吊车的吊臂,这时候“吊臂”标签就发挥了作用。

有其他类似的车辆,例如普通的城市救援黄色多轮卡车,你可以尝试仅仅将其标注为底盘,然后通过斗臂和吊臂来判断。你也可以将其标注为“城市救援车辆”,或者直接不对其做任何标注,可以试一下哪种方法效果好。

假设你正在识别地面上的深坑。水坑反光会对你造成影响,那么你就可以增加一个类别“水坑反光”,或者训练一个二分类模型,区别深坑和水坑。玻璃瓶塑料瓶也可以采取类似的手段,先识别瓶子,再做分类。

假设你在识别电线杆上的裂缝,那么先识别电线杆,再判断你检测到的裂缝是否位于电线杆内部,也是不错的选择。

9.模型建议

以下是其他大模型给出的调研报告,截取一部分内容,完整内容请参考请参考文章deep research检测调研报告

9.1复杂背景、模糊重合解决

  1. 专注标注: 标注时需要高度集中,仔细区分目标物体与背景。
  2. 紧密边界: 确保边界框紧密贴合目标,排除不相关的背景 。
  3. 明确指南:标注指南中应包含如何处理模糊边界(例如阴影、毛发、烟雾等)的规则,明确是应该包含还是排除这些区域 。
  4. 针对性测试: 在模型评估时,应特别关注其在复杂背景和杂乱环境下的表现

9.2 小目标

可以使用sahi等框架,更精细地去识别小刮擦痕迹、破损等。具体训练方法可以参考这个文章)。以下模型调研给出的方案也可以:
5. 保持图像分辨率: 尽可能使用高分辨率的原始图像进行标注和训练,避免信息损失 。
6. 图像切片 (Tiling):对于非常高分辨率的图像,可以考虑将其切割成多个较小的图块(Tiles),然后在每个图块上进行标注和检测,最后再将结果合并 。
7. 精细标注: 标注时利用缩放功能仔细定位小物体的边界。确保所有小物体都被一致地标注,避免遗漏 。
8. 模型适配:可能需要调整模型架构,例如增加专门用于检测小物体的特征层或检测头 。
9. 数据增强:使用数据增强技术(如旋转、翻转、色彩抖动、复制粘贴小物体等)来增加小物体样本的多样性和数量 。
10. 测试时放大:在测试阶段将输入图像放大,有时可以提高小物体检测性能,即使训练时没有专门标注小物体 。

9.3 共性原则

  1. 利用标注工具提供的缩放(Zoom)功能,以便在像素级别进行精确定位 。
  2. 仔细调整边界框的边缘,使其与物体的轮廓对齐,特别是对于不规则形状的物体 。
  3. 尽量减少边界框内的背景区域。如果确实需要包含少量背景(例如,为了保持一定的上下文或由于工具限制),应在整个数据集中保持一致的填充(Padding)策略**(可以借助代码实现,参见4。细长目标**),但通常建议最小化填充 。
  4. 对于图像中出现的同一类别的多个实例,应为每个实例单独绘制边界框,而不是将它们框在一起 。
  5. 边界框(Bounding Box)应紧密地包围目标物体,覆盖其所有可见部分,同时避免包含过多的背景区域,也不能裁剪掉物体的任何部分 。理想情况下,边界框的边缘应紧贴物体最外沿的像素 。

9.4遮挡 (Occlusion):

当一个物体被另一个物体或背景部分阻挡时,就会发生遮挡 。这是现实世界图像中非常常见且具有挑战性的问题 。

标注策略: 关于如何标注被遮挡物体,存在不同的实践方法,因此遵循项目定义的明确、一致的指南至关重要 。
一种常见的做法是,估计并标注出被遮挡物体的完整边界,即使只有部分可见 。这种方法旨在帮助模型学习即使在部分可见的情况下也能识别整个物体。

另一种做法是,仅紧密标注物体的可见部分 。这种方法侧重于提供模型当前可见区域的精确信息。选择哪种策略取决于模型的预期行为和应用场景。

如果标注工具支持,可以使用特定的标签或属性(例如 Pascal VOC 或 CVAT 中的 occluded 标志 或自定义属性)来明确指示遮挡情况。

对于严重遮挡或形状复杂的物体,可以考虑使用实例分割 或多边形标注 代替边界框。在某些场景下,显式地标注那些容易发生遮挡的边界情况(例如,体育比赛中球员聚集的区域)可能有助于模型训练 。通过在包含不同遮挡程度图像的数据集上进行微调,可以提高模型处理遮挡的鲁棒性 。

9.5 截断

当物体的一部分超出了图像的边界时,即为截断 。

标注策略: 通常的做法是标注物体的可见部分。在支持此功能的格式中(如 Pascal VOC),应使用 truncated 标志(通常为 1)来表明该物体被截断 。同样,处理截断物体的方式应在标注指南中明确规定,并保持一致性 。

处理遮挡和截断物体时,存在一种内在的张力:是优先保证边界框对可见部分的紧密贴合 ,还是优先估计物体的完整范围以保持物体身份的完整性 ?这没有绝对统一的标准,凸显了制定清晰、具体的项目标注指南的必要性。选择的策略将直接影响模型如何学习处理这些部分可见的情况。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/77714.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数字信号处理技术架构与功能演进

数字信号处理(DSP)是通过数字运算实现信号分析、变换、滤波及调制解调的技术领域,其发展过程与技术应用如下: 一、定义与核心功能 技术定义:通过算法将模拟信号转换为数字形式进行处理,具有高精度、可编程…

浏览器上下文通信

文章目录 浏览器上下文通信同源通信同源通信流程同一浏览器上下文通信不同浏览器上下文通信 跨域通信前端和前端跨域前端和后端跨域 浏览器上下文通信 浏览器上下文通信分为两种:同源和跨源。同样的同源通信也分为同一浏览器上下文和不同的浏览器上下文。 同源通信…

Linux 离线部署 Docker 18.06.3 终极指南(附一键安装卸载脚本)

Linux 离线部署 Docker 18.06.3 终极指南(附一键安装/卸载脚本) 摘要:本文针对无外网环境的 Linux 服务器,提供基于二进制包的 Docker 18.06.3 离线安装全流程指南。包含自动化脚本设计、服务配置优化及安全卸载方案,…

【前端】跟着maxkb学习logicflow流程图画法

文章目录 背景1. 选定学习对象-maxkb应用逻辑编排2. 确定实现框架3. 关键逻辑:查看app-node.js4. 学习开始节点绘制流程数据形式 5. 给节点增加表单输入框遇到过的问题 背景 看看前端如何绘制流程图,界面好看点。 "logicflow/core": "1.…

Android 12系统静态壁纸深度定制指南

1. 需求背景与实现原理 在Android 12系统ROM定制开发中,扩展静态壁纸功能需要深入理解WallpaperManagerService的架构体系。系统壁纸管理通过双端协作实现: WallpaperManagerService(frameworks层):负责壁纸状态管理、…

相得益彰 — 基于 GraphRAG 事理图谱驱动的实时金融行情新闻资讯洞察

*本文为亚马逊云科技博客文章,仅用于技术分享,不构成投资建议或金融决策支持。文中涉及的公司名称仅用于技术示例,不代表亚马逊云科技观点或与这些公司的商业合作关系。 背景介绍 在当今这个信息爆炸的时代,金融市场每天都在产生…

OpenCV---图像预处理(四)

OpenCV—图像预处理(四) 文章目录 OpenCV---图像预处理(四)九,图像掩膜9.1 制作掩膜9.2 与运算9.3 颜色替换9.3.19.3.2 颜色替换 十,ROI切割十 一,图像添加水印11.1模板输入11.2 与运算11.3 图像…

【MySQL】:数据库事务管理

一:学习路径 (1)下载安装mysql (2)学习语言:SQL(操作数据库) (3)mysql集群(提升数据库存储效率) (4)SQL使用,M…

内存函数和动态内存管理

目录 一、memcpy库函数介绍 1. memcpy的使用 2. memcpy的模拟 二、memmove库函数介绍 1. memmove的使用 2. memmove的模拟 三、memset库函数介绍 四、memcmp库函数介绍 五、动态内存中malloc和free 1. malloc 2. free 六、动态内存中calloc和realloc 1. calloc 2. realloc 七、…

yarn的基本介绍

1.Hadoop的三大结构及各自的作用: Hadoop是一个开源的分布式计算框架,它主要包括三大核心组件:HDFS(Hadoop Distributed File System)、YARN(Yet Another Resource Negotiator)和MapReduce。以…

STM32的启动方式

目录 一、从主闪存存储器启动(Main Flash Memory) 二、从系统存储器启动(System Memory) 三、从内置SRAM启动(Embedded SRAM) 四、从外挂存储介质启动的实现方式 1. 存储介质选型 2. 硬件连接 3. 引…

STC定时器频率占空比程序

// // 一、宏定义区 // #include <STC15.H> //头文件 #include <intrins.h> //库函数文件 #define FOSC 12000000L //IRC频率 typedef …

数据库服务器架构

ORM ORM&#xff08;Object Relational Mapping&#xff09;&#xff1a;对象与关系数据之间的映射 映射关系表&#xff1a; 类&#xff08;class&#xff09;—— 数据库的表&#xff08;table&#xff09; 对象&#xff08;object&#xff09;——记录&#xff08;record…

【论文速递】2025年04周 (Robotics/Embodied AI/LLM)

目录 DeepSeek-R1: Incentivizing Reasoning Capability in LLMs via Reinforcement Learning摘要 Evolving Deeper LLM Thinking摘要 Kimi k1.5: Scaling Reinforcement Learning with LLMs摘要 Agent-R: Training Language Model Agents to Reflect via Iterative Self-Train…

FortiAI 重塑Fortinet Security Fabric全面智能化进阶

专注推动网络与安全融合的全球性综合网络安全解决方案供应商 Fortinet&#xff08;NASDAQ&#xff1a;FTNT&#xff09;&#xff0c;近日宣布&#xff0c;旗下 Fortinet Security Fabric 安全平台成功嵌入了 FortiAI 关键创新功能。这一举措将有效增强用户对各类新兴威胁的防护…

汽车免拆诊断案例 | 2019款大众途观L车鼓风机偶尔不工作

故障现象 一辆2019款大众途观L车&#xff0c;搭载DKV发动机和0DE双离合变速器&#xff0c;累计行驶里程约为8万km。车主进厂反映&#xff0c;鼓风机偶尔不工作。 故障诊断  接车后试车&#xff0c;鼓风机各挡位均工作正常。用故障检测仪检测&#xff0c;空调控制单元&#x…

MySQL为什么默认使用RR隔离级别?

大家好&#xff0c;我是锋哥。今天分享关于【MySQL为什么默认使用RR隔离级别?】面试题。希望对大家有帮助&#xff1b; MySQL为什么默认使用RR隔离级别? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 MySQL 默认使用 RR&#xff08;Repeatable Read&#xff09;…

目标检测篇---R-CNN梳理

目标检测系列文章 第一章 R-CNN 目录 目标检测系列文章&#x1f4c4; 论文标题&#x1f9e0; 论文逻辑梳理1. 引言部分梳理 (动机与思想) &#x1f4dd; 三句话总结&#x1f50d; 方法逻辑梳理&#x1f680; 关键创新点&#x1f517; 方法流程图补充边界框回归 (BBR)1. BBR 的…

Java技术栈 —— 基本规范

Java技术栈 —— 基本规范 一、接口文档生成工具二、接口设计2.1 开发顺序2.2 接口规范 三、数据类封装 一、接口文档生成工具 有很多jar包都支持swagger的接口文档&#xff0c;这样方便了接口测试&#xff0c;不需要用apifox自己写接口&#xff0c;直接调用文档里的swagger接…

Django ORM 定义模型

提示&#xff1a;定义模型字段的类型 文章目录 一、字段类型二、字段属性三、元信息 一、字段类型 常用字段 字段名描述备注AutoFieldint 自增必填参数 primary_keyTrue&#xff0c;无该字段时&#xff0c;django自动创建一个 BigAutoField&#xff0c;一个model不能有两个Au…