作者:Harpal Sahota
編譯:ronghuaiyang
導(dǎo)讀
實(shí)現(xiàn)了Google Research,Brain Team中的增強(qiáng)策略。
像許多神經(jīng)網(wǎng)絡(luò)模型一樣,目標(biāo)檢測(cè)模型在訓(xùn)練大量數(shù)據(jù)時(shí)效果最好。通常情況下,可用的數(shù)據(jù)有限,世界各地的許多研究人員正在研究增強(qiáng)策略,以增加可用的數(shù)據(jù)量。谷歌的大腦團(tuán)隊(duì)進(jìn)行了一項(xiàng)這樣的研究,并發(fā)表在了一篇論文中,名為L(zhǎng)earning Data Augmentation Strategies for Object Detection。在這篇論文中,作者確定了一組增強(qiáng)稱為策略,它對(duì)目標(biāo)檢測(cè)問題表現(xiàn)良好。該策略通過增強(qiáng)搜索獲得,提高了通用模型的性能。
作者將增強(qiáng)策略定義為一組子策略。在模型進(jìn)行訓(xùn)練時(shí),隨機(jī)選擇其中一個(gè)子策略用于增強(qiáng)圖像。在每個(gè)子策略中都有要依次應(yīng)用于圖像的增強(qiáng)。每個(gè)轉(zhuǎn)換也有兩個(gè)超參數(shù):概率和幅度。概率表示該增強(qiáng)將被應(yīng)用的可能性,而幅度表示該增強(qiáng)的程度。下面的代碼顯示了本文中使用的策略:
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)],
]
在這個(gè)策略中有5個(gè)子策略,如果我們?nèi)〉谝粋€(gè)子策略,它就包含了TranslateX_BBox和Equalize增強(qiáng)。TranslateX_BBox操作在x軸上轉(zhuǎn)換圖像的幅度為4。在本例中,大小并不直接轉(zhuǎn)換為像素,而是根據(jù)大小縮放為像素值。該增強(qiáng)的概率也為0.6,這意味著如果該增強(qiáng)被選中,則應(yīng)用該增強(qiáng)的概率為60%。
隨著每個(gè)增強(qiáng)都有一個(gè)相關(guān)的概率,引入了一個(gè)隨機(jī)的概念,給訓(xùn)練增加了一定程度的隨機(jī)性。總的來說,Brain Team已經(jīng)提出了4個(gè)策略: v0, v1, v2和v3。本文中顯示了v0策略,其他三個(gè)策略包含更多的子策略,這些子策略具有幾種不同的轉(zhuǎn)換。總的來說,增加分為三類,作者定義為:
顏色操作: 扭曲顏色通道,不影響邊界框的位置。
幾何操作:幾何扭曲圖像,這相應(yīng)地改變了邊界框的位置和大小。
包圍框操作:只會(huì)扭曲包圍框中包含的像素內(nèi)容。
BBAug
那么BBAug)在這方面有什么貢獻(xiàn)呢?BBAug是一個(gè)python包,它實(shí)現(xiàn)了谷歌Brain Team的所有策略。這個(gè)包是一個(gè)包裝器,可以更容易地使用這些策略。實(shí)際的擴(kuò)展是由優(yōu)秀的imgaug包完成的。
上面顯示的策略應(yīng)用于一個(gè)示例圖像,如下所示。每一行是一個(gè)不同的子策略,每一列是該子策略的不同運(yùn)行。
正如你所看到的,在子策略的運(yùn)行之間有一定程度的變化,因此給訓(xùn)練增加了一定程度的隨機(jī)性。這只是BBAug實(shí)施的4個(gè)策略之一。要查看所有4個(gè)策略的完整可視化,請(qǐng)查看包的GitHub頁(yè)面:https://github.com/harpalsahota/bbaug。
該包還提供了一些有用的功能,比如定制策略的可能性,以及位于圖像外部的邊界框,如果它們部分位于圖像外部,則會(huì)被自動(dòng)刪除或剪切。例如,在下面的圖像中,應(yīng)用了平移增強(qiáng),將邊界框部分推到圖像外部。你可以看到新的邊界框已經(jīng)縮小以適應(yīng)這一點(diǎn)。
也可以創(chuàng)建只影響邊界框區(qū)域的增強(qiáng)。在下圖中,solarisaugmentation只應(yīng)用于邊界框區(qū)域:
用隨機(jī)策略增加單個(gè)圖像有多容易?就像這樣簡(jiǎn)單:
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],。。。]
總結(jié)
該包實(shí)現(xiàn)了谷歌Brain Team推導(dǎo)出的增強(qiáng)策略。目前,已經(jīng)實(shí)現(xiàn)了所有4個(gè)策略,該包還附帶了notebooks,以幫助用戶將這些策略集成到他們的PyTorch訓(xùn)練pipeline中。
英文原文:https://towardsdatascience.com/bbaug-a-package-for-bounding-box-augmentation-in-pytorch-e9b9fbf1504b
編輯:jq
-
神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
42文章
4777瀏覽量
100960 -
pytorch
+關(guān)注
關(guān)注
2文章
808瀏覽量
13289
原文標(biāo)題:BBAug: 一個(gè)用于PyTorch的物體檢測(cè)包圍框數(shù)據(jù)增強(qiáng)包
文章出處:【微信號(hào):vision263com,微信公眾號(hào):新機(jī)器視覺】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論