Waymo object detect 2D解決方案論文拓展
- FixMatch
半監督中的基礎論文,自監督和模型一緻性的代表作。
- Consistency regularization: 無監督學習的方式,資料\(A\)和經過資料增強的\(A\)計做\(A\'\) ,同時輸入模型\(f\) ,由于其種類相同(未知但相同),是以\(f(A)=f(A\')\) ,利用分布相同進行訓練即可。
- Pseudo-labeling: 僞标簽,使用人工标注資料集訓練模型\(f\),然後使用此模型去預測未标注資料集,結果使用門檻值進行過濾當做未标注資料的标簽。
假設存在資料集 \(D\),有标簽資料集\(D^l\) ,無标簽資料集\(D^u\) ,是以\(D=\{D^l,D^u\}\) ,訓練模型\(f\),訓練步驟如下:
- 有标簽的資料直接使用交叉熵loss
- 無标簽的資料線進行前向計算得到結果計做\(Result\) ,設定門檻值\(T\),\(0 \ \ if \ softmax(Result)>T \ else \ 0\) 制作一個one-hot的label,利用此label進行交叉熵loss計算
- 在訓練的初期會經常出現loss為0的情況,因為前期不穩定,無标簽的置信度小于門檻值
- 這篇論文主要叙述資料增強的作用,閱讀較為簡單

- STAC
将半監督遷移至目标檢測的論文,訓練步驟:
- 使用已标注的資料訓練一個大模型\(f_{large}\)
- 使用這個大模型對未标注資料集進行預測,經過NMS,使用置信度門檻值進行過濾,獲得\(Pseudo-labeling\)
- 如果使用資料增強(幾何變換),需要将label進行對齊
- 計算loss即可
- Instant-Teaching: An End-to-End Semi-Supervised Object Detection Framework
- Mean teachers are better role models、解讀文章
2021最新的半監督目标檢測,下面的論文是其中一個子產品(Co-rectify)參考論文,以下給出訓練步驟:
- 先使用标注圖像訓練一個大模型,未标注圖像直接使用大模型生成(先進行NMS,後面置信度設定一個門檻值進行過濾)
- 使用僞标簽訓練模型\(f_a\) ,其中資料使用弱資料增強(RandomFlip)
- 使用僞标簽訓練模型\(f_b\),其中資料使用強資料增強(mosaic、mixup等),模型\(f_b\)可以不等于\(f_b\)
- 模型 \(f_a\) 和 \(f_b\) 預測的結果進行聯合預測,假設模型\(f_a\)的Head網絡為\(head_a\),其他類似。例如模型輸入為 \(data\) ,\(out_a = f_a(data),out_a\'=f_b(data,out_a)\) 其中\(out_a\)為模型\(f_a\)的直接輸出,\(out_a\'\)是模型\(f_b\)的Head層輸出(相當于RPN的結果)。最後将兩個結果進行權重平均即可。
\[\left\{\begin{aligned}
\left(c_{i}, \mathbf{t}_{i}\right) &=f_{a}\left(\mathbf{x}_{u}\right) \\
\left(c_{i}^{r}, \mathbf{t}_{i}^{r}\right) &=f_{b}\left(\mathbf{x}_{u} ; \mathbf{t}_{i}\right), \\
c_{i}^{*} &=\frac{1}{2}\left(c_{i}+c_{i}^{r}\right), \\
\mathbf{t}_{i}^{*} &=\frac{1}{c_{i}+c_{i}^{r}}\left(\mathbf{t}_{i} c_{i}+\mathbf{t}_{i}^{r} c_{i}^{r}\right) .
\end{aligned}\right.
\]
- loss使用下面的函數表示,監督loss和僞監督loss
\[\begin{aligned}
\ell_{u}=& \sum_{u}\left[\frac{1}{N_{c l s}} \sum_{i} L_{c l s}\left(p\left(c_{i} \mid A\left(\mathbf{x}_{u}\right)\right), \hat{c}_{i}^{u}\right)\right.\\
&\left.+\frac{\lambda}{N_{r e g}} \sum_{i}\left(\max \left(c_{i}^{u}\right) \geq \tau\right) L_{r e g}\left(p\left(\mathbf{t}_{i} \mid A\left(\mathbf{x}_{u}\right)\right), \mathbf{t}_{i}^{u}\right)\right]
\end{aligned}
\]
- 總結
由于看到Waymo object detect 2D比賽中有人使用此方案,是以才進行探索一下:第二名方案論文。這裡總結一下這個比賽的方案,關于弱監督套路一樣,以上三篇論文完全代表其發展程序了。
- (基礎)将手動标注的圖像進行訓練,且此模型盡量是大模型(比賽有速度和精度要求,論文使用YoloR)。參賽給的訓練資料集
- (基礎)将未标注的圖像進行僞标注。參賽給的測試集
- (優化)anchor的選擇,由于目标差異比較大(自行車和汽車兩類bbox分布較為接近、自行車單獨計算),和後面模型結合起來分析
- (優化)針對小目标的處理,由于資料在圖像中間分布,是以裁剪之後進行放大,提高小目标的出鏡率
- (優化)使用TensorRT進行加速
- (優化)針對困難樣本(模糊等),使用弱監督的Co-rectify方案,論文裡面說是
也就僅僅一句話帶過,這裡後面進行拓展說明。we learn from the self-learning method which use multi-different models check with each other to automatically clean the dataset during the model training process to solve this problem and improve the model performance.
- (優化)Model Ensemble,多個模型進行投票。這裡采用不用模型預測不同目标的方式,YOLOR-W6預測車輛和行人,YOLOR-P6預測自行車。
這裡主要說明一下采用的Co-rectify方案(出自Paper),兩個結構相同且參數不同的模型YOLOR-W/P,由于是單階段網絡,是以隻能直接預測,而不是像原始論文使用Head分支進行。假設模型 \(f_w\) 和 \(f_p\) 預測的結果進行聯合預測。如模型輸入為 \(data\) ,\(out_w = f_w(data),out_w\'=f_b(data)\) 其中\(out_w\)為模型\(f_a\)的直接輸出,\(out_w\'\)是模型\(f_b\)的輸出。直接進行權重平均,會使得模型朝着一個方向學習。如原始論文中原文:
The key to the success of co-rectify is that the two models will not converge to the same model. We take two measures to ensure that the two models converge independently.
First, although the two models have the same structure, they use different initialization parameters. Second, although the two models share the same data in each mini-batch, their data augmentations and pseudo annotations are also different.
雖然說兩個模型的參數是不同的,但是此處的目的是去除模糊框,如何做到兩個模型就能去除模糊框?
個人猜測是1)模糊框是少數,大量的資料訓練本身就能去除這類樣本。2)兩個型模同時訓練,會增加網絡的魯棒性,畢竟每個網絡都有自己擅長的點(不同目标的檢測精度不同),聯合之後各取所長吧。