darknet优化经验-AlexeyAB大神经验
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
darknet优化经验-AlexeyAB大神经验的更多相关文章
- AlexeyAB大神版yolo 待完善
目录 darknet优化经验 1. AlexeyAB改进项 2. Linux下编译选项 3. 训练经验 4. 提升检测效果 5. 总结 6. AlexeyAB大神改进 darknet优化经验 主要来自 ...
- 实战经验|大神战队都在i春秋教你打CTF
全国大学生信息安全竞赛创新实践能力赛旨在培养.选拔.推荐优秀信息安全专业人才创造条件,促进高等学校信息安全专业课程体系.教学内容和方法的改革,培养学生的创新意识与团队合作精神,普及信息安全知识,增强学 ...
- 一个4年工作经验的java程序员的困惑,怎样才能能为一个架构师,请教大神
一个4年工作经验的java程序员的困惑,怎样才能能为一个架构师 LZ本人想往架构师发展, 业余时间也会看一些书籍, 但是感觉没有头绪, 有些书看了,也没有地方实践 我做了4年的java开发, 在一个公 ...
- ACM 大神的经验加技巧(当然不是我的拉——
大神 犯错合集及需要注意的东西 1.在一个地图求最大面积的类问题中,要注意障碍结点的影响. 2.ll(),表示的是在运算后把括号内强制转化为类型ll,而(ll)表示后面的每个玩意都强制转化为类型ll. ...
- 每一个程序员都应该知道的高并发处理技巧、创业公司如何解决高并发问题、互联网高并发问题解决思路、caoz大神多年经验总结分享
本文来源于caoz梦呓公众号高并发专辑,以图形化.松耦合的方式,对互联网高并发问题做了详细解读与分析,"技术在短期内被高估,而在长期中又被低估",而不同的场景和人员成本又导致了巨头 ...
- MYSQL性能优化的最佳20+条经验
MYSQL性能优化的最佳20+条经验 2009年11月27日 陈皓 评论 148 条评论 131,702 人阅读 今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显.关于数 ...
- 使用ThinkPHP开发中MySQL性能优化的最佳21条经验
使用ThinkPHP开发中MySQL性能优化的最佳21条经验讲解,目前,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显.关于数据库的性能,这并不只是DBA才需要担心的事,而这更 ...
- 【TOP100案例专访】当当网工程师林嘉琦谈双11大促经验及APM实践
导读:第七届TOP100全球软件案例研究峰会将于11月30日-12月3日在北京国家会议中心举办,本届峰会以“释放AI生产力 让组织向智能化演进”为开幕式主题,旨在推动企业在趋势下拥抱AI.探索和思考A ...
- Splunk大数据分析经验分享
转自:http://www.freebuf.com/articles/database/123006.html Splunk大数据分析经验分享:从入门到夺门而逃 Porsche 2016-12-19 ...
随机推荐
- Hibernate学习(三)———— 一对多映射关系
序言 前面两节讲了hibernate的两个配置文件和hello world!.还有hibernate的一级缓存和三种状态,基本上hibernate就懂一点了,从这章起开始一个很重要的知识点,hiber ...
- POJ 3037 Skiing(如何使用SPFA求解二维最短路问题)
题目链接: https://cn.vjudge.net/problem/POJ-3037 Bessie and the rest of Farmer John's cows are taking a ...
- ASP.NET Core Identity 实战(2)——注册、登录、Claim
上一篇文章(ASP.NET Core Identity Hands On(1)--Identity 初次体验)中,我们初识了Identity,并且详细分析了AspNetUsers用户存储表,这篇我们将 ...
- [android] 手机卫士保存安全号码
调用ListView对象的setOnItemClickListener()方法,设置条目的点击事件,参数:OnItemClickListener对象 使用匿名内部类实现,重写onClick()方法,传 ...
- Java学习笔记之——if条件语句和三目运算符
一.if条件语句 语法: if(条件){ 执行语句1: }else{ 执行语句2: } 二.三目运算符 ? 条件运算符 语法: 表达式?结果1:结果2: 如果表达式结果为true,则结果为结果1 ...
- 【Tomcat】压力测试和优化
一.采用jmeter进行测试 为什么使用jmeter, 它免费开源, 不断发展, 功能逐渐强大. 可以做功能,负载, 性能测试.一套脚本可以同时用于功能和性能测试.Jmeter 有着众多的插件开发者, ...
- Spring源码分析之IoC容器初始化
本文首发于cdream个人博客(点击获得更加阅读体验) 欢迎转载,转载请注明出处 作为一个java程序员,保守估计一年里也都有300天要和Spring有亲密接触~~像我这种怕是每天都要撸撸Spring ...
- LVS+keepalived 实战
安装依赖: yum -y install wget libnl* popt* gcc.x86_64 gcc-c++.x86_64 gcc-objc++.x86_64 kernel-devel.x86_ ...
- wangEditor-基于javascript和css开发的 Web富文本编辑器, 轻量、简洁、易用、开源免费(2)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- python小练习:用户三次登陆, 购物车
2018.12.1 周末练习: 1.用户三次登陆 from random import randint i = 1 while i < 4: num = 0 verify_code = '' w ...