YOLO 演算法框架的使用一(初級)

2022-07-09 08:48:08 字數 3249 閱讀 1029

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...