作者:Harpal Sahota
編譯:ronghuaiyang
導讀
實現了Google Research,Brain Team中的增強策略。
像許多神經網絡模型一樣,目標檢測模型在訓練大量數據時效果最好。通常情況下,可用的數據有限,世界各地的許多研究人員正在研究增強策略,以增加可用的數據量。谷歌的大腦團隊進行了一項這樣的研究,并發表在了一篇論文中,名為Learning Data Augmentation Strategies for Object Detection。在這篇論文中,作者確定了一組增強稱為策略,它對目標檢測問題表現良好。該策略通過增強搜索獲得,提高了通用模型的性能。
作者將增強策略定義為一組子策略。在模型進行訓練時,隨機選擇其中一個子策略用于增強圖像。在每個子策略中都有要依次應用于圖像的增強。每個轉換也有兩個超參數:概率和幅度。概率表示該增強將被應用的可能性,而幅度表示該增強的程度。下面的代碼顯示了本文中使用的策略:
policy = [
[(‘TranslateX_BBox’, 0.6, 4), (‘Equalize’, 0.8, 10)],
[(‘TranslateY_Only_BBoxes’, 0.2, 2), (‘Cutout’, 0.8, 8)],
[(‘Sharpness’, 0.0, 8), (‘ShearX_BBox’, 0.4, 0)],
[(‘ShearY_BBox’, 1.0, 2), (‘TranslateY_Only_BBoxes’, 0.6, 6)],
[(‘Rotate_BBox’, 0.6, 10), (‘Color’, 1.0, 6)],
]
在這個策略中有5個子策略,如果我們取第一個子策略,它就包含了TranslateX_BBox和Equalize增強。TranslateX_BBox操作在x軸上轉換圖像的幅度為4。在本例中,大小并不直接轉換為像素,而是根據大小縮放為像素值。該增強的概率也為0.6,這意味著如果該增強被選中,則應用該增強的概率為60%。
隨著每個增強都有一個相關的概率,引入了一個隨機的概念,給訓練增加了一定程度的隨機性??偟膩碚f,Brain Team已經提出了4個策略: v0, v1, v2和v3。本文中顯示了v0策略,其他三個策略包含更多的子策略,這些子策略具有幾種不同的轉換。總的來說,增加分為三類,作者定義為:
顏色操作: 扭曲顏色通道,不影響邊界框的位置。
幾何操作:幾何扭曲圖像,這相應地改變了邊界框的位置和大小。
包圍框操作:只會扭曲包圍框中包含的像素內容。
BBAug
那么BBAug)在這方面有什么貢獻呢?BBAug是一個python包,它實現了谷歌Brain Team的所有策略。這個包是一個包裝器,可以更容易地使用這些策略。實際的擴展是由優秀的imgaug包完成的。
上面顯示的策略應用于一個示例圖像,如下所示。每一行是一個不同的子策略,每一列是該子策略的不同運行。
正如你所看到的,在子策略的運行之間有一定程度的變化,因此給訓練增加了一定程度的隨機性。這只是BBAug實施的4個策略之一。要查看所有4個策略的完整可視化,請查看包的GitHub頁面:https://github.com/harpalsahota/bbaug。
該包還提供了一些有用的功能,比如定制策略的可能性,以及位于圖像外部的邊界框,如果它們部分位于圖像外部,則會被自動刪除或剪切。例如,在下面的圖像中,應用了平移增強,將邊界框部分推到圖像外部。你可以看到新的邊界框已經縮小以適應這一點。
也可以創建只影響邊界框區域的增強。在下圖中,solarisaugmentation只應用于邊界框區域:
用隨機策略增加單個圖像有多容易?就像這樣簡單:
from bbaug import policies
# select policy v0 set
aug_policy = policies.policies_v0()
# instantiate the policy container with the selected policy set
policy_container = policies.PolicyContainer(aug_policy)
# select a random policy from the policy set
random_policy = policy_container.select_random_policy()
# Apply the augmentation. Returns the augmented image and bounding boxes.
# Image is a numpy array of the image
# Bounding boxes is a list of list of bounding boxes in pixels (int)。
# e.g. [[x_min, y_min, x_man, y_max], [x_min, y_min, x_man, y_max]]
# Labels are the class labels for the bounding boxes as an iterable of ints e.g. [1,0]
img_aug, bbs_aug = policy_container.apply_augmentation(random_policy, image, bounding_boxes, labels)
# image_aug: numpy array of the augmented image
# bbs_aug: numpy array of augmneted bounding boxes in format: [[label, x_min, y_min, x_man, y_max],。。。]
總結
該包實現了谷歌Brain Team推導出的增強策略。目前,已經實現了所有4個策略,該包還附帶了notebooks,以幫助用戶將這些策略集成到他們的PyTorch訓練pipeline中。
英文原文:https://towardsdatascience.com/bbaug-a-package-for-bounding-box-augmentation-in-pytorch-e9b9fbf1504b
編輯:jq
-
神經網絡
+關注
關注
42文章
4774瀏覽量
100902 -
pytorch
+關注
關注
2文章
808瀏覽量
13252
原文標題:BBAug: 一個用于PyTorch的物體檢測包圍框數據增強包
文章出處:【微信號:vision263com,微信公眾號:新機器視覺】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論