以前打算分析caffe源碼的,可是因爲工做較忙就耽誤了。可是但願從此仍是能堅持寫博客,對知識進行總結梳理,鍛鍊本身的表達能力。算法
最近一段時間在研究yolo算法,發現這個算法很是的優美,而且做者更新到了第三版。經過對該算法的學習,能夠學習到如何進行算法的優化與實現。可是正如吳恩達在深度學習課程裏面所說的,yolo的論文很是的難讀,做者寫文章的時候着重在寫模型的測試部分,而對於模型的訓練講解的很是的少。這讓一開始閱讀yolo的論文時,有種不知因此然的感受。還好yolo的做者提供的源代碼,使得不懂的地方能夠經過閱讀來進行增強理解。在這裏很是佩服yolo的做者,不只科研能力強,工程能力也很是的棒,竟然本身用C語言擼了一個深度學習框架,佩服。是我學習的榜樣!!網絡
好了,廢話很少說了,開始咱們的正題吧。框架
對於一個新的深度學習算法,我常常從輸入輸出着手。咱們來看一下YOLO的輸入出是什麼?
首先yolo的輸入是一張448x448大小的圖片,而後通過網絡以後輸出爲30個值。那麼這30個值是什麼呢?咱們來進行一一的分析。ide
知道了網絡的輸出數據,咱們就能夠知道訓練數據的標籤長怎麼樣了。訓練數據的標籤一定也有:類別數、confidence和(xywh)組成。那圖片的標籤具體是怎麼打的呢?咱們接着分析。學習
在上面的圖中,第一個網絡因爲沒有咱們要識別的物體,因此標籤的類別數、confidence和xywh都爲0,接着第二個網格也是如此。。。直到紅色框的網格處,咱們發現有一隻狗,這是標籤爲狗的類別數,confidence爲1,xywh爲包含狗的物體框的中心座標和寬高。那紅色框的上面那個框的標籤數據是什麼呢?它也包含了狗啊。在yolo中只用物體框中心點所在的網格進行預測,所以紅色框周圍的網格的標籤數據也全都是0。
通過這樣計算,咱們能夠獲得,一張圖片最終的標籤數爲[20(類別)+2(confidence)+8(xywh)]xSxS測試