一個(gè)用可視化方法選擇最優(yōu)backbone的小測(cè)試
點(diǎn)擊上方“程序員大白”,選擇“星標(biāo)”公眾號(hào)
重磅干貨,第一時(shí)間送達(dá)
作者:Ishan Bhatt
編譯:ronghuaiyang
可視化通常是開(kāi)發(fā)人員解釋他們的模型的唯一方法。
如果你對(duì)使用卷積神經(jīng)網(wǎng)絡(luò)(CNN)來(lái)解決計(jì)算機(jī)視覺(jué)(CV)問(wèn)題感興趣。如果你使用的是分類(lèi)、檢測(cè)或分割模型,請(qǐng)繼續(xù)。理想情況下,我在這里描述的技巧(用代碼)應(yīng)該適用于任何使用卷積特征提取器(CONV-FE)的深度學(xué)習(xí)(Deep Learning, DL)模型。(“Feature Extractor”有時(shí)也被稱(chēng)為“backbone”或“Encoder”)
隨著CNN越來(lái)越深入和廣泛,可視化通常是開(kāi)發(fā)人員解釋他們的模型的唯一方法。無(wú)論你是試圖找出模型不能工作的原因,還是試圖驗(yàn)證模型的性能,還是試圖為你的管道選擇最佳的 CONV-FE,可視化通常是最接近教科書(shū)上的解決方案的替代品。
今天我們將看到一個(gè)巧妙的技巧來(lái)可視化化任何CV任務(wù)的CONV-FE。我們將使用帶有TensorFlow后臺(tái)的Keras來(lái)演示這個(gè)技巧。這個(gè)技巧可以用來(lái)“調(diào)試”沒(méi)有正確訓(xùn)練的模型,或者“檢查”/“解釋”訓(xùn)練好的模型。
對(duì)于新讀者來(lái)說(shuō),值得一提的是架構(gòu)和CONV-FE之間的區(qū)別。SSD, YOLO和F-RCNN是當(dāng)今一些流行的目標(biāo)檢測(cè)架構(gòu)。正如你所知道的,架構(gòu)是具有某種形式的靈活性的模板,用戶可以根據(jù)自己的用例選擇調(diào)整架構(gòu)。對(duì)于新讀者來(lái)說(shuō),值得一提的是架構(gòu)和骨干之間的區(qū)別。大多數(shù)架構(gòu)都將CONV-FE視為插件。一些流行的CONV-FE是 VGG-16、ResNet50和MobileNetV2。通常可以看到,使用特定體系結(jié)構(gòu)構(gòu)建的模型的性能(包括速度和準(zhǔn)確性)將受到很大的影響。出于這個(gè)原因,實(shí)踐者提到了他們?cè)谀P兔Q(chēng)本身中使用的 VGG-16。一個(gè)F-RCNN(ResNet50)是一個(gè)模型與F-RCNN論文中描述的架構(gòu),使用ResNet50 CONV-FE構(gòu)建。換句話說(shuō),F(xiàn)-RCNN(MobileNetV2)和F-RCNN(vg -16)遵循相同的網(wǎng)絡(luò)架構(gòu),但使用不同的CONV-FEs。因此,我們可以期望每個(gè)系統(tǒng)都有不同的性能。CONV-FEs也有他們的架構(gòu),這就是為什么我們有VGG-16和VGG-19的原因。

圖1顯示了一個(gè)基于DL的目標(biāo)檢測(cè)系統(tǒng)的高級(jí)架構(gòu)。眾所周知的體系結(jié)構(gòu)如YOLO、F-RCNN和SSD都可以用這個(gè)模板。[W, H, 3]表示圖像的輸入寬度和高度,也表示輸入圖像有3通道。[w, h, N]表示轉(zhuǎn)換函數(shù)的輸出維數(shù)。需要注意的是,由于N是特征提取器最后一層CONV層中濾波器的數(shù)量,所以通常是一個(gè)很大的數(shù)量(對(duì)于VGG-16, N = 512)。w和h幾乎總是比w, h小,因?yàn)樵诮裉斓拇蠖鄶?shù)架構(gòu)中,CONV塊通常后面跟著池化層。
如上所述,對(duì)于我們的CV系統(tǒng)而言,選擇一個(gè)對(duì) CONV-FE是至關(guān)重要的。然而,問(wèn)題在于N的值很大。不可能想象一個(gè)所有維度都任意大的三維張量!這就是我們今天要解決的問(wèn)題。我們馬上開(kāi)始吧。
我們先選擇一個(gè)CONV-FE,用VGG-16試試。
一旦模型被加載,我們需要做一些腳本來(lái)加載我們想要嘗試我們的技巧的圖像。我在這里不描述這些步驟,因?yàn)樗鼈冊(cè)谀愕奶囟ㄓ美袝?huì)有很大的不同?,F(xiàn)在,我們只假設(shè)所有所需的圖像都存儲(chǔ)在工作目錄中名為“images”的目錄中?,F(xiàn)在讓我們使用這個(gè)技巧!
你將看到類(lèi)似于下面的輸出(這些也將保存在直接在工作目錄中創(chuàng)建的“results”目錄中)

第二列顯示了任意通道可以在由CONV-FE產(chǎn)生的輸出特征映射中實(shí)現(xiàn)的像素級(jí)最大值。第三列顯示了所有通道的平均值。我們說(shuō),如果我們的結(jié)果中的第二列和第三列顯示出清晰的特征分離,那么CONV-FE適用于我們的數(shù)據(jù)集。
如我們所見(jiàn),1和2的結(jié)果非常好,但3和4的結(jié)果表明,如果你有全屏PCB圖像或穿著傳統(tǒng)服裝的印度男人的圖像,當(dāng)前的模型并不真的適合。但是,如果你的數(shù)據(jù)集包含野生動(dòng)物或汽車(chē)/車(chē)輛的圖片,那么這個(gè)模型似乎是一個(gè)不錯(cuò)的選擇。
現(xiàn)在,讓我們做一個(gè)小小的調(diào)整。根據(jù)圖1,輸出特性映射可以有任意數(shù)量(N)的輸出通道。這是我們無(wú)法可視化和比較CONV-FEs的主要原因。我們使用常見(jiàn)的聚合技術(shù),即求和和平均,來(lái)獲得特征圖質(zhì)量的總體近似。我沒(méi)有沿著通道使用像素級(jí)的中間值進(jìn)行聚合。
Github 代碼鏈接: https://github.com/IshanBhattOfficial/Vizualize-CONV-FeatureExtractors

英文原文:https://medium.com/analytics-vidhya/how-to-select-the-perfect-cnn-back-bone-for-object-detection-a-simple-test-b3f9e9519174
推薦閱讀
國(guó)產(chǎn)小眾瀏覽器因屏蔽視頻廣告,被索賠100萬(wàn)(后續(xù))
年輕人“不講武德”:因看黃片上癮,把網(wǎng)站和786名女主播起訴了
關(guān)于程序員大白
程序員大白是一群哈工大,東北大學(xué),西湖大學(xué)和上海交通大學(xué)的碩士博士運(yùn)營(yíng)維護(hù)的號(hào),大家樂(lè)于分享高質(zhì)量文章,喜歡總結(jié)知識(shí),歡迎關(guān)注[程序員大白],大家一起學(xué)習(xí)進(jìn)步!


