yolo 图像处理源码文件结构分析

基本名词扫盲

1.卷积核,百度解释很清楚:

卷积核就是图像处理时,给定输入图像,在输出图像中每一个像素是输入图像中一个小区域中像素的加权平均,其中权值由一个函数定义,这个函数称为卷积核。    (你可能需要记住这个下划线)

2.HOG https://www.cnblogs.com/zhehan54/p/6723956.html  基本概念:里面提及HOG 你也需要认识这个东西

3.高斯处理 https://blog.csdn.net/hjxu2016/article/details/80587653 (卷积核权重检测和干扰处理)
 

在 YOLO 源码中 https://github.com/pjreddie/darknet,你可以查看如下的project tree :

YOLO底层调用opencv 大致对模型集和check image 算法(分类器)做了优化。CVer应该有所印象。
下面对makefile 进行 解析


上面工程只拥有makefile工程,linux下个windows-msys、windows cgywin 中能够使用

最新版YOLO3的地址 https://github.com/AlexeyAB/darknet 里面包含跨平台CMakeLists.txt,从vs2017伊始,就兼容CMakeList,小于2017版本的CmakeLists会被工程化为vs文件,不过道理都是一样的。里面带了很多用法脚本,(其实我接触他如果不翻源码我根本不知道怎么使用)

 

文件树将不再介绍,vs2017 打开上图的cmakelist.txt配置编译器将生成多种版本,这里测试win32 提示 

大概就是pthread 的问题,由于我研究重点不是兼容性问题,我只需要跑起来,鄙人对win体系也是深恶痛绝,所以这里大家请自行解决32位兼容问题。

我选择x64-release,没有配置 GPU选项,后期可能会移植到树莓派中

生成缓存,最后会有如下图所示( openmp 并行计算库,https://blog.csdn.net/magicbean2/article/details/75530667):

点工程结构树中cmakelist.txt 生成,然后安装:

你会发现如下几个文件:

dark的动态库dll,lib是编程时找到函数定义的链接库,头文件 darknet.h ,yolo_v2_class.hpp。执行程序userlib.exe与darknet.exe。

 

我复制和更改了一个文件image_yolov3.sh  ——> image_yolov3.cmd, windows引用的测试程序cmd脚本:

执行image_yolov3.cmd脚本(这个我猜测 是依赖库opencv的问题,我并没有安装CV):

开始折腾opencv,直接下载windows安装版,省事(https://sourceforge.net/projects/opencvlibrary/files/3.4.6/opencv-3.4.6-vc14_vc15.exe/download),下载有点久,所以这段时间呢,可以先看看源码,查看源码的工具什么的都可以你可以vs 我这里习惯source insight。darknet.c文件中main.c

有c语言基础的基本上看这个都是秒懂:

1.统计命令行参数

2.预处理宏定义

3.根据传入参数调用函数

翻回脚本image_yolov3.cmd:

darknet.exe detector test ./cfg/coco.data ./cfg/yolov3.cfg ./yolov3.weights data/dog.jpg -i 0 -thresh 0.25

程序调用argv[1] 的参数 detector直接看

函数内部:

剩下那一长串的 find_XXX 都是参数命令行的解析。我们传入的参数很遗憾上面的都没有,命中了 一个test的逻辑:


 

test_detector(datacfg, cfg, weights, filename, thresh, hier_thresh, dont_show, ext_output, save_labels, outfile, letter_box);
//其中:

datacfg = "./cfg/coco.data"
cfg = "./cfg/yolov3.cfg"
weights = "./yolov3.weights"
filename = "data/dog.jpg"
thresh = "0.25"
hier_thresh = "0.5"
dont_show = 0
ext_output = 0
save_labels = 0
outfile = 0
letter_box = 0

源码分析先到这里吧,先安装opencv跑起来看看效果先,opencv 安装自行百度,一大堆。

***********************************************************************

抱歉,前段时间写的上面的图文讲解,里面程序报错  0x0000007b ,这个问题不是opencv库的问题,我之前清理过环境,以至于macorsoft runtime libaray 丢失。而且后面拷贝了库文件,居然32位和64位卑混用,于是乎用depends.exe 工具查看依赖,替换了库,这才运行成功。不过opencv 这个东西还是darknet的依赖库。过了一遍流程没跑通,所以看源码什么的就暂缓了。

***********************************************************************
请看官等待更新

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
YOLO是一种流行的计算机视觉算法,用于实现实时目标检测任务。YOLO行人检测源码是基于YOLO算法实现的行人检测源代码。 YOLO行人检测源码首先需要了解YOLO算法的基本原理。YOLO算法通过将输入图像分割为多个小网格,并将每个网格分配给一个候选框。每个候选框包含了该网格中的目标物体。然后,通过使用卷积神经网络对每个候选框进行分类和位置回归,实现对目标物体的检测和定位。具体而言,YOLO行人检测源码通过训练深度神经网络来学习行人的外观特征和空间分布,从而实现行人的准确检测。 使用YOLO行人检测源码,你可以将其应用于任何需要行人检测的场景。首先,你需要准备训练数据集,其中包含标记了行人位置的图像。然后,你需要设置网络的参数和训练代码,并将训练数据输入到网络中进行训练。一旦训练完成,你就可以使用YOLO行人检测源码进行实时行人检测了。你只需将图像输入网络中,网络将输出行人的检测结果,包括行人的边界框位置和置信度。 YOLO行人检测源码的优势在于其实时性能和较高的检测准确率。相比于其他基于区域提议的方法,YOLO算法可以实现更快的检测速度,并且能够检测到更小和更远的目标物体。因此,YOLO行人检测源码在实际应用中广泛被使用,如智能监控、自动驾驶和人机交互等领域。 总而言之,YOLO行人检测源码是基于YOLO算法实现的用于行人检测的源代码。通过使用该源码,可以实现在实时场景下的高效准确的行人检测任务。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值