darknet-yolo运行摄像头测试分析及过程主要代码梳理

本人是在JESON TK1开发板上实现yolo的视频实时运行测试

darknet的安装很简单,从官网上克隆代码即可:

git clone https://github.com/pjreddie/darknet.git

修改makefile文件,使用opencv和cuda

GPU=1
OPENCV=1

切换目录
cd darknet
make通过就安装成功,若出现如下错误:

obj/avgpool_layer_kernels.o -o libdarknet.so -lm -pthreadpkg-config –libs OpenCV-L/usr/local/cuda/lib64 -lcuda -lcudart -lcublas -lcurand -lstdc++ 
/usr/bin/ld: cannot find -lcudart 
/usr/bin/ld: cannot find -lcublas 
/usr/bin/ld: cannot find -lcurand 

参照cannot find -lcudart …解决方案
安装成功

下面进行视频测试
权重文件请自行在darknet官网下载,本博客使用了tiny-yolo-voc.weights
tiny-yolo-coco.weights (考虑到TK1开发板性能速度问题,只使用了小模型)

VOC数据集测试,连接摄像头,运行命令

cd darknet
#voc webcam test
./darknet detector demo cfg/voc.data cfg/tiny-yolo-voc.cfg tiny-yolo-voc.weights

测试速度不够快,修改网络输入图片大小到208x208,修改tiny-yolo-voc.cfg第四行

width=208
height=208

速度达到16帧左右,基本满足实时要求

同理:
coco数据集测试,连接摄像头,运行命令

cd darknet
#coco webcam test
./darknet detector demo cfg/coco.data cfg/tiny-yolo.cfg tiny-yolo-coco.weights

速度在15帧左右

本测试主要代码梳理:

./darknet detector demo cfg/voc.data cfg/tiny-yolo-voc.cfg tiny-yolo-voc.weights

上述命令的意思是进入darknet.c文件,这个文件在examples文件夹中,然后进入darknet.c的main函数,main函数主要是判断输入的参数,判断的时候以空格左键分隔符,根据输入参数运行代码,main函数的主要代码:

int main(int argc, char **argv)
{
    //test_resize("data/bad.jpg");
    //test_box();
    //test_convolutional_layer();
    if(argc < 2){
        fprintf(stderr, "usage: %s <function>\n", argv[0]);
        return 0;
    }
    gpu_index = find_int_arg(argc, argv, "-i", 0);
    if(find_arg(argc, argv, "-nogpu")) {
        gpu_index = -1;
    }

#ifndef GPU
    gpu_index = -1;
#else
    if(gpu_index >= 0){
        cuda_set_device(gpu_index);
    }
#endif

    if (0 == strcmp(argv[1], "average")){
        average(argc, argv);
    } else if (0 == strcmp(argv[1], "yolo")){
        run_yolo(argc, argv);
    } else if (0 == strcmp(argv[1], "voxel")){
        run_voxel(argc, argv);
    } else if (0 == strcmp(argv[1], "super")){
        run_super(argc, argv);
    } else if (0 == strcmp(argv[1], "lsd")){
        run_lsd(argc, argv);
    } else if (0 == strcmp(argv[1], "detector")){
        run_detector(argc, argv);
    } else if (0 == strcmp(argv[1], "detect")){
        
  • 3
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 12
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值