隊伍:AI0000043
1. 算法方案
由于賽題同時要求速度和精度,是以我們優先考慮小模型,在保證模型速度的同時通過模型調優穩 定提升模型精度。此外,由于圖檔分辨率比較大,且資料集中小目标占比高,我們計劃使用更大的圖檔 尺寸輸入,這就要求網絡具有更大的感受野,是以我們使用yolov5s6而不是yolov5s作為我們的 baseline。
同時,為了穩步提升模型性能,我們在使用一些通用tricks的同時,例如coco資料集的預訓練權 重,多尺度訓練,模型平均以及同步BN,還使用了大量的資料增強來進一步增強網絡的泛化性,使用的 資料增強包括RandomFlip、Mosaic、Mixup、Cutout、Blur和ToGray,整體方案如下:
- Yolov5 s6 + 4head
- 大量資料增強(randomflip、mosaic、mixup、cutout、albu庫等) img size896 + multi-scale training
- 300epochs訓練周期
- int8模型量化
2. 模型移植
我們在模型移植方面進行了大量的嘗試以及實驗,整體思路是在保持或是較小影響模型性能的同時,盡 可能提升模型推理速度,技術路線分為Pytorch2Fp32bmodel和Pytorch2Int8bmodel
Pytorch→FP32bmodel
由于我們使用的是s6模型,輸出個數、錨框尺寸以及下采樣倍數與主辦方提供的s模型不同,是以我們需 要修改推理腳本中的anchor generator來适配,最終模型的輸出結果與pt輸出結果基本一緻,且速度相 較于jit模型推理有顯著提升。
Pytorch→Int8bmodel
我們通過模型量化來進一步提升模型的推理速度。在量化過程中,我們也碰到了一些問題。首先是量化 時間過長。通常來說,量化資料集圖檔數量多的話,量化的精度損失也會下降,我們在實驗中發現,使 用所有資料集(訓練集+val_a+val_b)需要超過20h的量化耗時,使用驗證集(val_a+val_b)需要大概 10~20h的量化耗時,使用val_b能夠将量化用時控制在10h以内。為了解決量化時間過長的問題,我們最 終隻将b榜驗證集作為我們的量化資料集,專注于降低模型在b榜資料集上的量化誤差。第二個問題是量 化後模型精度下降過大,考慮到網絡某些層由于作用明顯,不适合int8量化,是以在實際量化過程中, 由于網絡檢測頭的卷積輸出坐标以及得分等關鍵資訊,我們對其使用fp32單獨量化。此外,由于一鍵量 化工具會自動進行量化政策搜尋,但對同一模型搜尋路線是相同的,是以我們通過使用一鍵量化工具量 化多個模型取最優來保證量化後的模型性能。最後,我們還進行了其它嘗試,比如将模型量化的誤差指 标由feature_similarity更換為detect_accuracy,在分步量化時通過calibration_use_pb指令行添加- th_method指定計算各個層量化門檻值的方法。最終我們量化後的模型在推理速度上相較于fp32的模型能 夠提升22ms,雖然AP50有所下降,但是最終得分還是得到了顯著提高。
3. 模型推理
在模型推理的優化上,我們的政策如下:
- 改進NMS
- 優化後處理,裁剪越界框
- 進行尺度實驗,權衡模型的速度和精度
在具體實驗中,我們觀察到原有的nms實作太耗時,我們嘗試使用nms變種進行替換,在嘗試過 fast_nms等nms變種後,我們最終引入torchvision.ops.nms來替換原本的nms,改進的nms能在保持 模型精度的同時,提升模型推理速度10ms。此外,原有的推理腳本未對越界框進行處理,使得模型的輸 出結果中包含許多跨出邊界的檢測框,我們将這些跨出邊界的檢測框限制在圖像尺寸内,這個操作能夠 在不影響推理速度的同時,提升AP50大約0.5個點。最後,我們還進行了大量的尺度實驗來權衡速度和 精度,包括960尺度訓練(960尺度推理)、960尺度訓練(896尺度推理)、896尺度訓練(896尺度推 理)等,最終使用方案896尺度訓練(896尺度推理)
4. 參賽感悟與建議
由于時間原因,模型還有更多的優化空間,我們未來考慮從以下三方面來進行優化:
- 模型訓練優化:在同等模型大小下,通過一些訓練技巧,模型精度還能得到進一步的提升
- 模型量化優化:Int8量化後的模型精度有所下降,可以嘗試更多的優化政策來減少精度的損失,從 而進一步提升模型的性能
- 推理過程優化:多batch size推理,多卡多線程推理
在這裡,也感謝算能平台提供的機會以及資源,讓我們對TPU有了進一步的了解。在有限的比賽時間 内,我們也發現了一些問題,比如說明文檔的不完善,在比賽過程中,我們有考慮使用多卡多線程推 理,但是在閱讀過平台相關的說明文檔後,發現這方面的資料稀少且表述不清晰,是以最終也沒有成功 實作,另外就是推理腳本的不完善,在比賽過程中,我們通過優化推理腳本就顯著提高了模型的推理速 度,模型的推理腳本仍有很大的優化空間。最終衷心祝願算能平台能發揮自身優勢,越來越好。