如何使用Albumentations 对目标检测任务做增强

BOX_COLOR = (255, 0, 0) # Red

TEXT_COLOR = (255, 255, 255) # White

def visualize_bbox(img, bbox, class_name, color=BOX_COLOR, thickness=2):

“”“Visualizes a single bounding box on the image”“”

x_min, y_min, w, h = bbox

x_min, x_max, y_min, y_max = int(x_min), int(x_min + w), int(y_min), int(y_min + h)

cv2.rectangle(img, (x_min, y_min), (x_max, y_max), color=color, thickness=thickness)

((text_width, text_height), _) = cv2.getTextSize(class_name, cv2.FONT_HERSHEY_SIMPLEX, 0.35, 1)

cv2.rectangle(img, (x_min, y_min - int(1.3 * text_height)), (x_min + text_width, y_min), BOX_COLOR, -1)

cv2.putText(

img,

text=class_name,

org=(x_min, y_min - int(0.3 * text_height)),

fontFace=cv2.FONT_HERSHEY_SIMPLEX,

fontScale=0.35,

color=TEXT_COLOR,

lineType=cv2.LINE_AA,

)

return img

def visualize(image, bboxes, category_ids, category_id_to_name):

img = image.copy()

for bbox, category_id in zip(bboxes, category_ids):

class_name = category_id_to_name[category_id]

img = visualize_bbox(img, bbox, class_name)

plt.figure(figsize=(12, 12))

plt.axis(‘off’)

plt.imshow(img)

3、获取图像和标注

=========

在此示例中,我们将使用来自COCO数据集的图像,该图像具有两个关联的边界框。 该映像位于http://cocodataset.org/#explore?id=386298

从磁盘加载图像

image = cv2.imread(‘images/000000386298.jpg’)

image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)

用坐标和类标签定义两个边界框

这些边界框的坐标使用coco格式声明。 每个边界框使用四个值[x_min, y_min, width, height]进行描述。 有关边界框坐标的不同格式的详细说明,请参阅有关边界框的文档文章-https://albumentations.ai/docs/getting_started/bounding_boxes_augmentation/。

bboxes = [[5.66, 138.95, 147.09, 164.88], [366.7, 80.84, 132.8, 181.84]]

category_ids = [17, 18]

We will use the mapping from category_id to the class name

to visualize the class label for the bounding box on the image

category_id_to_name = {17: ‘cat’, 18: ‘dog’}

展示图像的边框

visualize(image, bboxes, category_ids, category_id_to_name)

4、使用RandomSizedBBoxSafeCrop保留原始图像中的所有边界框

========================================

RandomSizedBBoxSafeCrop crops a random part of the image. It ensures that the cropped part will contain all bounding boxes from the original image. Then the transform rescales the crop to height and width specified by the respective parameters. The erosion_rate parameter controls how much area of the original bounding box could be lost after cropping. erosion_rate = 0.2 means that the augmented bounding box’s area could be up to 20% smaller than the area of the original bounding box.

RandomSizedBBoxSafeCrop裁剪图像的随机部分。 它确保裁剪的部分将包含原始图像的所有边界框。 然后,变换会将作物重新缩放为相应参数指定的高度和宽度。 erosion_rate参数控制裁剪后可能丢失原始边界框的面积。 frosting_rate = 0.2表示扩充后的边界框的面积可能比原始边界框的面积小20%。

5、定义增强管道

========

transform = A.Compose(

[A.RandomSizedBBoxSafeCrop(width=448, height=336, erosion_rate=0.2)],

bbox_params=A.BboxParams(format=‘coco’, label_fields=[‘category_ids’]),

)

6、输入用于增强的图像和边框

==============

我们固定随机种子是为了可视化目的,因此增强将始终产生相同的结果。 在真实的计算机视觉管道中,您不应该在对图像应用转换之前固定随机种子,因为在这种情况下,管道将始终输出相同的图像。 图像增强的目的是每次使用不同的变换。

random.seed(7)

transformed = transform(image=image, bboxes=bboxes, category_ids=category_ids)

visualize(

transformed[‘image’],

transformed[‘bboxes’],

transformed[‘category_ids’],

category_id_to_name,

)

7、其他不同随机种子的示例

=============

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

img

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注Python)

mg.cn/img_convert/9f49b566129f47b8a67243c1008edf79.png)

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注Python)

img
  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: albumentations 是一个 Python 库,用于图像增强和数据增强。它支持目标检测任务,可以用于生成随机变换和增强,以提高模型的鲁棒性和泛化能力。它提供了许多预定义的变换和增强,如旋转、缩放、裁剪、翻 ### 回答2: Albumentations 是一个功能强大的图像增强库,支持目标检测任务。在目标检测中,图像增强是一种重要的预处理技术,可以提高模型的性能和鲁棒性。 Albumentations 提供了许多图像增强操作,包括旋转、裁剪、缩放、平移、翻转等。它还支持各种颜色空间转换和调整,如亮度、对比度、饱和度、色调等。这些增强操作可以应用于图像和对应的边界框,以保持目标的位置和大小的同步。 在目标检测中,数据增强对于解决数据不平衡、过拟合和模型泛化能力不足等问题非常重要。使用 Albumentations 可以生成更多多样化的训练样本,增加数据的多样性和数量,从而改善模型的泛化能力。 Albumentations 还提供了一些专门针对目标检测任务增强操作,如随机裁剪、填充、尺度变换等,这些操作可以保持目标的宽高比例,以避免目标失真。它还支持在增强后自动调整边界框的位置和大小。 在使用 Albumentations 进行目标检测时,需要注意选取适合任务和数据集的增强操作,并确保增强后的图像和边界框仍然保持有效的对应关系。此外,还需注意过度增强可能导致模型难以学习。 总之,Albumentations 提供了丰富的图像增强支持,可以帮助改善目标检测模型的性能和鲁棒性。通过合理选择和应用增强操作,可以增加数据的多样性和数量,提高模型的泛化能力和准确性。 ### 回答3: Albumentations 是一个功能强大的图像增强库,可以用于目标检测任务。它提供了一系列用于数据增强的方法,可以帮助我们扩充数据集,提高模型的泛化能力和鲁棒性。 对于目标检测任务Albumentations 提供了多种增强方法。首先,它包括了基本的几何变换,如缩放、旋转和平移等。这些方法可以帮助我们改变目标在图像中的位置和角度,增加数据的多样性。 此外,Albumentations 还提供了包括亮度、对比度、饱和度等颜色转换方法,可以改变图像的色彩特性。这些方法可以模拟不同的光照条件,使模型对不同亮度和颜色的目标有更好的识别能力。 另外,Albumentations 还提供了一些专门用于目标检测增强方法,如随机遮挡和挖空。随机遮挡可以模拟目标被其他物体遮挡的情况,挖空则可以模拟目标部分缺失的情况。通过使用这些方法,我们可以生成更具挑战性的数据,提高模型对目标部分遮挡或缺失的鲁棒性。 总之,Albumentations 是一个非常强大的图像增强库,能够帮助我们在目标检测任务中扩充数据集、提高模型的泛化能力和鲁棒性。通过使用 Albumentations,我们可以轻松地实现各种图像增强方法,并改善目标检测模型的性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值