04.卷积神经网络 W3.目标检测
文章目錄
- 1. 目標定位
- 2. 特征點檢測
- 3. 目標檢測
- 4. 滑動窗口的卷積實現
- 5. Bounding Box預測(YOLO)
- 6. 交并比
- 7. 非極大值抑制
- 8. Anchor Boxes
- 9. YOLO 算法
- 10. 候選區域
- 作業
參考:
吳恩達視頻課
深度學習筆記
1. 目標定位
定位分類問題:
不僅要判斷圖片中是不是一輛汽車,還要標記出它的位置,用框圈起來
2. 特征點檢測
Landmark 檢測
3. 目標檢測
基于滑動窗口的目標檢測
- 將目標剪切出來,訓練卷積網絡
- 以一定大小的窗口掃描圖片,將窗口內的圖片輸入卷積網絡預測
- 更改窗口大小,重復上面步驟
滑動窗口目標檢測算法缺點:
- 計算成本,剪切出太多塊,卷積網絡要一個個地處理
- 用的步幅很大,窗口個數少,可能會影響性能
- 用小粒度或小步幅,窗口會特別多,這意味著超高的計算成本
4. 滑動窗口的卷積實現
對整張圖片進行卷積操作,一次得到所有預測值,如果足夠幸運,神經網絡便可以識別出目標的位置
在卷積層上應用滑動窗口算法,提高了整個算法的效率
不過這種算法仍然存在一個缺點,就是邊界框的位置可能不夠準確
5. Bounding Box預測(YOLO)
滑動窗口法中,離散的邊界框可能沒有一個能完美匹配汽車位置
一個能得到更精準邊界框的算法是YOLO算法,YOLO(You only look once)意思是你只看一次,這是由Joseph Redmon,Santosh Divvala,Ross Girshick和Ali Farhadi提出的算法
YOLO算法有一個好處,它是一個卷積實現,運行速度非常快,可以達到實時識別
邊界框定義還有其他更有效的方法,可能效果要更好一點
6. 交并比
7. 非極大值抑制
算法可能對同一個對象做出多次檢測。非極大值抑制確保算法對每個對象只檢測一次。
非極大值抑制,非最大值意味著你只輸出概率最大的分類結果,抑制很接近,但不是最大的其他預測結果
如果你嘗試同時檢測三個對象,比如說行人、汽車、摩托,那么輸出向量就會有三個額外的分量。
事實證明,正確的做法是獨立進行三次非極大值抑制,對每個輸出類別都做一次
8. Anchor Boxes
你想讓一個格子檢測出多個對象,就是使用 anchor box 這個概念
算法處理不好的情況:
- 如果你有兩個anchor box,但同一格子有三個對象
- 兩個對象都分配到一個格子中,且它們的anchor box形狀也一樣
出現的概率比較小,對性能的影響應該不會很大
怎么選擇 anchor box呢?
- 一般手工指定anchor box形狀,選擇5到10個anchor box形狀,覆蓋多種不同的形狀
- k - 平均算法,可以將兩類對象形狀聚類,選擇最具有代表性的一組 anchor box,這是自動選擇anchor box的高級方法
9. YOLO 算法
- 訓練:
- 預測:
- 非極大值抑制:
如果使用兩個anchor box,那么9個格子中任何一個都會有兩個預測的邊界框,其中一個的概率很低。
接下來你拋棄概率很低的預測。
如果你希望檢測(3種目標)行人,汽車和摩托車,那么你要做的是,對于每個類別單獨運行非極大值抑制,運行三次來得到最終的預測結果。
10. 候選區域
候選區域是一個有趣的想法,但這個方法需要兩步:
- 首先得到候選區域
- 然后再分類
相比之下,類似于YOLO(You only look once)這個算法,能夠一步做完,老師覺得長遠而言更有希望
YOLO 網址:https://pjreddie.com/darknet/yolo/
作業
作業:自動駕駛 - 汽車檢測
我的CSDN博客地址 https://michael.blog.csdn.net/
長按或掃碼關注我的公眾號(Michael阿明),一起加油、一起學習進步!
總結
以上是生活随笔為你收集整理的04.卷积神经网络 W3.目标检测的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode 1748. 唯一元素的
- 下一篇: LeetCode 698. 划分为k个相