当前位置: 首页 > news >正文

ValueError: bbox_params must be specified for bbox transformations

错误 ValueError: bbox_params must be specified for bbox transformations 是因为使用了需要处理边界框(bboxes)的增强操作,但在 albumentations.Compose 中没有正确设置bbox_params 参数。

bbox_params 是用来指定如何处理边界框的配置。

解决方案

修改数据增强部分代码,添加 bbox_params 参数。

from albumentations import BboxParamstransform = A.Compose([A.HorizontalFlip(p=0.5),A.VerticalFlip(p=0.5),A.RandomRotate90(p=0.5),A.ShiftScaleRotate(shift_limit=0.1, scale_limit=0.2, rotate_limit=20, p=0.7),A.RandomBrightnessContrast(p=0.2),A.GaussNoise(var_limit=(10.0, 50.0), p=0.3),],bbox_params=BboxParams(format='pascal_voc',  # 边界框的格式,Pascal VOC 为 [xmin, ymin, xmax, ymax]label_fields=['class_labels'],  # 必须指定与边界框对应的标签min_visibility=0.2,  # 边界框最小可见性,小于此值将被移除)
)

同步修改其他部分代码

在调用 transform 的地方,需要为 bboxes 提供对应的 class_labels,例如:

augmented = transform(image=image,bboxes=[[xmin, ymin, xmax, ymax]],  # 提供原始边界框坐标class_labels=["object"]  # 对应的标签,与 bbox_params 中的配置匹配
)

完整的增强示例代码

以下是如何应用增强的完整示例:

from albumentations import Compose, HorizontalFlip, VerticalFlip, RandomRotate90, ShiftScaleRotate, RandomBrightnessContrast, GaussNoise, BboxParams
import cv2# 数据增强配置
transform = Compose([HorizontalFlip(p=0.5),VerticalFlip(p=0.5),RandomRotate90(p=0.5),ShiftScaleRotate(shift_limit=0.1, scale_limit=0.2, rotate_limit=20, p=0.7),RandomBrightnessContrast(p=0.2),GaussNoise(var_limit=(10.0, 50.0), p=0.3),],bbox_params=BboxParams(format='pascal_voc',label_fields=['class_labels'],min_visibility=0.2,)
)# 示例图片和边界框
image = cv2.imread('example.jpg')
bboxes = [[50, 50, 200, 200]]  # 示例边界框,格式为 [xmin, ymin, xmax, ymax]
class_labels = ["object"]  # 示例标签# 执行数据增强
augmented = transform(image=image, bboxes=bboxes, class_labels=class_labels)
aug_image = augmented['image']
aug_bboxes = augmented['bboxes']
aug_labels = augmented['class_labels']# 保存增强结果
cv2.imwrite('augmented_image.jpg', aug_image)
print("增强后的边界框:", aug_bboxes)

关键点总结

  1. 添加 bbox_params

    • 指定边界框格式:'pascal_voc' 对应 [xmin, ymin, xmax, ymax]。
    • 设置 label_fields,对应每个边界框的标签。
  2. 调整调用方式

    • 每次调用增强时,提供 bboxesclass_labels
  3. 边界框过滤

    • 使用 min_visibility 确保增强后边界框的可见性,避免完全失效的边界框。

相关文章:

ValueError: bbox_params must be specified for bbox transformations

错误 ValueError: bbox_params must be specified for bbox transformations 是因为使用了需要处理边界框(bboxes)的增强操作,但在 albumentations.Compose 中没有正确设置bbox_params 参数。 bbox_params 是用来指定如何处理边界框的配置。…...

挂壁式空气净化器哪个品牌的质量好?排名top3优秀产品测评分析

随着挂壁式空气净化器市场的不断扩大,各类品牌与型号琳琅满目。但遗憾的是,一些跨界网红品牌过于追求短期效益,导致产品在净化效果与去除异味方面表现平平,使用体验不佳,甚至可能带来二次污染风险,影响人体…...

钉钉数据如何高效集成到金蝶云星空系统

钉钉数据集成到金蝶云星空的技术案例分享 在企业日常运营中,办公用品采购流程的高效管理至关重要。为了实现这一目标,我们采用了轻易云数据集成平台,将钉钉中的采购申请单数据无缝对接到金蝶云星空系统中。本次案例将详细解析【办公用品采购…...

躺平成长-腾讯云数据库(又消失了一次)

开源竞争: 当你无法彻底掌握技术的时候,你就开源这个技术,形成更多的技术依赖,你会说 这不就是在砸罐子吗?一个行业里面总会有人砸罐子的,你不如先砸罐子,还能听个响声。 数据库的里面清洁的数据…...

初学 flutter 问题记录

windows搭建flutter运行环境 一、运行 flutter doctor遇到的问题 Xcmdline-tools component is missingRun path/to/sdkmanager --install "cmdline-tools;latest"See https://developer.android.com/studio/command-line for more details.1)cmdline-to…...

Hadoop的MapReduce详解

文章目录 Hadoop的MapReduce详解一、引言二、MapReduce的核心概念1、Map阶段1.1、Map函数的实现 2、Reduce阶段2.1、Reduce函数的实现 三、MapReduce的执行流程四、MapReduce的使用实例Word Count示例1. Mapper类2. Reducer类3. 执行Word Count 五、总结 Hadoop的MapReduce详解…...

全新配置ubuntu18.04深度学习环境

1、下载显卡驱动 1.1、驱动下载 连接:显卡驱动 手动驱动搜索-》查找-》查看-》下载 下载可使用指令 wget https://us.download.nvidia.com/XFree86/Linux-x86_64/535.216.01/NVIDIA-Linux-x86_64-535.216.01.run 2、下载安装cuda12.0 wget https://developer.do…...

持续集成与持续部署:CI/CD实现教程

以下是一个基于常见工具实现 CI/CD 的基本教程示例,这里以 Git、Jenkins、Maven(用于 Java 项目构建和管理依赖,其他语言项目可替换为对应构建工具)以及 Docker(用于容器化部署,非必需但很常用)…...

深度学习实验十二 卷积神经网络(3)——基于残差网络实现手写体数字识别实验

目录 一、模型构建 1.1残差单元 1.2 残差网络的整体结构 二、统计模型的参数量和计算量 三、数据预处理 四、没有残差连接的ResNet18 五、带残差连接的ResNet18 附:完整的可运行代码 实验大体步骤: 先前说明: 上次LeNet实验用到的那…...

Linux系统如何排查端口占用

如何在Linux系统中排查端口占用 在Linux系统中,当您遇到网络服务无法启动或响应异常的情况时,可能是因为某个特定的端口已经被其他进程占用。这时,您需要进行端口占用情况的排查来解决问题。本文将介绍几种常用的命令行工具和方法&#xff0…...

Linux常用命令之id命令详解

id命令详解 id 命令在 Linux 和 Unix 系统中用于显示用户的标识信息,包括用户ID(UID)、组ID(GID)以及用户所属的附加组。这个命令对于系统管理员和开发者来说非常有用,因为它能帮助他们确认运行命令或脚本…...

WGCLOUD如何部署在ARM平台

WGCLOUD是一款开源免费的运维平台,非常强大方便,可以帮我们提高运维效率 我们项目中,大部分是ARM的服务器,那么如何部署WGCLOUD呢,其实挺简单的 首先是部署服务端server 我们只要安装好对应ARM版本的JDK,…...

K8S + Jenkins 做CICD

前言 这里会做整体CICD的思路和流程的介绍,会给出核心的Jenkins pipeline脚本,最后会演示一下 实验/实操 结果 由于整体内容较多,所以不打算在这里做每一步的详细演示 - 本文仅作自己的实操记录和日后回顾用 要看保姆式教学的可以划走了&…...

HarmonyOS4+NEXT星河版入门与项目实战(11)------Button组件

文章目录 1、控件图解2、案例实现1、代码实现2、代码解释3、运行效果4、总结1、控件图解 这里我们用一张完整的图来汇整 Button 的用法格式、属性和事件,如下所示: 按钮默认类型就是胶囊类型。 2、案例实现 这里我们实现一个根据放大和缩小按钮来改变图片大小的功能。 功…...

小米note pro一代(leo)线刷、twrp、magisk、TODO: android源码编译

本文主要说android5 整体思路 android 5.1 twrp magisk Zygisk(Riru) Dreamland(xposed) Riru不支持android5.1, 因此只能选择Zygisk : 如果你正在使用 Android 5,你必须使用 Zygisk 因为 Riru 并不支持 Android 5. 基于magisk之上的xposed 其中提到的 作者…...

鸿蒙开发Hvigor插件动态生成代码

Hvigor允许开发者实现自己的插件,开发者可以定义自己的构建逻辑,并与他人共享。Hvigor主要提供了两种方式来实现插件:基于hvigorfile脚本开发插件、基于typescript项目开发。下面以基于hvigorfile脚本开发插件进行介绍。 基于hvigorfile脚本…...

使用ENSP实现静态路由

一、双路由器静态路由 1.项目拓扑 2.项目实现 (1)路由器AR1配置 进入系统试图 sys将路由器命名为R1 sysname R1进入g0/0/0接口 int g0/0/0将g0/0/0接口IP地址配置为1.1.1.1/24 ip address 1.1.1.1 24进入g0/0/1接口 int g0/0/1将g0/0/1接口IP地址配置为192.168.1.1/24 ip ad…...

Java String 字符串常用操作

一、Java String 字符串常用操作 1、替换 Java字符模板替换 public static final String temp"private {0} {1};";public static void main(String[] args) {System.out.println(MessageFormat.format(temp,"String","str"));} replaceAll替换…...

4.4 MySQL 触发器(Trigger)

触发器是一种特殊的数据库对象,在特定事件(如INSERT、UPDATE或DELETE)触发时自动执行定义好的操作。它可以帮助我们实现更高效的数据管理和业务规则的约束。 1. 简介 1.1 什么是触发器 触发器(Trigger)是由用户定义的…...

C语言——break、continue、goto

目录 一、break 二、continue 1、在while循环中 2、在for循环中 三、go to 一、break 作用是终止循环&#xff0c;在循环内遇到break直接就跳出循环。 注&#xff1a; 一个break语句只能跳出一层循环。 代码演示&#xff1a; #include<stdio.h>void test01() {for (…...

CodeBlocks高效开发环境配置指南:从字体优化到智能编码

1. CodeBlocks开发环境基础配置 刚接触CodeBlocks时&#xff0c;我经常被默认的界面和功能搞得头晕眼花。经过多年实战&#xff0c;我发现合理的初始配置能让开发效率提升至少50%。我们先从最基础的视觉优化开始。 字体设置是影响编码舒适度的首要因素。默认的字体大小在1080p屏…...

突破平台限制:res-downloader高效捕获网络资源的全方位解决方案

突破平台限制&#xff1a;res-downloader高效捕获网络资源的全方位解决方案 【免费下载链接】res-downloader 视频号、小程序、抖音、快手、小红书、直播流、m3u8、酷狗、QQ音乐等常见网络资源下载! 项目地址: https://gitcode.com/GitHub_Trending/re/res-downloader 在…...

Axios知识

安装:npm方式&#xff1a;npm install axios直接方式&#xff1a;<script src"https://unpkg.com/axios/dist/axios.min.js"></script>实例&#xff1a;// 发起一个post请求 axios({method: post,url: /user/12345,data: { // 向后端传参数firstName: Fr…...

告别复杂配置!OSHI+JNA五分钟搞定Windows/Linux/macOS硬件信息采集

五分钟极简指南&#xff1a;用OSHIJNA实现全平台硬件监控零门槛接入 运维工程师小张最近接手了公司混合云环境下的服务器监控任务。当他面对Windows服务器、Linux虚拟机、macOS开发机三种不同系统时&#xff0c;传统方案需要分别调用WMI、/proc文件系统和system_profiler&#…...

YOLOv11检测头架构演进与工程实现剖析

1. YOLOv11检测头架构演进解析 目标检测领域近年来发展迅猛&#xff0c;YOLO系列作为其中的佼佼者&#xff0c;每次迭代都带来显著突破。YOLOv11的检测头设计堪称该系列迄今为止最精妙的架构创新&#xff0c;它彻底重构了传统检测头的任务处理方式。我曾在多个工业项目中尝试过…...

YOLOv8特征可视化实战:如何用一行代码查看模型内部特征图(附完整代码)

YOLOv8特征可视化实战&#xff1a;如何用一行代码查看模型内部特征图&#xff08;附完整代码&#xff09; 在计算机视觉领域&#xff0c;YOLO系列模型因其卓越的实时检测性能而广受欢迎。但对于开发者而言&#xff0c;仅仅使用模型进行预测往往不够——理解模型内部如何"思…...

保姆级教程:手把手教你用Python+Control库仿真PLL噪声传递函数

保姆级教程&#xff1a;手把手教你用PythonControl库仿真PLL噪声传递函数 锁相环&#xff08;PLL&#xff09;作为现代电子系统中的核心组件&#xff0c;其噪声特性直接影响通信质量、时钟精度等关键指标。但教科书上复杂的传递函数公式总让人望而生畏——直到你发现用几行Pyth…...

电源管理入门-4子系统reset

之前的文章电源管理入门-1关机重启详解介绍了整机SoC的重启也可以说是reset&#xff0c;那么子系统的reset&#xff0c;例如某个驱动&#xff08;网卡、USB等&#xff09;或者某个子系统&#xff08;NPU、ISP等运行在独立的M核或者R核上的AI系统&#xff09;&#xff0c;这些零…...

如何高效使用Super IO插件:Blender批量导入导出终极指南

如何高效使用Super IO插件&#xff1a;Blender批量导入导出终极指南 【免费下载链接】super_io blender addon for copy paste import / export 项目地址: https://gitcode.com/gh_mirrors/su/super_io 想要在Blender中实现一键导入导出模型和图像吗&#xff1f;Super I…...

告别云端依赖:AnythingLLM本地Whisper实现完全离线语音转文字

告别云端依赖&#xff1a;AnythingLLM本地Whisper实现完全离线语音转文字 【免费下载链接】anything-llm The all-in-one AI productivity accelerator. On device and privacy first with no annoying setup or configuration. 项目地址: https://gitcode.com/GitHub_Trendi…...