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

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 BboxParams

transform = 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.kler.cn/a/407115.html

相关文章:

  • 微信分账系统供应链分润微信支付 (亲测源码)
  • 基于物联网设计的人工淡水湖养殖系统(华为云IOT)_253
  • MySQL数据库学习(持续更新ing)
  • 分类算法——基于heart数据集实现
  • transformer.js(一):这个前端大模型运行框架的可运行环境、使用方式、代码示例以及适合与不适合的场景
  • 图像增强夜视仪行业全面而深入的分析
  • path.resolve、path.join
  • mfc140u.dll是什么文件,mfc140u.dll怎么解决【最新方法】
  • 碳化硅陶瓷膜的最佳使用期限
  • 重生之我在学环境变量
  • 信号signal
  • 【转】std::unique_ptr 删除器的秘密
  • 软件工程复习知识点
  • Mistral推出“Le Chat”,对标ChatGPT
  • pytest日志总结
  • 【ChatGPT】如何设计问题让ChatGPT生成创意写作内容
  • docker 容器的生命周期
  • 禁止Chrome的自动升级
  • MTK Android12 user版本MtkLogger
  • 【编译链接】什么是Copy Table及如何使用Copy Table
  • 【MYSQL】七种 SQL JOINS 的实现
  • RabbitMQ学习-One
  • 关于图论建模的一份介绍
  • 代理IP在后端开发中的应用与后端工程师的角色
  • 企业级服务器BIOS配置
  • 培训机构中教务系统的架构设计与实现