yolo官方框架使用c寫的,效能槓槓的,yolo演算法,我就不做過多介紹了。先簡單介紹一下這個框架如何使用。這裡預設是yolo2,yolo1接近過時。
環境 推薦ubuntu 或者centos
yolo是乙個近實時的框架,在1核cpu下,對一張的識別大概在6s-12s之間,其實還是在沒有快取的環境下執行的,如果是在攝像頭實時採集識別估計也能達到10s左右的處理速度。如果用gpu來處理,當然時間短很多了。在看官網的資訊時,有些名詞看不太懂,但號稱在titanx 上的處理速度是每秒40-60張,識別精度為78.6% ;在coco 開發測試集上的voc 2007 上的識別精度為48.1%。這樣看來,速度確實很快。
1,yolo原理
關於yolo**相對複雜,要有足夠的耐心去看。這裡位址先貼出來:
2,yolo安裝
1,安裝預備庫
1)安裝git 工具
yum install git
2)安裝 bunzip2
yum install -y bzip2
3 ) 安裝gcc
接下來,我們看一下目錄:
3)執行**
檢測到狗的概率為82%
檢測到車的概率為28*,其實沒有車
檢測到kache的概率為64%
檢測到自行車的概率為85%
當然概率高的是正確,概率低的確實沒有
其實他會生成一張,並標識所識別到的物體
predictions.png就是生成**圖
我們看看:
至此,證明我們已經安裝yolo成功了!
3,檢測
1)單檢測
./darknet detect cfg/yolo.cfg yolo.weights data/dog.jpg一般服務執行比較慢6s-12s,開啟gpu會快速很多,會生成predictions.png,圖中會標識出識別的物體。
dog.jpg 就是要檢測的,可以換成其餘的試試。
2)多檢測
./darknet detect cfg/yolo.cfg yolo.weights多檢測跟單檢測是差不多的,只是會不斷的提示你輸入路徑進行檢測layer filters size input output
0 conv 32
3 x 3 / 1
416 x 416 x 3 -> 416 x 416 x 32
1 max 2 x 2 / 2
416 x 416 x 32 -> 208 x 208 x 32
.......
29 conv 425
1 x 1 / 1
13 x 13 x1024 -> 13 x 13 x 425
30detection
loading weights from yolo.weights ...done!enter image path:
你可以data/hourses.jpg,
終止輸入:ctrl + c就可以退出
3)設定檢測的視窗的閾值
這個一般沒有必要設定,預設閾值是在.25或者以上,當可以通過
-thresh 來設定,如果設定為0,則:
./darknet detect cfg/yolo.cfg yolo.weights data/dog.jpg -thresh 0結果為:
這是完全沒有必要的。
4,tiny yolo
你可以試著去用tiny的權重voc集去測試一下:
雖然精度差了,但是處理速度高度200張每秒
5,通過攝像頭實時監測
通過攝像頭實時監測識別,這樣可以實時檢視測試的結果是怎麼樣的,但是需要相應的裝置來支援,硬體必須有攝像頭,同時還要編譯cuda和opencv,可以執行以下的命令:
./darknet detector demo cfg/coco.data cfg/yolo.cfg yolo.weights這樣就會在展示每一幀上標識出識別的物體。
./darknet detector demo cfg/coco.data cfg/yolo.cfg yolo.weights file>
yolo演算法框架使用二
6,voc資料集訓練模型 可以把資料存放到vocdevkit 目錄下 2 生成識別標籤 識別標籤必須是.txt檔案的,具體格式如下 object class 是分類的名稱 其餘元素是關聯到的畫素,寬和高的 幾分鐘後,就會生成相應的檔案存放到 vocdevkit voc2007 labels 或者 v...
初級演算法 7 加一
給定乙個由整數組成的非空陣列所表示的非負整數,在該數的基礎上加一。最高位數字存放在陣列的首位,陣列中每個元素只儲存乙個數字。你可以假設除了整數 0 之外,這個整數不會以零開頭 示例 1 輸入 1,2,3 輸出 1,2,4 解釋 輸入陣列表示數字 123。示例 2 輸入 9,9,9,9 輸出 1,0,...
初級演算法探索 陣列篇(一)
問題 從排序陣列中刪除重複項 給定乙個排序陣列,你需要在原地刪除重複出現的元素,使得每個元素只出現一次,返回移除後陣列的新長度。不要使用額外的陣列空間,你必須在原地修改輸入陣列並在使用 o 1 額外空間的條件下完成。示例 1 給定陣列 nums 1,1,2 函式應該返回新的長度 2,並且原陣列 nu...