当前位置: 首页 > 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 确保增强后边界框的可见性,避免完全失效的边界框。
http://www.lryc.cn/news/490276.html

相关文章:

  • 挂壁式空气净化器哪个品牌的质量好?排名top3优秀产品测评分析
  • 钉钉数据如何高效集成到金蝶云星空系统
  • 躺平成长-腾讯云数据库(又消失了一次)
  • 初学 flutter 问题记录
  • Hadoop的MapReduce详解
  • 全新配置ubuntu18.04深度学习环境
  • 持续集成与持续部署:CI/CD实现教程
  • 深度学习实验十二 卷积神经网络(3)——基于残差网络实现手写体数字识别实验
  • Linux系统如何排查端口占用
  • Linux常用命令之id命令详解
  • WGCLOUD如何部署在ARM平台
  • K8S + Jenkins 做CICD
  • HarmonyOS4+NEXT星河版入门与项目实战(11)------Button组件
  • 小米note pro一代(leo)线刷、twrp、magisk、TODO: android源码编译
  • 鸿蒙开发Hvigor插件动态生成代码
  • 使用ENSP实现静态路由
  • Java String 字符串常用操作
  • 4.4 MySQL 触发器(Trigger)
  • C语言——break、continue、goto
  • oracle数据恢复总结篇
  • 运维面试题.云计算面试题之四.K8S
  • el-select 和el-tree二次封装
  • C++11:多线程编程
  • 【H2O2|全栈】JS进阶知识(八)ES6(4)
  • OmniDiskSweeper :一款专为 macOS 设计的磁盘使用分析工具
  • 【什么是Redis?】
  • React第十六章(useLayoutEffect)
  • shell 基础知识2 ---条件测试
  • 【线程】Java线程操作
  • Linux内核