為了使乙個格仔檢測多個物件,需要引入anchor boxes概念。
上圖中第六個格仔,輸出向量y為八維度,只能檢測出乙個物件,而實際上此格仔中有兩個邊界框的中點落入。anchor boxes的思路是,預先定義好多個不同形狀的anchor boxes,上圖中定義了兩個。由於有兩個anchor boxes,格仔對應的標籤y由[pc,bx,by,bh,bw,c1,c2,c3]變為了[pc,bx,by,bh,bw,c1,c2,c3,pc,bx,by,bh,bw,c1,c2,c3]。
使用anchor boxes之前的演算法,每個格仔對應8維標籤,影象的標籤為3x3x8.
使用anchor boxes之後,跟之前一樣每個物件分配到不同的格仔中,並將其在標籤中的位置分配到與其邊界框交並比最高的anchor boxes中。例子中有兩種anchor boxes,那麼影象的標籤為3x3x16。
存在問題:
1、兩種anchor boxes,無法應對乙個格仔三個以上的情況;
2、乙個格仔中有兩個物件,而且兩個物件的anchor boxes形狀也一樣。由於存在這些問題,需要額外引入一些手段來解決。(格仔的尺寸變小,3x3 -> 19x19,可以減緩這種問題的影響)
anchor boxes形狀的選擇方法:
k-平均演算法,例如將兩類物件形狀聚類,選擇最具有代表性的一組anchor box,可以代表你試圖檢測的十幾個物件類別。
3.9 yolo演算法
putting it together: yolo algorithm
1、構造訓練集並進行訓練
類別:3 行人、汽車、電單車 anchor boxes: 2 網格尺寸: 3x3
標籤維度: 3x3x2x8
網格尺寸 x
anchor boxes個數 x
類別個數
2、進行**
格仔1 無物件**應為:[0,?,?,?,?,?,?,?,0,?,?,?,?,?,?,?]
格仔7有測**應為:[0,?,?,?,?,?,?,?,1,bx,by,bh,bw,0,1,0]
3、非極大值抑制
3.1 如果有兩種anchor boxes,一般**後影像每個格仔會有兩個**邊界框。
3.2 捨棄低概率的**。
3.3對每個類別,分別做極大值**。
檢測過程:
3.10 候選區域
region proposals
r-cnn的演算法,意思是帶區域的卷積網路,或者帶區域的cnn。該演算法嘗試選出一些區域,在這些區域上執行卷積網路分類器是有意義的,不再針對每個滑動窗執行檢測演算法,而是只選擇一些視窗,在少數視窗上執行卷積網路分類器。
選出候選區域的方法是執行影象分割演算法,分割的結果是下邊的影象,為了找出可能存在物件的區域。比如說,分割演算法在這裡得到乙個色塊,所以你可能會選擇這樣的邊界框,然後在這個色塊上執行分類器,比如綠色的東西,在這裡找到乙個色塊,接下來在那個矩形上執行一次分類器,看看有沒有東西。在這種情況下,如果在藍色色塊上執行分類器,希望能檢測出乙個行人,如果在青色色塊上執行演算法,也許你可以發現一輛車。
候選區域系列演算法
第四部分 目標檢測 1 筆記
3.1 目標定位 object localization 目標定位即判斷目標在影像中是否存在,以及將目標在影像中的位置標記出來。目標檢測示意 檢測影象中是否包括 行人 汽車 電單車和背景,並將汽車的位置標記出來。網路的輸出結果應為 四種物件的softmax輸出以及汽車邊界框的引數化顯示。上圖中,假定...
第四部分 方法3
對employee.calculatepay方法的呼叫是問題的原因。我們需要的是晚繫結。晚繫結 latebinging 意味著編譯器到執行時才選擇要執行的方法。為了迫使編譯器呼叫向上型別轉換得到的物件的方法的正確版本。我們使用了兩個關鍵字 virtual 和override.必須在基類方法中使用vi...
JavaScript筆記(第四部分)
命 名 空 間 管理變數,防止汙染全域性,適用於模組開發 之 前 的 解 決 辦 方 已經不用 命名空間 var org xuming department2 lisi 了解即可 用 法 org.department1.jicheng.name 簡化 var jc org.department1.j...