如何用CNN模型+sliding window完成對大圖片中小物體的尋找並分類?

大體工作流程

將大圖切分成各種比例尺寸的小圖(希望能剛好框住物體)

用大量小圖訓練一個具備物體分類能力的CNN

將切分好的小圖餵給CNN模型來做分類,給出識別物體的概率值

實際問題1

比例尺寸太多,stride太小,切分的圖片太多,計算量太大,訓練效率低下;

比例尺寸過少,stride過大,切分圖片稀疏,會錯過重要區域,準確率下降;

實際問題2

CNN處理圖片時,如果最後FC的neurons很多400個,計算量過大;

方案

將FClayer轉變為Conv-layers(5x5 conv, 1x1 conv), 同樣大小的feature maps 400 channels,計算量要少很多;

實際問題3

訓練好的具備分類能力的CNN所用的圖片大小是固定的(14x14x3),但要處理的新圖片都會大於訓練圖片尺寸如16x16x3, 28x28x3,如果新圖片全部切分成14x14x3小圖片,圖片太多,一張一張圖片單獨訓練,計算量太大;

方案

不切分,直接訓練,不同之處就是輸出的output不再是1x1x4, 而是2x2x4, 8x8x4, 相當於一次完成4張小圖,一次完成8張小圖的計算

7分鐘如何用CNN模型與sliding window完成對大圖片中小物體的尋找並分類

探索一句話版的機器學習與深度學習_嗶哩嗶哩 (゜-゜)つロ 乾杯~-bilibili p34

3.3 目標檢測 object detection 課程 視頻課程

解析一個車輛識別模型結構

車輛識別模型=移動窗口(截取多樣本)+車輛分類模型=做每個窗口的預測

如何保障sliding window能剛好抓住車輛?

這種車輛識別方法的弊端:計算量巨大或則準確度太低

3.4 卷積移動窗口的實現 convolutional implementation of sliding window 課程 文本筆記

如何降低上一節模型的計算量巨大的問題?

如何將FC layers (400,) 轉換成Conv layers(1x1x400)?

為什麼FC轉化為Conv就能節省計算?= conv layer 計算天生很省

如何理解conv-implementation的加速計算的設計?conv-implmentation如何解決每個截圖單獨跑模型的高額計算成本?這樣的conv-implementation在代碼里是如何實現的?

推薦閱讀:

相关文章