文章轉載自:https://blog.csdn.net/XiangJiaoJun_/article/details/84679596
MXNet在目標檢測提供了許多API供用戶調用,靈活使用這些函數能大大降低編程難度,其中跟錨框有關的三個函數MultiBoxDetection、MultiBoxPrior、MultiBoxTarget
,下面總結一下這三個函數的用法。
常用函數
一、MultiBoxPrior
該函數是用來在一張給定的特徵圖中,對於給定的大小比例和寬高比例,生成不同錨框,函數原型爲
mxnet.ndarray.contrib.MultiBoxPrior(data=None, sizes=_Null, ratios=_Null, clip=_Null, steps=_Null, offsets=_Null, out=None, name=None, **kwargs)
下面總結一下一些常用參數的作用。
參數 | 作用說明 |
---|---|
data | 輸入的特徵圖,一般形狀爲(批量大小,通道數、寬、高) |
sizes | 要生成的錨框的大小比例列表,比如 sizes=[0.2,0.5,0.75] |
ratios | 要生成的錨框的寬高比例列表,比如 ratios=[0.5,1,2] |
clip | boolean 類型變量,設置是否要剪切超出邊界的錨框,默認爲0 |
輸出:生成的錨框,形狀爲 (1,錨框總數,4) ,其中最後一維爲生成的錨框的四個座標,均除以了寬和高進行了歸一化,錨框總數 = 寬*高*每個像素錨框個數,各個批量之間共享這些錨框。
二、MultiBoxTarget
該函數是用來對生成錨框進行標記,函數原型爲
MultiBoxTarget(anchor=None, label=None, cls_pred=None, overlap_threshold=_Null, ignore_label=_Null, negative_mining_ratio=_Null, negative_mining_thresh=_Null, minimum_negative_samples=_Null, variances=_Null, out=None, name=None, **kwargs)
下面總結一下一些常用參數的作用。
參數 | 作用說明 | |
---|---|---|
anchor | 輸入的錨框,一般是通過MultiBoxPrior生成,形狀爲(1,錨框總數,4) | |
label | 訓練集的真實標籤,一般形狀爲(批量大小,每張圖片最多的真實錨框數,5),第二維中,如果給定圖片沒有這麼多錨框,將會用-1填充空白,最後一維中的元素爲 類別標籤+四個座標值(歸一化) | |
cls_pred | 對於第一個輸入參數,即輸入的錨框,預測的類別分數,形狀一般爲(批量大小,預測的總類別數+1,錨框總數),這個輸入的作用是爲了負採樣(negative_mining),如果不設置負採樣,那麼這個輸入並不影響輸出 | |
negative_mining_ratio | 設置負採樣的比例大小 | |
negative_mining_thresh | 設置負採樣的閾值 | |
minimum_negative_samples | 最少的負採樣樣本 |
其中輸出爲一個列表,有三個元素,分別爲bbox_offset、bbox_mask、cls_labels,注意以上三個輸出均爲二維矩陣
輸出 | 說明 |
---|---|
bbox_offset | 每個錨框的標註偏移量,形狀爲(批量大小,錨框總數*4) |
bbox_mask | 每個錨框的掩碼,這些掩碼一一對應上面的偏移量,由於我們不關心背景的偏移量,所以負類錨框座標對應的掩碼均爲0,正類錨框座標對應的掩碼均爲1,形狀爲(批量大小,錨框總數*4) |
cls_labels | 每個錨框的標註類別,其中0表示爲背景,當設置了負採樣後,標籤爲-1表示負採樣中被丟棄,計算損失函數時應丟棄該樣本,輸出形狀爲 (批量大小,錨框總數) |
三、MultiBoxDetection
該函數是用來對預測完畢的錨框進行例如加上偏移量,非極大值抑制等處理,函數原型爲
MultiBoxDetection(cls_prob=None, loc_pred=None, anchor=None, clip=_Null, threshold=_Null, background_id=_Null, nms_threshold=_Null, force_suppress=_Null, variances=_Null, nms_topk=_Null, out=None, name=None, **kwargs)
下面總結一下一些常用參數的作用。
參數 | 說明 |
---|---|
cls_prob | 預測的各個錨框的概率,一般要經過softmax運算,形狀爲(批量大小,預測總類別數+1,錨框總數) |
loc_pred | 預測的各個錨框的偏移量,一般形狀爲 (批量大小,錨框總數*4) |
anchor | 生成的默認錨框,一般形狀爲(1,錨框總數,4) |
clip | 是否要剪切超出邊界的錨框,默認爲1 |
threshold | 正類預測的閾值,當對某一個錨框預測的類別置信度大於設置的閾值時,會被當做正類錨框處理,否則視爲負類 |
background_id | 背景的類別id,默認爲0 |
nms_threshold | 非極大值抑制的閾值 |
輸出爲經過處理之後的錨框,形狀爲(批量大小,錨框總數,6)其中最後一維組成爲,類別標籤+置信度+邊界框四個座標(歸一化處理),其中類別標籤爲-1表示爲背景或者在NMS中被移除。