深度学习yolov3 手势识别教程 小白学习笔记

深度学习yolov3 裂痕检测和手势识别教程 小白学习笔记

这是本人在学习yolov3目标检测过程的一些记录,希望能够对大家有所帮助
裂痕检测视频演示训练到演示
/记得一键三连/
持续更新

环境安装

环境安装配置能劝退一大批人,这是大佬说的,这是事实,确实难搞,不过环境配置完成后接下来就是起飞的感觉了。
1.Unbuntu18.04安装
微信公众号上面有教程:软件安装管家
如果不会安装也可以来找我(我安装过很多次,踩过很多坑)
我的ubuntu系统用不了wifi就很难受了,只能手机usb共享网络。
2. 安装qq(为了传输数据更加方便)
百度搜索linux 版QQ
下载后双击安装包点击安装即可(这个qq太简陋了,受不了,之前我是有一个接近现代版本的qq的只是找不到了)
貌似这个可以安装windows版本的qq:
百度搜索wine QQ
wine QQ
不知为啥,我的两个版本的qq都用不了了,卸载重装也一个样子,卡得不行……
3. cuda安装:
cuda安装
cuda下载:百度搜索cuda nvidia
4. cudnn安装:b站有教程,详细的,保存网址了。
cudnn下载:百度搜索cudnn nvidia

可开始yolov3的使用

yolov3 目标识别教程:

yolov3 目标识别教程
(我是主要按照这篇文章来做的,以下是我按照这篇教程做的过程中所遇到的一些问题和经验)

如果初始权重下载速度过慢就直接点击权重的网址来下载

修改makefile文件:输入命令:~/darknet

安装opencv库:
安装opencv库

如果中途报错则:
报错解决方案

安装opencv库换源下载享受非一般的感觉: sudo pip3 install opencv-python -i http://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com

如果报错:“ import skbuild ModuleNotFoundError: No module named ‘skbuild’ ”
sudo apt install cmake
sudo pip3 install scikit-build
重新安装opencv库

如果一直卡在那个running:
sudo pip3 install --upgrade pip

重新安装opencv库

验证opencv安装是否成功:
输入:python3
import cv2
如果没报错就可以了

继续跟着yolov3教程里面的弄,用笔记本自带的摄像头进行图像识别,如果报错说GPU内存不足:
解决方案

就可以快乐玩耍了!!!!

我亲测试过,GPU运行比CPU运行快了几百倍都有,虽然还是有点卡卡的样子,但是如果你用过cpu运行对比过你就知道什么才叫真正的卡了,你就能体会到GPU的顺滑了。

用官方权重连续识别图片
./darknet detector demo cfg/coco.data cfg/yolov3.cfg yolov3.weights1

到这里就差不多了,起飞!!!!!!!

ctrl+c
退出程序

如何在ubuntu终端运行.py文件?
ctrl+alt+t打开终端
输入python3+把想要运行的.py文件拖到终端里然后单击回车键 OK

在训练自己的数据时,标注图片数据。
可以直接点击下载
如果安装labelImg失败:
sudo apt-get install pyqt5-dev-tools
sudo pip3 install -r requirements/requirements-linux-python3.txt
make qt5py3
python3 labelImg.py
按照流程来弄如果遇到报错说labels文件内的文件不存在,你就把你的……_labels里面的所有文件复制到labels文件夹中。

软件卸载:
sudo apt-get remove……
sudo apt autoremove……

总而言之:遇到问题,把问题复制粘贴到百度上面就对了,疯狂百度反复csdn

训练自己的手势数据实际记录

用官方权重开始训练
./darknet detector train cfg/kua.data cfg/yolo-kua.cfg | tee person_train_log.txt

./darknet detector train cfg/kua.data cfg/yolov3.cfg | tee person_train_log.txt

用图片来进行识别测试
./darknet detect cfg/yolov3.cfg backup/yolov3_60000.weights kua100.jpg -thresh 0.4
千万不要在那个train.txt最后留有回车换行,不然后果很奇怪,程序莫名中断,说图片读取错误!!!!!!!!!!!!!!!!!!!!反复裂开整整一天!!!!!

查看显卡使用情况指令:
watch -n 1 nvidia-smi

如果发现模型训练过程中停止保存模型了就说明你的训练效果越来越差了
模型在训练过程中会不断将优化好的模型保存在yolov3.backup中(如果你打开yolov3.backup的属性,你就会发现他的修改时间会隔一段时间变化一次)

avg: 是平均Loss,这个数值应该越低越好,一般来说,一旦这个数值低于0.060730 avg就可以终止训练了。

