YOLO v3的安裝可以使用參考博客:YOLO v3 安裝並訓練自己數據 - quanwei的博客
檢測視頻
在這篇博客中我們將介紹如果使用YOLO V3進行視頻檢測。其實在darknet官網中我們已經看到了作者關於使用YOLO v3的視頻接口對視頻進行檢測,現在使用模型對自己本地的視頻進行檢測。
./darknet detector demo cfg/coco.data cfg/yolov3.cfg yolov3.weights <File Name>
上邊就是進行視頻檢測接口,直接將最後半段的<File Name>
換成自己的模型即可。
上邊就是我進行檢測的結果,我使用顯卡型號是1080Ti,使用YOLO v3原始權重,Resize以後的圖片大小爲608*608,這樣檢測速度可以達到平均20幀/秒。
檢測固定類別
有很多小夥伴不想檢測所有的類別,只想檢測某幾個類別,這裏我們來簡單介紹一下如何修改.
確定檢測類別的id
我們此次視頻目標檢測使用的是coco.data
索引,所以應該在./darknet/data/coco.names
文件夾中找到需要檢測目標種類的索引.
person
bicycle
car
motorbike
...
如上邊所示,如果我們只需要檢測人的話,只需要記住人的索引號爲0(行數-1)
,如果需要檢測幾個種類我們需要記住幾個類別的索引.
修改./darknet/src/image.c
確定類別的index以後,就需要修改程序,在./darknet/src/image.c
文件中draw_detections()函數中,將下邊的內容
void draw_detections(image im, detection *dets, int num, float thresh, char **names, image **alphabet, int classes)
{
int i,j;
char save_txt;
for(i = 0; i < num; ++i){
char labelstr[4096] = {0};
int class = -1;
for(j = 0; j < classes; ++j){
if (dets[i].prob[j] > thresh){
...
修改爲:
for(i = 0; i < num; ++i){
char labelstr[4096] = {0};
int class = -1;
for(j = 0; j < classes; ++j){
// Select classes Detection
if((j != 0)&&(j!=5){ //person
continue;
}
if (dets[i].prob[j] > thresh){
if (class < 0) {
其實十分簡單,就是將不是屬於我們需要檢測的類別直接跳過,不進行檢測.
重新編譯
重新進行
make clean
make -j
這樣就是可以進行檢測的.