很難在不一樣的目標檢測器之間進行公平的比較。對於哪一個模型是最好的?這個問題是沒有直接的答案。對於現實生活中的應用,咱們選擇平衡準確性和速度。除了檢測器類型外,咱們還須要瞭解影響性能的其餘選擇:算法
最糟糕的是,技術發展如此之快,以致於任何比較都很快變得過期。在這裏,咱們總結了各個論文的結果,所以您能夠完整分析和對比它們。而後,咱們根據Google Research中總結得出一篇綜述。經過在一種狀況下提出多種觀點,咱們但願咱們能夠更好地瞭解性能指標。網絡
在本節中,咱們總結了相應論文報告的性能。隨時快速瀏覽本節。app
這是PASCAL VOC 2012測試集的結果。咱們對錶明Faster R-CNN性能的最後3行感興趣。第二列表明RPN網絡制定的RoI數量。第三列表明使用的訓練數據集。第四列是測量精度的平均平均精度(mAP)。ide
mAP:https://medium.com/@jonathan_hui/map-mean-average-precision-for-object-detection-45c121a31173PASCAL VOC 2012測試集的結果VOC 2012 for Faster R-CNNMS COCO上的結果COCO for Faster R-CNN使用PASCAL VOC 2007測試集在K40 GPU上計時,以毫秒爲單位。性能
PASCAL VOC 2012測試集的結果VOC 2012 for R-FCN(對某些結果使用了多尺度的訓練和測試。)測試
MS COCO上的結果COCO for R-FCN優化
這是使用300×300和512×512輸入圖像的PASCAL VOC 200七、2012和MS COCO的結果。SSD(SSD300 和SSD512 對小對象應用數據加強以改善mAP。)ui
性能:阿里雲
Speed is measure with a batch size of 1 or 8 during inference(此處的YOLO是指比YOLOv2或YOLOv3慢的v1)spa
MS COCO的結果:COCO for SSD
PASCAL VOC 2007測試集的結果。VOC 2007 for YOLOv2(咱們在此處添加了VOC 2007測試,由於它具備針對不一樣圖像分辨率的結果。)
PASCAL VOC 2012測試集的結果。VOC 2012 for YOLOv2MS COCO上的結果。COCO for YOLOv2
MS COCO上的結果
COCO for YOLOv3YOLOv3的性能
YOCO2在COCO上的性能
MS COCO上的結果。COCO for FPN
MS COCO上的結果
COCO for RetinaNetMS COCO測試開發上的速度(ms)與準確性(AP)。COCO for RetinaNet
並排比較不一樣論文的結果是不明智的。這些實驗是在不一樣的設置下完成的。儘管如此,咱們仍是決定將它們繪製在一塊兒,以便至少您對它們的大體位置有一個大體瞭解。可是請注意,咱們絕對不要直接比較這些數字。
對於如下呈現的結果,使用PASCAL VOC 2007和2012數據對模型進行了訓練。mAP是使用PASCAL VOC 2012測試儀測量的。對於SSD,該圖表顯示了300×300和512×512輸入圖像的結果。對於YOLO,其結果爲288×28八、416×461和544×544圖像。同一模型的高分辨率圖像具備更好的mAP,但處理速度較慢。*表示應用了小目標數據加強。
**表示結果是根據VOC 2007測試集測得的。之因此包含這些內容,是由於YOLO論文並無許多VOC 2012測試結果。因爲VOC 2007的結果整體上比2012年更好,所以咱們添加了R-FCN VOC 2007的結果做爲交叉參考( cross reference)。
輸入圖像分辨率和特徵提取器會影響速度。如下是相應論文報告的最高和最低FPS。可是,下面的結果可能會有很大的誤差,特別是在不一樣的mAP下進行測量。
在最近幾年中,許多結果都是使用COCO目標檢測數據集專門測量的。COCO數據集很難進行對象檢測,一般檢測器的mAP會低得多。這是一些關鍵檢測器的比較。
FPN和Faster R-CNN *(使用ResNet做爲特徵提取器)具備最高的精度(mAP @ [.5:.95])。RetinaNet使用ResNet構建在FPN之上。所以,RetinaNet實現的最高mAP是結合金字塔特徵的效果,特徵提取器的複雜性和focal loss的綜合影響。可是,請注意,這不是蘋果與蘋果的比較(apple-to-apple comparison)。稍後咱們將展現Google調查,以便進行更好的比較。可是最好先查看每一個模型的聲明。
Single shot detectors 使用較低分辨率的圖像時,每秒幀數(FPS)使人印象深入,但以準確性爲代價。這些論文試圖證實它們能夠擊敗基於區域的探測器(region based detectors)的準確性。可是,因爲高分辨率圖像一般用於此類聲明,所以結論性較差。所以,他們的狀況正在發生變化。另外,應用了不一樣的優化技術,這使得很難隔離每一個模型的優勢。實際上,single shot and region based detectors 如今在設計和實現上愈來愈類似。可是有些保留,咱們能夠說:
若是不須要實時速度,基於區域的檢測器(如Faster R-CNN)將顯示出較小的精度優點。Single shot detectors在這裏用於實時處理。可是應用程序須要驗證它是否知足其準確性要求。
實測視頻已上傳到b站【30分鐘時長】https://www.bilibili.com/video/av75557343/
Google Research提供了一份調查報告,研究Faster R-CNN,R-FCN和SSD的速度和準確性之間的權衡。(本文不涉及YOLO。)它使用MS COCO數據集進行訓練,從而在TensorFLow中從新實現了這些模型。它創建了一個更加受控的環境,並使權衡比較變得更加容易。它還引入了MobileNet,該技術能夠以較低的複雜度實現高精度。
最重要的問題不是哪一個檢測器最好。可能沒法回答。真正的問題是,哪一種檢測器以及哪一種配置能夠爲咱們提供您的應用所需的速度和準確性之間的最佳平衡。如下是準確性與 速度權衡(時間以毫秒爲單位)。
一般,Faster R-CNN更準確,而R-FCN和SSD更快。
使用帶有300 proposals的Inception Resnet進行Faster R-CNN,可在全部測試案例中以1 FPS提供最高的準確性。在針對實時處理的模型中,MobileNet上的SSD具備最高的mAP。該圖還幫助咱們找到最佳交易點,以實現良好的速度回報。
使用殘差網絡(Residual Network)的R-FCN模型在準確性和速度之間取得了很好的平衡,若是咱們將proposals數量限制爲50個,則使用Resnet的Faster R-CNN能夠達到相似的性能。
本文研究了特徵提取器的準確性如何影響檢測器的準確性。Faster R-CNN和R-FCN均可以利用更好的特徵提取器,但對於SSD來講意義不大。(x軸是每一個特徵提取器分類時top 1%的準確率。)
對於大物體,即便使用簡單的提取器,SSD的性能也很好。使用更好的提取器,SSD甚至能夠匹配其餘探測器的精度。可是與其餘方法相比,SSD在小物體上的性能要差得多。
例如,SSD在檢測下表中的瓶子時有問題,而其餘方法則能夠。
更高的分辨率能夠顯着改善小物體的目標檢測能力,同時也能夠幫助大物體。當在兩個維度上將分辨率下降兩倍時,準確度平均下降15.88%,但預測時間(inference time)也平均下降27.4%。
所生成的proposals數量能夠顯着影響Faster R-CNN(FRCNN),而不會大大下降準確性。例如,使用Inception Resnet,使用50個proposals而不是300個proposals時,Faster R-CNN能夠將速度提升3倍。準確性降低僅4%。因爲R-FCN的每一個ROI的工做量要少得多,所以速度提升的意義遠不那麼重要。
這是使用不一樣特徵提取器的不一樣模型的GPU時間。
儘管許多論文使用FLOPS(浮點運算的數量)來衡量複雜性,但不必定反映準確的速度。模型的密度(sparse v.s. dense model)會影響所需的時間。具備諷刺意味的是,密度較小的模型一般平均須要更長的時間才能完成每一個浮點運算。在下圖中,大多數密集模型的斜率(FLOPS和GPU比率)大於或等於1,而較淺模型小於1。也就是說,即便總體執行時間較短,密度較小的模型效果也不佳。可是,該緣由還沒有獲得本文的充分研究。
MobileNet具備最小的佔用空間。它須要少於1Gb(總)的內存。
2016年COCO目標檢測挑戰賽的獲勝做品是使用Resnet和Inception ResNet的五個Faster R-CNN模型的集合。它在COCO測試儀上的mAP @ [.5,.95]達到41.3%,而且在定位小物體方面取得了顯着改進。
Google Research論文的一些主要發現:
本文爲 AI算法與圖像處理 翻譯,如需轉載,可掃描下方二維碼後回覆轉載。因爲推文限制,部分圖片並不是高清,若有須要能夠後臺回覆 「 20191114」獲取,已按編號順序更改命名,方便使用!
conda安裝的國內鏡像配置,實現快速下載
anaconda的全部的軟件包所有在國外,安裝起來很麻煩,關鍵是下載速度慢,並且常常中斷,因此須要配置國內安裝的鏡像,下載速度就很快了。
1、conda換國內源
1.1 查看源
命令
conda config --show-sources
顯示結果
==> /home/xxx/.condarc <==
channels:複製代碼
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
- defaults複製代碼
這裏有兩個源,一個是清華的源,另外一個是默認的源
1.2 添加源(這裏以添加清華源爲例,固然也能夠選擇其餘的源)
命令
conda config --add channels
操做:
#添加清華的源
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/複製代碼
運行成果後,使用顯示源查看是否添加成功(conda config --show-sources)
1.3 其餘可選的源(還有更多的能夠網上搜索,這裏不一一列舉)
中科大的源
conda config –add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/free/
阿里雲的源
conda config --add channels http://mirrors.aliyun.com/pypi/simple/複製代碼
1.4 移除源
命令
conda config --remove channels
操做
conda config --remove channels 'https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/'
複製代碼
本文由博客一文多發平臺 OpenWrite 發佈!