_40000.weights
图片识别:
./darknet detect cfg/yolov3.cfg backup/yolov3_10004.weights hand54.jpg -thresh 0.12

./darknet detect cfg/yolov3.cfg yolov3_80000.weights

摄像头识别
./darknet detector demo cfg/kua.data cfg/yolov3.cfg yolov3_100010.weights -thresh 0.09

遇到一个非常奇怪的问题,不知道为什么Avg 先由1000多一直慢慢减小到5左右然后又突然增加到100,1000,10000……nan
怀疑是学习率太高导致模型发散了

中断后结合训练(后来这种方法不行了,换了下一种方法)
./darknet detector train cfg/kua.data cfg/yolov3.cfg backup/ yolov3_10000.weights | tee person_train_log.txt

中断训练后接着训练:
把相应的权重复制到darknet文件夹下面(这一步很重要不然会又需要重新训练过)
./darknet detector train cfg/kua.data cfg/yolov3.cfg yolov3_10009.weights | tee person_train_log.txt

学习率为0.00001训练了一个晚上,损失率还是只有0.8左右,没有减小到0.06以下。然后我又把学习率改为0.000001重新训练貌似收敛地挺快地。用80000次的模型0.000001的学习率一个晚上损失率从0.9到0.7。

奇怪:使用迁移学习后的模型就识别不了之前能识别的物种了?

用视频来识别:
./darknet detector demo cfg/kua.data cfg/yolov3.cfg yolov3_10000.weights bj.mp4 -thresh 0.01

ubuntu 茄子相机 打开usb摄像头
指令:cheese

图片分配80%训练集 20%测试集

yolov3 cfg代码解释(用于训练出更好的模型):
yolov3 cfg代码解释(用于训练出更好的模型)

里面大佬解释如何调整学习率: ★ 学习率决定着权值更新的速度,设置得太大会使结果超过最优值,太小会使下降速度过慢。如果仅靠人为干预调整参数,需要不断修改学习率。刚开始训练时可以将学习率设置的高一点,而一定轮数之后,将其减小在训练过程中,一般根据训练轮数设置动态变化的学习率。刚开始训练时:学习率以 0.01 ~ 0.001 为宜。一定轮数过后:逐渐减缓。接近训练结束:学习速率的衰减应该在100倍以上。学习率的调整参考

调整学习率
★★★ 学习率调整一定不要太死,实际训练过程中根据loss的变化和其他指标动态调整,手动ctrl+c结
束此次训练后,修改学习率,再加载刚才保存的模型继续训练即可完成手动调参,调整的依据是根据训练
日志来,如果loss波动太大,说明学习率过大,适当减小,变为1/5,1/10均可,如果loss几乎不变,
可能网络已经收敛或者陷入了局部极小,此时可以适当增大学习率,注意每次调整学习率后一定要训练久
一点,充分观察,调参是个细活,慢慢琢磨★★ 一点小说明:实际学习率与GPU的个数有关,例如你的学习率设置为0.001,如果你有4块GPU,那真实学习率为0.001/4

画loss:
python3 ‘/home/fengzi/darknet/line.py’
画loss的下载链接

本来使用300张图片进行训练,但是loss的值一直在0.6和1之间徘,然后我又增加了600张图片进去训练,此时学习率0.0001,看看效果怎么样吧:继续训练了半个小时,loss在0.6到1.7之间跳动 。将学习率改为0.00001继续训练2.5小时,loss下降到了0.37到0.6之间跳动。学习率0.00001继续训练。再次看看会有什么效果。(在此期间我又重新做了采集了1000张图片。)标注了两个小时左右。一共1830张图片,学习率0.00001,2小时,loss 0.52-0.28(用摄像头试着识别了一下,感觉有点效果了,但是还是距离理想的状态差了很远)。学习率0.000001继续训练……继续训练了10个小时,loss:3.5-5.5之间跳动,识别效果稍微好了一点点而以。又重把数据集都给删除了,重新采集了400张图片,这次的图片是根据测试时候出现的问题而采集,针对性地采集,学习率0.0001继续训练……1.5个小时过后loss:0.17-0.26跳动,学习率改为0.00001接着训练4小时,loss:0.08-0.14之间,识别效果还是差不多。。。。只能说这次的手势是别宣告失败了……………………………………………………下次再来…………继续慢慢寻找方法。

关注我:持续更新~~~~

