YOLO v1之总结篇(linux+windows)
YOLO出自2016 CVPR You Only Look Once:Unified, Real-Time Object Detection,也是一个非常值得学习的框架,不得不说facebook的技术就是牛啊。
整个训练和检测框架都是端到端,YOLO达到了45帧每秒,Fast YOLO达到了155帧每秒,除了刚开始加载模型有点慢,检测部分确实是非常的快。
整个检测过程分为3个阶段,(1)将图像缩放到448*448(2)通过神经网格进行检测和分类(3)NMS抑制,输出最终结果该模型首先,将输入的图像分为S*S个grid,然后每个grid产生B个预测边界框(包括,x,y,windth,height,confidence)和C类判别属性,最终将输出S*S*(B*5+C)维度的向量。
在VOC上训练中,S=7,B=2,C=20,最终输出7*7*(2*5+20)维度的信息。
YOLO包含24个卷基层,2个全连接层,FastYOLO只包含9个卷基层,因此速度快很多,当然代价就是精度也相应的有损失。
YOLO的损失函数,权衡了边界框的损失和类别判断的损失,使得边界框的损失是类别判断损失的10倍,同时兼顾了大的边界框和小的边界框的IOU偏差,使得同样的损失在大框中表现出很小的影响,小框中则变现出很大的影响。
其中,λcoord =5 ,λnoobj =0.5,1obji 表示是否物体出现在gridcell i中,1objij表示grid cell i中的第j个边界框预测到了正确类别。
训练过程数据:epoch:135batch size:64momentum:0.9decay:0.0005learning rate:前75为0.01,中间30为0.001,最后30为0.0001dropout layer rate:0.5YOLO的优势在于,外围库的依赖少,纯c和CUDA写成,唯一的依赖就是pthreads,不像caffe那样需要一堆的dll。当然,缺点就是,训练的模型文件太大,750多M,2G显存的电脑直接挂掉,tiny-yolo虽然小,但是效果却大打折扣。另一个缺点就是由于其自身结构的设计,使得对聚集,堆叠的物体检测不是很好,当然,fast RCNN,ssd等在这点上也没有变现出不俗的效果。就YOLO v1的速度和识别率来看,还是比SSD差点。当然所有的这些都在YOLO v2中得到了大大的改善。
linux篇:YOLOv1的官方链接为,http://pjreddie.com/darknet/yolov1/,安装步骤:[plain] view plain copygit clonehttps://github.com/pjreddie/darknet.gitcd darknetvim Makefile修改GPU=1 OPENCV=1make -j8wgethttp://pjreddie.com/media/files/yolov1.weights./darknetyolo test cfg/yolov1/yolo.cfg yolov1.weights data/dog.jpg注意这里,yolov1.weights,官网现在给的是753M的,实际上我用这个没有跑出结果,用了小伙伴的780多M的成功跑出了上面的结果,就这一个地方,折腾了一下午,换了不同机器测试过,也是被官网坑了啊。如果不对之处,还请大神斧正。
至此,YOLOv1就安装完毕,又可以愉快的玩耍了。
windows篇:由于原版的官方YOLOv1是只支持linux 和mac的,如果要自己修改,可能需要走好对哦的坑,同时还得具备一定的技术水平,幸好有革命斗士为我们走出了这一步,可以参考下面2个YOLO-windows,https://github.com/frischzenger/yolo-windowshttps://github.com/AlexeyAB/yolo-windows随便下载上面的一个yolo,然后进入yolo-windows-master\build\darknet\下面,用vs2013直接打开darknet.sln,选择,x64版本,只要配置opencv和pthreads就可以,为了方便大家参考,这里贴出本人的环境配置,vc++目录,可执行文件,[plain] view plain copyE:\opencv2_4_12\build\x64\vc12\bin;G:\yolo-windows-master\3rdparty\dll\x64;vc++目录,包含目录,[plain] view plain copyE:\opencv2_4_12\build\include;E:\opencv2_4_12\build\include\opencv;E:\opencv2_4_12\build\include\opencv2;G:\yolo-windows-master\3rdparty\include;C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\ www.furggw.com/ v7.5\include(GPU版本加)
vc++目录,库目录,[plain] view plain copyE:\opencv2_4_12\build\x64\vc12\lib;G:\yolo-windows-master\3rdparty\lib\x64;C:\Program www.hjha178.com Files\NVIDIA GPU Computing Toolkit\CUDA\v7.5\lib\x64(GPU版本加)
链接器,输入,下面为release的输入,debug只将opencv的lib换成相应debug即可。
[plain] view plain copypthreadVC2.lib;opencv_calib3d2412.lib;opencv_contrib2412.lib;opencv_core2412.lib;opencv_features2d2412.lib;opencv_flann2412.lib;opencv_gpu2412.lib;opencv_highgui2412.lib;opencv_imgproc2412.lib;opencv_legacy2412.lib;opencv_ml2412.lib;opencv_objdetect2412.lib;opencv_ts2412.lib;opencv_video2412.lib;cublas.lib(GPU版本加)
curand.lib(GPU版本加)
cudart.lib(GPU版本加)
c/c++,预处理器[plain] view plain copy_CRT_SECURE_NO_WARNINGSOPENCVGPU(GPU版本加)
环境配好,点击生成就可以,debug版本的生成信息,release版本的生成信息,进入,yolo-windows-master\build\darknet\x64\Release\下面,去官网链接,http://pjreddie.com/media/files/ www.furong157.com yolov1.weights,下载好yolov1.weights,然后运行,darknet.cmd,随便输入一张图像,例如,person.jpg,就会出来运行效果。
其中第一个为cpu+debug版本,第二个为cpu+release版本,
YOLO v1之总结篇(linux+windows)的更多相关文章
- DNN:windows使用 YOLO V1,V2
本文有修改,如有疑问,请移步原文. 原文链接: YOLO v1之总结篇(linux+windows) 此外: YOLO-V2总结篇 Yolo9000的改进还是非常大的 由于原版的官方YOLOv ...
- 在Mac/Linux/Windows上编译corefx遇到的问题及解决方法
这两天尝试在Mac/Linux/Windows三大平台上编译.NET跨平台三驾马车(coreclr/corefx/dnx)之一的corefx(.NET Core Framework),结果三个平台的编 ...
- linux/Windows系统如何安装PHP-openssl扩展
今天倒腾了半天公司的OA办公系统,原来现在很多的smtp服务器是需要ssl方式加密的,而支持ssl需要php加载openssl扩展.所以本文我们将和大家一起分享如何在linux/Windows系统下安 ...
- Mysql篇--Linux中安装Mysql
一.前述 由于Windows安装Mysql非常麻烦,所以分享一篇Linux中对MySQL的搭建,废话不多说,来,come on. 二.步骤 2.1 yum安装 yum install mysql-se ...
- Object Detection(RCNN, SPPNet, Fast RCNN, Faster RCNN, YOLO v1)
RCNN -> SPPNet -> Fast-RCNN -> Faster-RCNN -> FPN YOLO v1-v3 Reference RCNN: Rich featur ...
- 看完这篇 Linux 权限后,通透了!
我们在使用 Linux 的过程中,或多或少都会遇到一些关于使用者和群组的问题,比如最常见的你想要在某个路径下执行某个指令,会经常出现这个错误提示 . permission denied 反正我大概率见 ...
- Linux 与 Linux Windows 文件共享 小知识
Linux 与 Linux Windows 文件共享 前提说明:windows主机信息:192.168.1.100 帐号:abc 密码:123 共享文件夹:sharelinux主机信息:192.1 ...
- mouse scrollings and zooming operations in linux & windows are opposite
mouse scrollings and zooming operations in linux & windows are opposite. windows中, 鼠标滚动的方向是: 查看页 ...
- linux/windows下启用和停止VMware后台服务的脚本
linux/windows下启用和停止VMware后台服务的脚本 linux/windows下启用和停止VMware后台服务的脚本 linux平台 windows平台 本文由乌合之众 lym瞎编,欢迎 ...
随机推荐
- angular promise $q 异步调用
Angular异步调用 Promise和$q的用法 背景 首先说明一下promise异步调用出现的背景: javascript语言是一种单线程模式,就是说一次只能够执行一个任务,如果有多个任务的话就必 ...
- mysql-5.7.17-winx64免安装版环境配置 问题小记
安装版问题请自行百度或google 这里总结几个免安装版mysql-5.7.17-winx64配置后,出现问题的解决方法. 具体的环境配置请先参考mysql-5.7.17-winx64免安装版,win ...
- linux系统CPU内存磁盘监控发送邮件脚本
#!/bin/bashexport PATHexport LANG=zh_CN.UTF-8###top之后输入数字1,可以查看每颗CPU的情况.###先配置好mailx邮箱账号密码:#cat>/ ...
- Python+selenium+pil+tesseract实现自动识别验证码
一.环境搭建准备: 1.Python下载,安装以及环境配置 2.IDE pycharm 工具下载,安装 3.ie浏览器 4.selenium 5.pil:pil第三方库的下载,win下安装whl文件, ...
- RabbitMQ入门:在Spring Boot 应用中整合RabbitMQ
在上一篇随笔中我们认识并安装了RabbitMQ,接下来我们来看下怎么在Spring Boot 应用中整合RabbitMQ. 先给出最终目录结构: 搭建步骤如下: 新建maven工程amqp 修改pom ...
- 获取Java线程返回值的几种方式
在实际开发过程中,我们有时候会遇到主线程调用子线程,要等待子线程返回的结果来进行下一步动作的业务. 那么怎么获取子线程返回的值呢,我这里总结了三种方式: 主线程等待. Join方法等待. 实现Call ...
- mybatis 加载配置文件的方法
一. 使用sqlSessionFactory 的 mapperLocations 进行加载 <!-- SessionFactory --> <bean id="sqlSe ...
- Spark之编程模型RDD
前言:Spark编程模型两个主要抽象,一个是弹性分布式数据集RDD,它是一种特殊集合,支持多种数据源,可支持并行计算,可缓存:另一个是两种共享变量,支持并行计算的广播变量和累加器. 1.RDD介绍 S ...
- SVN部署与简单使用
原文发表于cu:2016-05-24 参考文档: http://www.tuicool.com/articles/Yv2iyu7 http://www.centoscn.com/CentosServe ...
- vsftpd安装配置虚拟用户
原文发表于cu:2016-03-11 参考文档: FTP原理:http://vbird.dic.ksu.edu.tw/linux_server/0410vsftpd_1.php FTP配置:http: ...