AlexeyAB大神版yolo 待完善
darknet优化经验
主要来自于:AlexeyAB 版本darknet
1. AlexeyAB改进项
提供window支持
相较于原版pjreddie版本darknet提升了训练速度
添加了二值化网络,XNOR(bit) ,速度快,准确率稍低https://github.com/AlexeyAB/darknet/blob/master/cfg/yolov3-tiny_xnor.cfg
提升7%通过将卷积层和BN层合并为一个(*_*)不太懂。
多GPU训练提升
修补了[reorg]层
添加了mAP, IOU,Precision-Recall计算
darknet detector map...
可以在训练过程中画loss图像
添加了根据自己数据集的anchor生成
提升视频检测,网络摄像头,opencv相关问题
提出了一个INT8的网络,提升了检测速度,但是准确率稍有下降
2. Linux下编译选项
GPU=1
to build with CUDA to accelerate by using GPU (CUDA should be in/usr/local/cuda
)CUDNN=1
to build with cuDNN v5-v7 to accelerate training by using GPU (cuDNN should be in/usr/local/cudnn
)CUDNN_HALF=1
to build for Tensor Cores (on Titan V / Tesla V100 / DGX-2 and later) speedup Detection 3x, Training 2xOPENCV=1
to build with OpenCV 3.x/2.4.x - allows to detect on video files and video streams from network cameras or web-camsDEBUG=1
to bould debug version of YoloOPENMP=1
to build with OpenMP support to accelerate Yolo by using multi-core CPULIBSO=1
to build a librarydarknet.so
and binary runable fileuselib
that uses this library. Or you can try to run soLD_LIBRARY_PATH=./:$LD_LIBRARY_PATH ./uselib test.mp4
How to use this SO-library from your own code - you can look at C++ example: https://github.com/AlexeyAB/darknet/blob/master/src/yolo_console_dll.cpp or use in such a way:LD_LIBRARY_PATH=./:$LD_LIBRARY_PATH ./uselib data/coco.names cfg/yolov3.cfg yolov3.weights test.mp4
3. 训练经验
- 首先对数据集进行检错,使用提供的如下库进行检测:
https://github.com/AlexeyAB/Yolo_mark
什么时候停止训练
avg loss不再下降的时候
通常每个类需要2000-4000次迭代训练即可
防止过拟合:需要在Early stopping point停止训练
使用以下命令:
darknet.exe detector map
...建议训练的时候带上
-map
,可以画图
4. 提升检测效果
random=1可以设置适应多分辨率
提升分辨率:416--> 608等必须是32倍数
重新计算你的数据集的anchor:(注意设置的时候计算问题)
darknet.exe detector calc_anchors data/obj.data -num_of_clusters 9 -width 416 -height 416
检查数据集通过https://github.com/AlexeyAB/Yolo_mark
数据集最好每个类有2000张图片,至少需要迭代2000*类的个数
数据集最好有没有标注的对象,即负样本,对应空的txt文件,最好有多少样本就设计多少负样本。
对于一张图有很多个样本的情况,使用max=200属性(yolo层或者region层)
for training for small objects - set
layers = -1, 11
instead of https://github.com/AlexeyAB/darknet/blob/6390a5a2ab61a0bdf6f1a9a6b4a739c16b36e0d7/cfg/yolov3.cfg#L720 and setstride=4
instead of https://github.com/AlexeyAB/darknet/blob/6390a5a2ab61a0bdf6f1a9a6b4a739c16b36e0d7/cfg/yolov3.cfg#L717训练数据需要满足以下条件:
train_network_width * train_obj_width / train_image_width ~= detection_network_width * detection_obj_width / detection_image_width
train_network_height * train_obj_height / train_image_height ~= detection_network_height * detection_obj_height / detection_image_height
为了加速训练,可以做fine-tuning而不是从头开始训练,设置stopbackward=1在网络的结束部分(以####作为分割)
在训练完以后,进行目标检测的时候,可以提高网络的分辨率,以便刚好检测小目标。
- 不需要重新训练,需要使用原先低分辨率的权重,测用更高分辨率。
- 为了得到更高的检测效果,可以提升分辨率至608*608甚至832*832
5. 总结
为了小目标:
- 提升分辨率
- 在测试时候提升分辨率
- 数据集添加跟正样本数量一样多的负样本
- 数据集每个类至少2000张,训练迭代次数2000*classes个数
- 设置自己数据集的anchor
6. AlexeyAB大神改进
- web-cam版本:
./darknet detector demo ... -json_port 8070 -mjpeg_port 8090
- 计算mAP, F1, IoU, Precision-Recall
./darknet detector map ...
- 展示map-loss曲线(需要opencv)
./darknet detector train cfg/voc.data cfg/yolo.cfg -dont_show -mjpeg_port 8090 -map
- 计算聚类产生的anchor
./darknet detector calc_anchors data/voc.data -num_of_clusters 12 -width 608 -height 608
- 分离前部基础网络
./darknet partial cfg/darknet19_448.cfg darknet19_448.weights darknet19_448.conv.23 23
- 测试opencv
./darknet imtest data/eagle.jpg
- 阈值设置
-thresh 0
AlexeyAB大神版yolo 待完善的更多相关文章
- darknet优化经验-AlexeyAB大神经验
目录 darknet优化经验 1. AlexeyAB改进项 2. Linux下编译选项 3. 训练经验 4. 提升检测效果 5. 总结 6. AlexeyAB大神改进 darknet优化经验 主要来自 ...
- 【王者荣耀之IT大神版】1.1版本升级之“投降机制”
版本:1.1 关于“投降机制”的理论基础与灵感来源于<微习惯>这本书. 简单来说,微习惯就是很小很小的习惯,比如说,每天做一个俯卧撑,每天看一页书等等.我们以前也许有过很多的计划,但却总是 ...
- 【王者荣耀之IT大神版】铭文说明
铭文共分五级: 一级:仅有老师提供的笔记 二级:添加了自己的听课笔记 三级:添加问题+解决方案(常遇到的问题以及自己实践上遇到的问题,排位赛遇到的遗忘点) 四级:熟记铭文与并添加联想学过的知识 五级: ...
- 【王者荣耀之IT大神版】比赛制度说明(匹配赛、排位赛、赏金赛)
匹配赛(30分钟): 所得金币=6金币/分钟 经验(挂机:玩手机超过30秒): 名次 经验值 胜利条件 失败条件 1 5 提前10min 超出1min 2 4 提前8min 超出3min 3 4 提前 ...
- HTMLTestRunner 汉化版---来源一个大神的源码(加了失败截图,用例失败重新执行 功能)
HTMLTestRunner 汉化版 20170925 测试报告完全汉化,包括错误日志的中文处理 针对selenium UI测试增加失败自动截图功能 增加失败自动重试功能 增加饼图统计 同时兼容pyt ...
- 解迷宫的C++的未完善编程代码........请大神们帮忙改善下.........
这...................................................................... 我也是醉了 看不太懂,大神们求解............ ...
- 酷派大神F2系列使用QPST进行nv备份和恢复,解决无信号问题(附备份文件)
测试机器: 大神F2联通版 8675_W00 系统COOLUI55 写贴原因: 自己无意间刷错了包,结果手机无信号,进入工程模式怎么设置都没有用.尝试过系统还原(备份过).刷新的ROM.线刷, ...
- 有关UITableViewCell的侧滑删除以及使用相关大神框架MGSwipeTableCell遇到的小问题
提起笔,却不知道从何写起了,今天一整天都耗费在了这个可能根本不算是问题的小问题上,至今仍有一种蛋蛋的忧桑..(噢,不是提笔,是键盘手T_T) 表格视图在项目中就像是每日的家常便饭,在cell上添加侧滑 ...
- 某大神C#框架后台发送信息的查找及破解
最近在博客园瞎逛的时候,发现了某个大神发布的一个c#框架,一看框架,叫牛逼框架,嗯,装B效果太好了,界面很炫,虽然有很多的组件还是不怎么完善,但是,已经可以初步运用于项目了. 先来看看界面: 在进 ...
随机推荐
- Springboot整合Websocket遇到的坑
Springboot整合Websocket遇到的坑 一.使用Springboot内嵌的tomcat启动websocket 1.添加ServerEndpointExporter配置bean @Confi ...
- Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/fs/CanUnbuffer
在执行spark on hive 的时候在 sql.show()处报错 : Exception in thread "main" java.lang.NoClassDefFoun ...
- JS经典题目解析
此次列举出一些觉得有意思的JS题目(来源于出了名的44题),相信有非常多关于这些题目的博客,写这篇博客的目的在于巩固一些知识点,希望能和读者共同进步. 1. map函数执行过程 ["1&qu ...
- Js中的闭包原理
要了解清楚js中的闭包制机,那么得先了解全局执行环境.块级执行环境.函数执行环境.变量对象.环境栈.作用域链.摧毁执行环境. 全局执行环境 全局执行环境指的是最外层的执行环境.在web中全局执行环境被 ...
- vue-i18n和ElementUI国际化使用
在main.js同级建i18n文件夹,并里面建i18n.js.langs文件夹,langs文件夹下建en.js.cn.js目录如下: 展示效果地址: http://www.cenweixin.cn/w ...
- Grafan+Prometheus 监控 MySQL
架构图 环境 IP 环境 需装软件 192.168.0.237 mysql-5.7.20 node_exporter-0.15.2.linux-amd64.tar.gz mysqld_exporter ...
- JS apply的巧妙用法以及扩展到Object.defineProperty的使用
Math.max 实现得到数组中最大的一项 var array = [1,2,3,4,5]; var max = Math.max.apply(null, array); console.log(ma ...
- 如何查看程序所占端口号和IP
如何查看程序所占端口号和IP 一个软件可能占用多个端口拥有多个目标IP,下面以FQ工具Lantern为例,说明端口查看方法: 1.借助第三方软件查看 如果你电脑上安装了360等优化工具,可能会自带查看 ...
- Android IPC机制(一)开启多进程
1. 为何要开启多进程 为何开启android应用要开启多进程,主要有以下几点: 单进程所分配的内存不够,需要更多的内存.在早期android系统只为一个单进程的应用分配了16M的可用内存,随着手机的 ...
- python--文件流读写
在讲述fileinput模块之前,首先说一下python内置的文件API—open()函数以及与其相关的函数. 我这里主要讲讲其中四个比较重要和常用的方法,更多的方法,可以参考:菜鸟教程http:// ...