深度学习yolov3 裂痕检测和手势识别教程 小白学习笔记相关推荐

  1. 如何高效学习Python?Python入门 Python教程 Python学习路线

    如何高效学习Python?Python入门 Python教程 Python学习路线 试想,这么好的回答,不读完岂不是后悔? Python岗位有哪些呢?主要的岗位有这些: Python全栈开发工程师(1 ...

  2. ps学习如何做旋转花瓣#ps教程#ps学习基础视频#ps抠图

    ps学习如何做旋转花瓣#ps教程#ps学习基础视频#ps抠图

  3. 《山世光:深度化的人脸检测与识别技术》读书笔记

    原文链接:http://www.leiphone.com/news/201610/rZ2Mn9UFF3x8FaEt.html 人脸识别过程 人脸识别的本质是对比两个照片是否是同一个人.这个过程可以分为 ...

  4. python学习详解_深入解析Python小白学习【操作列表】

    1.遍历列表 需要对列表中的每个元素都执行相同的操作时,可使用for 循环: magicians = ['alice','david','carolina'] for magician in magi ...

  5. 《CSS菜鸟教程》学习

    学习资料:<CSS菜鸟教程> 学习目标:熟悉CSS语法即可 CSS简介 什么是CSS? CSS(Cascading Style Sheets)层叠样式表 CSS定义了如何显示HTML元素 ...

  6. 《HTML菜鸟教程》学习

    学习资料:<HTML菜鸟教程> 学习目标:熟悉HTML的语法即可 开发环境:VSCode + Chrome + Plugin:Open In Default Browser 进度:2021 ...

  7. 小白学习MySQL - 一次慢SQL的定位

    同事提了个问题,某套测试环境MySQL执行语句出现hang. 作为小白,每次碰到问题,都是在积累经验.执行SQL出现hang,说明应该有会话处于等待状态,可以通过show processlist看下当 ...

  8. 小白学习MySQL - 不同版本创建用户的些许区别

    MySQL创建用户有很多种方法,例如常规create user,再通过grant,授予权限,还可直接grant连带创建用户和授权一起做了.最近创建过程中,发现不同版本操作有些区别. MySQL 5.7 ...

  9. 小白学习MySQL - 聊聊数据备份的重要性

    最近某套MySQL数据库服务器异常关机,导致MySQL不能正常拉起来,启动过程中,error日志中记录了如下的信息,可以看到,数据库因为异常关闭,此时会进行实例恢复的操作, [Note] InnoDB ...

最新文章

  1. 在ubuntu 16.04.5 LTS上使用Python 2.7生成带logo的二维码实战
  2. 宏基因组学揭示海洋微生物及其病毒的生态学
  3. python使用matplotlib可视化、使用matplotlib可视化scipy.misc图像、自定义使用winter色彩映射、将不同亮度映射到不同的色彩
  4. 全国首套中小学生人工智能教材在沪亮相
  5. EPOLL事件之EPOLLRDHUP
  6. CMD执行命令出现NOMALY: meaningless REX prefix used以及IDEA提示Cannot run git问题解决
  7. pandas的两种数据类型:Series和DataFrame
  8. BZOJ.4842.[NEERC2016]Delight for a Cat(费用流)
  9. LFM算法详解和实战
  10. CAD输出pdf显示失真
  11. netmeeting的使用(详解)
  12. Android本地音乐播放器(二)
  13. c语言数字的写法田字格,《国家规定的汉字笔顺规则》及田字格里写数字1~10的标准格式...
  14. 服务器sni协议,SNI协议分析
  15. STM32F103RCT6+BTN7971B+JGB37-520+PWM驱动电机
  16. Python中find_elements以及presence_of_element_located的用法
  17. 【WIN7深度揭秘】将你的笔记本打造成WI-FI基站实现无线共享上网
  18. android计算器开源小项目代码(附安装包.apk)
  19. 《人性的弱点》读书笔记
  20. c语言用指针分离字符串数字与字符,c语言实验报告,指针的应用分别输出字符串中的数字和其他字符(共10篇).docx...

热门文章

  1. 用Python中BeautifulSoup爬取翻页式网页图片(爬取海贼王漫画)
  2. unity 皮肤材质效果实现分析
  3. spring cloud gateway 无故在/tmp文件夹下生成以synchronoss-file-upload开头大量文件夹
  4. mybatis的2种缓存机制(1)
  5. 如何获取 Github 上Xilinx Vitis, Vitis 库等资源
  6. ICV:2022年中国车载激光雷达市场规模突破1亿美元
  7. 如何升级win10版本 - vhd
  8. Messenger 麻烦了解一下
  9. 美团一面 电话面试(web前端开发工程师)
  10. Android LowmemoryKiller机制