darknet_yolo实现+网络摄像头的调用

近期在项目中接触到了darknet框架,通过学习其中的yoloV3,下面为本人的一些学习笔记及感悟。
我电脑的配置为 :NVIDIA Version 430.40 ,CUDA 10.0 , CUDNN 7.4 ,GPU:GeForce GTX 1660 (5941MB) ,OPENCV 3.4


环境的安装可以参考我上一篇文档 https://www.jianshu.com/p/ea8d69fa9cb1

  1. Git 下载 darknet资源包:https://github.com/AlexeyAB/darknet
  2. 下载完后到其目录下 打开Makefile配置文件 进行修改
    GPU=1 ,CUDNN=1 CUDNN_HALF=1 OPENCV=1 保存文件
    3.直接进行make操作
make
  1. 下载权重文件:
    There are weights-file for different cfg-files (smaller size -> faster speed & lower accuracy:
  • yolov3-openimages.cfg (247 MB COCO Yolo v3) - requires 4 GB GPU-RAM: https://pjreddie.com/media/files/yolov3-openimages.weights
  • yolov3-spp.cfg (240 MB COCO Yolo v3) - requires 4 GB GPU-RAM: https://pjreddie.com/media/files/yolov3-spp.weights
  • yolov3.cfg (236 MB COCO Yolo v3) - requires 4 GB GPU-RAM: https://pjreddie.com/media/files/yolov3.weights
  • yolov3-tiny.cfg (34 MB COCO Yolo v3 tiny) - requires 1 GB GPU-RAM: https://pjreddie.com/media/files/yolov3-tiny.weights
  • yolov2.cfg (194 MB COCO Yolo v2) - requires 4 GB GPU-RAM: https://pjreddie.com/media/files/yolov2.weights
  • yolo-voc.cfg (194 MB VOC Yolo v2) - requires 4 GB GPU-RAM: http://pjreddie.com/media/files/yolo-voc.weights
  • yolov2-tiny.cfg (43 MB COCO Yolo v2) - requires 1 GB GPU-RAM: https://pjreddie.com/media/files/yolov2-tiny.weights
  • yolov2-tiny-voc.cfg (60 MB VOC Yolo v2) - requires 1 GB GPU-RAM: http://pjreddie.com/media/files/yolov2-tiny-voc.weights
  • yolo9000.cfg (186 MB Yolo9000-model) - requires 4 GB GPU-RAM: http://pjreddie.com/media/files/yolo9000.weights
  1. 进行 测试 图片是视频的运行
./darknet detector test cfg/coco.data cfg/yolov3.cfg yolov3.weights data/dog.jpg //单张图片进行检测
./darknet detector test cfg/coco.data cfg/yolov3.cfg yolov3.weights //多图检测 输入图片的路径和名称
./darknet detector demo cfg/coco.data cfg/yolov3.cfg yolov3.weights 
  1. 项目所用的darknet文件在我的百度云盘上:https://pan.baidu.com/s/1mYbtaFi8T_PqvzhDUud79A
    主修改的文件为yolo_console_dll.cpp配置文件
    (1)系统环境:
gedit ~/.bashrc
export LD_LIBRARY_PATH=/home/yang/myenvirment_tool/AAB_darknet${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
LD_LIBRARY_PATH=/home/yang/myenvirment_tool/AAB_darknet/3rdparty/HK/lib/HCNetSDKCom${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
LD_LIBRARY_PATH=/home/yang/myenvirment_tool/AAB_darkne/3rdparty/HK/libt${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
source ~/.bashrc

(2)修改Makefile文件

GPU=1
CUDNN=1
CUDNN_HALF=1
OPENCV=1
AVX=0
OPENMP=0
LIBSO=1
ZED_CAMERA=0
HK_SDK=1

(3)修改yolo_console_dll.cpp

1.#define SERVER_IP "192.168.168.197" //设置服务器 。主机地址(自己的ip)
2.std::string filename= "web_camera"; // 直接赋值 为filename
3.const int numCap = 3; //设置开启摄像头的个数
4. input[0].m_CamDriver.InitCamera("192.168.***.**","admin","********");
                input[0].occupied = true; 设计需要开启的摄像头具体的地址
5. const char *window_name[numCap] = {"0","1","2"};  //开启摄像头的编号

7选择 开启客户端输入 模式

(1)取消注释 yolo_console_dll.cpp 的 #include SOCKET
(2)在client.cpp中将SERVER_IP改成本机地址
(3)在client.cpp 将 servaddr.sin_port = htons(8001) 改成和yolo_console_dll.cpp中的相同。
(4)在client.cpp所在文件夹,正常编译g++ client.cpp -o client -std=c++11
(5)向客户端发送命令 :
[{"Id":12,"Ip":"192.168.***.***","action":1,"status":0}]
其中Id为摄像头编号,action表示对该摄像头要开启(1)或者关闭(0),status表示该摄像头之前的状态   服务端返回的格式与客户端相同
(6) 先运行 系统的  ./uselib  ,然后再重现新建终端 在client文件目录下运行 :    ./client 

你可能感兴趣的:(darknet_yolo实现+网络摄像头的调用)