自我感觉YOLO_v2检测效果还是可以的,目前的用于检测的yolo,ssd都是还不错的,我将yolo_v2尝试了一下,下面我就说说用法。
yolo_v2下载地址:https://github.com/pjreddie/darknet
https://pjreddie.com/darknet/yolo/官网地址,里面有安装的方法以及步骤可以借鉴
https://pjreddie.com/darknet/install/#cuda必要软件安装的地址
https://pjreddie.com/darknet/imagenet/#reference数据集的地址
下载安装包进行编译
git clone https://github.com/pjreddie/darknet.git
cd darknet
make
编译到make就可以啦
还需要对openc以及gpu的调用的话,需要对makefile文件进行修改:
#######原始#########
GPU=0
CUDNN=0
OPENCV=0
OPENMP=0
DEBUG=0
#######修改后#########
GPU=1
CUDNN=0
OPENCV=1
OPENMP=0
DEBUG=0
yolo_v2训练好的模型下载:
wget https://pjreddie.com/media/files/yolo.weights
测试一张狗的图片
./darknet detect cfg/yolo.cfg yolo.weights data/dog.jpg
./darknet detector test cfg/coco.data cfg/yolo.cfg yolo.weights data/dog.jpg
Tiny YOLO
wget https://pjreddie.com/media/files/tiny-yolo-voc.weights
./darknet detector test cfg/voc.data cfg/tiny-yolo-voc.cfg tiny-yolo-voc.weights data/
实时视频检测以及视频检测
实时视频检测
./darknet detector demo cfg/coco.data cfg/yolo.cfg yolo.weights
视屏检测
./darknet detector demo cfg/coco.data cfg/yolo.cfg yolo.weights
换成自己要检测视频的路径
对于yolo没有提供保存视频的函数,对视频不好保存,因而想了一个办法就是一帧一帧的保存,保存方法
./darknet detector demo cfg/coco.data cfg/yolo.cfg yolo.weights /home/ccf/CCF/math_model_2017/D/2017_FuJian/download_video/4p-c3.avi -prefix /home/ccf/CCF/math_model_2017/D/2017_FuJian/test_5/4p_c3_result_person/
这篇博客说可以直接保存,但是我没有弄出来,还望有人搞出来,留个言,博客网址:http://blog.csdn.net/hrsstudy/article/details/60876451
对于利用yolo训练好的模型只检测人的方法:
修改源代码:
cfg/coco.data
classes= 1 #修改成1
train = /home/pjreddie/data/coco/trainvalno5k.txt
valid = coco_testdev
#valid = data/coco_val_5k.list
names = data/coco.names
backup = /home/pjreddie/backup/
eval=coco
examples/detector.c
void run_detector(int argc, char **argv)//该函数中,倒数第三行.line=542
int classes = option_find_int(options, "classes", 1);//最后一个参数修改成1
void test_detector(char *datacfg, char *cfgfile, char *weightfile, char *filename, float thresh)函数中
draw_detections(im, l.w*l.h*l.n, thresh, boxes, probs, names, alphabet, 1); //最后一个参数修改成1。line=481
重新编译和测试
make clean
make
对将视频变成单张后,可以将图片组合成demo,组合方式如下(matlab代码):
clear
clc
file_name = '/home/ccf/CCF/math_model_2017/D/2017_FuJian/download_video/6p-c0.avi';
obj = VideoReader(file_name);
numFrames = obj.NumberOfFrames;
for k = 1: numFrames
frame = read(obj,k);
%imshow(frame);
% gray_frame = rgb2gray(frame);
% imshow(frame);
imwrite(frame,strcat('/home/ccf/CCF/math_model_2017/D/2017_FuJian/test_5/6p_c0/',num2str(k),'.jpg'),'jpg');
end
对于如何训练自己数据我还没有不过大家可以参考这篇博客:
http://lib.csdn.net/article/deeplearning/57863?knId=1726