痛并快乐的YOLO初体验
1、前言
最近因为需要研究视频的物体识别和行为识别,上网了解了一下,YOLO是目前实时视频物体识别的应用最广泛的算法。
因此,作为小白的我,也准备体验一下YOLO算法的效果。
先上网了解了一下YOLO算法的背景资料,有V1,V2,V3,V4四个版本,其中V4版本虽然创新不多,但对工业应用很有价值,引用网上的总结:速度差不多的精度碾压,精度差不多的速度碾压!(刚刚看到,V5版本也出来的,这是什么节奏!!!)
我的想法,V2和V3相对成熟,先体验一下。
当初想得很简单,按照网上的先行者的网文,依葫芦画瓢,照做一遍。然而,真实过程远非如此简单,中间碰到各种问题,可以说,是一把辛酸泪!
先将一些容易踩坑之处和经验教训写出来,分享一下。
2、YOLO V2的痛苦体验
YOLO V2的安装,我参考的是:https://blog.csdn.net/xubuhui/article/details/88877571。
准备工作,安装下列环境:
python 3.5 or 3.6 or 3.7 ;
Anaconda ;
Tensorflow(cpu or gpu 均可);
openCV
下载darkflow代码,并执行安装;
测试体验。
详细过程,我就不展开了,几点经验教训:
1)关于Python版本,要求3.5 or 3.6 or 3.7。
这是因为tensorflow算法包的要求。
踩坑1:一开始,我没有重视,看到Python3的最新版本3.8.3,心想版本高些总会不错吧,安装了,结果后来出现问题。还得重新安装Python 3.7.7。
2)关于Anaconda。
Anaconda是Python环境的包管理工具。
安装了Anaconda后,创建了适合tensorflow环境,则所有操作都应该在Anaconda环境下执行,用AnaConda Prompt命令行工具,或AnaConda Navigator可视化图形界面工具都可以。但是一定不要用操作系统自带的CMD工具。
踩坑2:我使用win+R,输入cmd,显示命令行工具。执行下列语句:
python --version
显示的python版本号,是之前安装的2.7。
由于一开始没有理解Anaconda的用法,折腾了好久,包括设置path,调整先后次序,当时版本是可以了,但是后来安装darkflow时又有其它问题,最后还将python 2.7给卸载了。
Anaconda正确的使用姿势:
(1)先创建一个匹配python版本的环境,如tensorflow,使用python 3.7.7。
conda create -n tensorflow python=3.7.7
(2)使用前,先激活环境。
conda activate tensorflow
(3)可以使用pip,或install,或执行python脚本。
#执行pip
pip install cython
#install
conda install tensorflow
#执行python,使用py或python指令,执行python脚本setup.py
py setup.py build_ext --inplace
更进一步,可以上网查询AnaConda指令大全。
3)关于网速。
这点特别重要!!!如有可能,最好使用大学VPN来下载。
踩坑3:
A:安装tensorflow算法包,随机断开,重复多次,一直没成功,隔天正常,才安装成功。
B:从https://github.com/thtrieu/darkflow下载darkflow的Download zip文件,失败;使用git clone也随机断开。隔天正常,才下载成功。
4)关于安装darkflow
(1)首先,必须在AnaConda环境下,激活之前创建的tensorflow环境,来执行下列语句:
python setup.py build_ext --inplace
踩坑4:
我先前安装引用的网文的做法,在win10的cmd环境下,执行,总是报错:
ModuleNotFoundError: No module named 'Cython'
这个折腾了好久。
(2)其次,需要VS2015 C++环境。
否则提示:
访问失败:...\\Microsoft Visual Studio 14.0\\VC\\PlatformSDK\\lib
由于我好久没用VC了,之前只装了C#,补充安装,看着处于卡死状态,不放心,索性卸载重装了一次。结果,也许是网速问题,奇慢无比,重装VS2015,花了10几个小时。彻底无语!
5)关于安装tensorflow算法包的版本
好不容易通过darkflow的安装,生成了cy_yolo2_findboxes.cp37-win_amd64.pyd等几个文件,在测试体验时,又出问题。
由于我之前安装的tensorflow算法包的版本是2.1.0,而darkflow要求的tensorflow 版本是1.4,于是还是不成。
想想,yolo v2版本反正不如v3,不如直接搞v3吧。最终,yolo v2没有体验成功,放弃了。
3、YOLO V3的体验
关于YOLO V3的官网:https://pjreddie.com/darknet/yolo/。
V3版本最终成功体验了,中间也出现了一些问题,需要注意的地方:
1)代码下载
不能使用:git clone https://github.com/pjreddie/darknet,这会在后面导致下列问题:
couldn’t open file: data/coco.names
正确做法,直接输入https://github.com/pjreddie/darknet网址,download zip文件。网上说这是因为Windows系统和Linux系统编码的不同可能会导致一些错误。
2)make需要安装gcc环境
安装cygwin时,必须勾选:make和g++。(如果没有,则需要补充安装,默认是skip,即不安装)。
否则,make时,提示make指令错误,或gcc错误。
make成功后,生成了darknet.exe文件。
3)图片的检测命令:
下面例子中,yolov3.weights到yolo官网下载,我用的是416*416,test.jpg是网上搞得图片。
darknet.exe detect cfg/yolov3.cfg yolov3.weights test.jpg
成功,执行后,生成一个predictions.jpg文件。
这样初步体验OK了,也可以用视频文件。
痛并快乐的YOLO初体验的更多相关文章
- wxWidgets刚開始学习的人导引(3)——wxWidgets应用程序初体验
wxWidgets刚開始学习的人导引全文件夹 PDF版及附件下载 1 前言2 下载.安装wxWidgets3 wxWidgets应用程序初体验4 wxWidgets学习资料及利用方法指导5 用wx ...
- Unit1-窝窝初体验
全文共3179字,推荐阅读时间10~15分钟. 文章共分四个部分: 作业分析 评测相关 重构策略 初体验感受 作业分析 第一次作业 第一次作业要求我们实现一个简单的幂函数求导工具,没有乘积和复合的情况 ...
- Spring核心原理之IoC容器初体验(2)
本文节选自<Spring 5核心原理> 1 IoC与DI基本概念 IoC(Inversion of Control,控制反转)就是把原来代码里需要实现的对象创建.依赖,反转给容器来帮忙实现 ...
- .NET平台开源项目速览(15)文档数据库RavenDB-介绍与初体验
不知不觉,“.NET平台开源项目速览“系列文章已经15篇了,每一篇都非常受欢迎,可能技术水平不高,但足够入门了.虽然工作很忙,但还是会抽空把自己知道的,已经平时遇到的好的开源项目分享出来.今天就给大家 ...
- Xamarin+Prism开发详解四:简单Mac OS 虚拟机安装方法与Visual Studio for Mac 初体验
Mac OS 虚拟机安装方法 最近把自己的电脑升级了一下SSD固态硬盘,总算是有容量安装Mac 虚拟机了!经过心碎的安装探索,尝试了国内外的各种安装方法,最后在youtube上找到了一个好方法. 简单 ...
- Spring之初体验
Spring之初体验 Spring是一个轻量级的Java Web开发框架,以IoC(Inverse of Control 控制反转)和 ...
- Xamarin.iOS开发初体验
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKwAAAA+CAIAAAA5/WfHAAAJrklEQVR4nO2c/VdTRxrH+wfdU84pW0
- 【腾讯Bugly干货分享】基于 Webpack & Vue & Vue-Router 的 SPA 初体验
本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/57d13a57132ff21c38110186 导语 最近这几年的前端圈子,由于 ...
- 【Knockout.js 学习体验之旅】(1)ko初体验
前言 什么,你现在还在看knockout.js?这货都已经落后主流一千年了!赶紧去学Angular.React啊,再不赶紧的话,他们也要变out了哦.身旁的90后小伙伴,嘴里还塞着山东的狗不理大蒜包, ...
随机推荐
- c++中new[ ]与delete[ ]的分析
前言 以前对c++的new[]的了解就是开辟一块内存,直到我最近在程序中用到它才发现我的了解太浅. 问题分析 new[]得到的内存空间不会自动初始化 new[]是在堆区中动态分配指定大小的内存,但是这 ...
- FHE-Toolkit 安装
什么是FHE-Toolkit? FHE-Toolkit-linux是用于Linux的IBM全同态加密工具包, 该工具包是一个基于Linux的Docker容器,可演示对加密数据的计算而无需解密, 该工具 ...
- ajax 异步无刷新点改
<button class="status" t_id="{{$v->id}}">{{$v->status}}</button&g ...
- bashshell删除列
删除所有空白列cat yum.log | awk '{$1=$2=$3=$4=null;print $0}'>>yum.log7删除文件中的所有空格sed -i s/[[:space:]] ...
- 安装了Python2.X和Python3.X后Python2.X IDLE打不开解决办法总结
安装了Python2.X和Python3.X后Python2.X IDLE打不开,两个版本都卸载后重装仍然打不开,在网上找了几种办法,希望对大家能有所帮助 1.首先查看环境变量是否配置正确 配置方法网 ...
- 【Web前端HTML5&CSS3】12-字体
笔记来源:尚硅谷Web前端HTML5&CSS3初学者零基础入门全套完整版 目录 字体 1. 字体相关的样式 2. font-family 3. 几种字体 手写体 艺术体 乱码字体 中文字体 4 ...
- 第11讲 | TCP协议(上):因性恶而复杂,先恶后善反轻松
第11讲 | TCP协议(上):因性恶而复杂,先恶后善反轻松 TCP 包头格式 我们先来看 TCP 头的格式.从这个图上可以看出,它比 UDP 复杂得多. 首先,源端口号和目标端口号是不可少的,这一点 ...
- SpringBoot实现整合mybatis-generator-maven-plugin 1.4.0
创建 Maven 工程 网上有很多教程且 Idea 可以直接创建 这里就不进行 pom.xml 引入依赖和插件 pom中generalto-maven-plugs中必须指定mysql驱动,并且明确版本 ...
- linux小本
登陆CentOS 2.重启系统:reboot 3.设置客户机显示器分辨率 4.查看IP地址:ip addr 5.切换目录:cd 6.查看目录:ls 7.复制文件:cp 8.编辑文件:vi cd /et ...
- openresty 学习笔记一:环境安装
openresty 学习笔记一:环境安装 openresty 是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库.第三方模块以及大多数的依赖项.用于方便地搭 ...