AlexeyAB DarkNet YOLOv3框架解析与应用实践(六)
AlexeyAB DarkNet YOLOv3框架解析与应用实践(六)
1. Tiny Darknet
听过很多人谈论SqueezeNet。
SqueezeNet很酷,但它只是优化参数计数。当大多数高质量的图像是10MB或更大时,为什么要关心的型号是5MB还是50MB?如果想要一个小模型,实际上很快,为什么不看看darknet参考网络?它只有28MB,但更重要的是,它只有8亿个浮点运算。最初的Alexnet是23亿。darknet是速度的2.9倍,而且它很小,准确度提高了4%。
那么SqueezeNet呢?当然,重量只有4.8mb,但向前传球仍然是22亿次。Alexnet是一个伟大的分类第一关,但不应该被困在时代时,网络这么坏也这么慢!
但不管怎样,人都很喜欢SqueezeNet络,所以如果真的坚持使用小型网络,请使用:
Tiny Darknet
Model |
Top-1 |
Top-5 |
Ops |
Size |
AlexNet |
57.0 |
80.3 |
2.27 Bn |
238 MB |
Darknet Reference |
61.1 |
83.0 |
0.81 Bn |
28 MB |
SqueezeNet |
57.5 |
80.3 |
2.17 Bn |
4.8 MB |
Tiny Darknet |
58.7 |
81.7 |
0.98 Bn |
4.0 MB |
真正的赢家显然是Darknet参考模型,但如果你坚持想要一个小模型,请使用Tiny Darknet。或者自己训练,应该很容易!
下面是如何在Darknet中使用它(以及如何安装Darknet):
git clone https://github.com/pjreddie/darknet
cd darknet
make
wget https://pjreddie.com/media/files/tiny.weights
./darknet classify cfg/tiny.cfg tiny.weights data/dog.jpg
Hopefully you see something like this:
data/dog.jpg: Predicted in 0.160994 seconds.
malamute: 0.167168
Eskimo dog: 0.065828
dogsled: 0.063020
standard schnauzer: 0.051153
Siberian husky: 0.037506
下面是配置文件:tiny.cfg
模型只是一些3x3和1x1卷积层:
layer filters size input output
0 conv 16 3 x 3 / 1 224 x 224 x 3 -> 224 x 224 x 16
1 max 2 x 2 / 2 224 x 224 x 16 -> 112 x 112 x 16
2 conv 32 3 x 3 / 1 112 x 112 x 16 -> 112 x 112 x 32
3 max 2 x 2 / 2 112 x 112 x 32 -> 56 x 56 x 32
4 conv 16 1 x 1 / 1 56 x 56 x 32 -> 56 x 56 x 16
5 conv 128 3 x 3 / 1 56 x 56 x 16 -> 56 x 56 x 128
6 conv 16 1 x 1 / 1 56 x 56 x 128 -> 56 x 56 x 16
7 conv 128 3 x 3 / 1 56 x 56 x 16 -> 56 x 56 x 128
8 max 2 x 2 / 2 56 x 56 x 128 -> 28 x 28 x 128
9 conv 32 1 x 1 / 1 28 x 28 x 128 -> 28 x 28 x 32
10 conv 256 3 x 3 / 1 28 x 28 x 32 -> 28 x 28 x 256
11 conv 32 1 x 1 / 1 28 x 28 x 256 -> 28 x 28 x 32
12 conv 256 3 x 3 / 1 28 x 28 x 32 -> 28 x 28 x 256
13 max 2 x 2 / 2 28 x 28 x 256 -> 14 x 14 x 256
14 conv 64 1 x 1 / 1 14 x 14 x 256 -> 14 x 14 x 64
15 conv 512 3 x 3 / 1 14 x 14 x 64 -> 14 x 14 x 512
16 conv 64 1 x 1 / 1 14 x 14 x 512 -> 14 x 14 x 64
17 conv 512 3 x 3 / 1 14 x 14 x 64 -> 14 x 14 x 512
18 conv 128 1 x 1 / 1 14 x 14 x 512 -> 14 x 14 x 128
19 conv 1000 1 x 1 / 1 14 x 14 x 128 -> 14 x 14 x1000
20 avg 14 x 14 x1000 -> 1000
21 softmax 1000
22 cost 1000
2. DarkGo: Go in Darknet
AlphaGo让对玩游戏的神经网络感兴趣。
还没有真正读过他的论文,但已经实现了所想象的类似于他的策略网络的东西。它是一种神经网络,预测围棋中最有可能的下一步动作。可以和专业游戏一起玩,看看接下来可能会发生什么动作,让它自己玩,或者尝试与它对抗!
目前DarkGo的水平是1。这对于一个没有前瞻性的网络来说是非常好的,但是只评估当前的状态。
Playing With A Trained Model
First install Darknet, this can be accomplished with:
git clone https://github.com/pjreddie/darknet
cd darknet
make
Also download the weights file:
wget pjreddie.com/media/files/go.weights
Then run the Go engine in testing mode:
./darknet go test cfg/go.test.cfg go.weights
这将产生一个交互式围棋板。可以:
按回车键,只需从计算机中播放第一个建议的移动
输入一个类似于3的数字来播放该数字建议
输入一个像A 15这样的位置来执行这个动作
输入c A 15以在A 15清除任何碎片
输入b 15在a15处放置黑色块
输入w A 15在15处放置一个白色块
输入p通过转弯
玩得高兴!
如果希望网络更强大,请将flag-multi添加到testing命令中。这将在多次旋转和翻转时评估板,以获得更好的概率估计。它可以在CPU上很慢,但如果有CUDA的话,它会很快。 数据
使用休·珀金斯的Github的Go数据集。给Darknet提供的数据是一个单通道图像,对当前游戏状态进行编码。1代表的棋子,-1代表对手的棋子,0代表空白。该网络预测当前玩家下一步可能在哪里玩。
在后处理后使用的完整数据集可以在此处找到(3.0 GB),仅用于训练:
开始训练
3. Hardware Guide: Neural Networks on GPUs (Updated 2016-1-30)
卷积神经网络目前在计算机视觉领域非常流行。然而,由于它是相对较新的,而且这个领域在它周围发展的如此之快,许多人对如何最好地训练它感到困惑。
英伟达希望您购买他的新数字Devbox,但价格为15000美元,有8-10周的延迟时间,不知道为什么会有人想要它。大约6000美元税后,可以建立自己的4 GPU盒,在短短几天内从新蛋船运。
完整版本
可以在这里找到的全部build编译。这只是为了盒子,还需要一些GPU。从亚马逊买了4辆EVGA Titan_X。
基本的电脑是1400美元,再加上4千美元的GPU,就准备好了!不到15000美元。
GPU
可能最重要和最昂贵的部分,的build编译将是GPU,并有充分的理由。gpu在训练和测试神经网络方面比CPU快100倍以上。的大部分计算都是将大矩阵相乘在一起,所以需要一张具有高单精度性能的卡。
CPU: Intel Core i7-5820K
大量廉价内存。32GB应该足够了,尽管这意味着的RAM比VRAM少!
SSD: Mushkin Enhanced Reactor 2.5" 1TB
Titan X
这可能是想要的。这款游戏机被设计成英伟达(NVIDIA)最高端的游戏GPU,其处理能力高达7 TFLOPS,售价仅为1000美元,您可以将其中的4台设备安装在一台机器上。有了12GB的VRAM,他可以运行所有的大模型,并有足够的空间。
网上的人似乎认为EVGA和华硕在质量上是相当的,但EVGA有更好的客户服务,所以会得到那个。在亚马逊买的,因为它比其他选择便宜一点,而且发货很快。
竞品:特斯拉K40、K80、其他GeForce 900
K40和K80更倾向于高双精度的性能,并不真正关心。它的单精度性能与泰坦X不相上下,但有着显著的提高。
其他高端GTX卡,如980和980Ti,与Titan X相比,可以获得很好的单精度性能,但如果您需要大量的处理能力,则使用4 Titan X运行一台机器要比使用8 980生产两台机器简单得多。下面是比较:
- Titan X: $1,000, 6.9 TFLOPS, 6.9 GFLOPS/$
- GTX 980 Ti: $670, 5.6 TFLOPS, 8.4 GFLOPS/$
- GTX 980: $500, 4.1 TFLOPS, 8.2 GFLOPS/$
- Tesla K40: $3,000, 4.3 TFLOPS, 1.4 GFLOPS/$
- Tesla K80: $5,000, 8.7 TFLOPS, 1.7 GFLOPS/$
从效率的角度来看,980TI是领先的。不过,确实做出了一些牺牲:只有6gb的VRAM,总体性能也比较慢。如果手头拮据, 980TI是个不错的选择。主要的外卖是,无论如何,不要得到特斯拉斯。拿出来的东西都很贵。如果想在一个盒子比泰坦X的整体处理能力是最好的选择。
Motherboard: GIGABYTE GA-X99-UD3P
主板最重要的方面是,它可以容纳所有的卡。不管选什么,确保它能支持4卡。一般来说,寻找高端游戏主板。有足够的空间放4张双宽卡。
SSD: Mushkin Enhanced Reactor 2.5" 1TB
可以花很多钱买一个像NVIDIA的devbox那样的9tb RAID,或者可以只买一个SSD。备份硬盘仍然是个好主意,可以放在同一台机器上,也可以通过远程同步训练过的型号。但这一个固态硬盘将足以存储和服务您的数据,甚至到4个GPU同时。可以在一个磁盘上同时运行4个最快的Imagenet模型,而不会延迟训练。这意味着它每秒加载大约1000个图像(大约16MB)!因为大多数型号都比较大,所以现在从磁盘加载不会成为您的瓶颈。 唯一的缺点是尺寸。如果处理的是非常大的数据集,可能需要一个更大的硬盘来存储数据,然后再进行预处理。
Case: Rosewill Thor V2
这可能是最不重要的,但看起来确实很酷!真的只需要一个足够大的箱子来舒适地安装所有的部件。4 GPU占用了很多空间!也想要酷的东西。Rosewill包4风扇预先安装和足够的空间,不必担心电缆管理,这是很好的,性价比高。
AlexeyAB DarkNet YOLOv3框架解析与应用实践(六)的更多相关文章
- AlexeyAB DarkNet YOLOv3框架解析与应用实践(五)
AlexeyAB DarkNet YOLOv3框架解析与应用实践(五) RNNs in Darknet 递归神经网络是表示随时间变化的数据的强大模型.为了更好地介绍RNNs,我强烈推荐Andrej K ...
- AlexeyAB DarkNet YOLOv3框架解析与应用实践(四)
AlexeyAB DarkNet YOLOv3框架解析与应用实践(四) Nightmare 从前,在一所大学的大楼里,西蒙尼亚.维达第和齐瑟曼有一个很好的主意,几乎和你现在坐的大楼完全不同.他们想,嘿 ...
- AlexeyAB DarkNet YOLOv3框架解析与应用实践(三)
AlexeyAB DarkNet YOLOv3框架解析与应用实践(三) ImageNet分类 您可以使用Darknet为1000级ImageNet挑战赛分类图像.如果你还没有安装Darknet,你应该 ...
- AlexeyAB DarkNet YOLOv3框架解析与应用实践(二)
AlexeyAB DarkNet YOLOv3框架解析与应用实践(二) 版本3有什么新功能? YOLOv3使用了一些技巧来改进训练和提高性能,包括:多尺度预测.更好的主干分类器等等.全部细节都在我们的 ...
- AlexeyAB DarkNet YOLOv3框架解析与应用实践(一)
AlexeyAB DarkNet YOLOv3框架解析与应用实践(一) Darknet: C语言中的开源神经网络 Darknet是一个用C和CUDA编写的开源神经网络框架.它速度快,易于安装,支持C ...
- mybatis 3.x源码深度解析与最佳实践(最完整原创)
mybatis 3.x源码深度解析与最佳实践 1 环境准备 1.1 mybatis介绍以及框架源码的学习目标 1.2 本系列源码解析的方式 1.3 环境搭建 1.4 从Hello World开始 2 ...
- iScroll框架解析——Android 设备页面内 div(容器,非页面)overflow:scroll; 失效解决(转)
移动平台的活,兼容问题超多,今儿又遇到一个.客户要求在弹出层容器内显示内容,但内容条数过多,容器显示滚动条.按说是So easy,容器设死宽.高,CSS加属性 overflow:scroll; -we ...
- .NET Core 多框架支持(net45+netstandard20)实践中遇到的一些问题总结
.NET Core 多框架支持(net45+netstandard20)实践中遇到的一些问题总结 前言 本文主要是关于.NET Standard 代码 在多框架 和 多平台 支持自己实践过程中遇到的一 ...
- [转载]iOS 10 UserNotifications 框架解析
活久见的重构 - iOS 10 UserNotifications 框架解析 TL;DR iOS 10 中以前杂乱的和通知相关的 API 都被统一了,现在开发者可以使用独立的 UserNotifica ...
随机推荐
- Linux在shell终端中清空DNS缓存,刷新DNS的方法
现在很多Linux发行版都没有内置DNS本地缓存,Linux不像Windows那样可以使用ipconfig /flushdns来刷新,在Linux下无需刷新,因为本身没有缓存. 前言 在Linux系统 ...
- php自定义配置文件简单写法
1 <?php 2 header("Content-type:text/html;charset=utf-8"); 3 4 $q = getconfig('rr'); 5 e ...
- Python 巡检接入钉钉机器人
前段时间,为了快速实现巡检服务器设备的健康状态,我简单的写了一个巡检工具,该工具已经可以满足我的大部分需求了,不过,每次都要自己手动去点击巡检才能知道今天设备的状态,由于每天巡检严重影响我学习逆向技术 ...
- Win10 ntoskrnl.exe蓝屏解决
主机一直用的是无线网卡,装Win10下载驱动.不管是Window10自己更新,还是通过驱动人生.驱动精灵等安装的Killer网卡驱动,均日常导致蓝屏. 状态是这样的:玩游戏蓝屏.检测系统蓝屏.清垃圾蓝 ...
- Day003 巧妙验证短路运算
&&的短路运算 条件1&&条件2...&&条件n,程序会先判断条件1,如果条件1为false,则不判断后面的条件,直接返回false 怎么判断程序到底有 ...
- 使用C#进行数据库增删改查ADO.NET(一)
这节讲一下如何使用C#进行数据库的增删改查操作,本节以SQL Server数据库为例. .NET 平台,使用ADO.NET 作为与数据库服务器的桥梁,我们通过ADO.NET就可以使用C#语言操作数据库 ...
- 合并两个yuv文件的C++代码
//将BasketballPass_416x240_50.yuv序列的前50帧和BlowingBubbles_416x240_50.yuv序列的前250帧合并成out.yuv //参数配置416 24 ...
- 【Web前端HTML5&CSS3】08-盒模型补充
笔记来源:尚硅谷Web前端HTML5&CSS3初学者零基础入门全套完整版 目录 盒模型补充及田径场实战 1. 盒子大小 2. 轮廓 3. 阴影 4. 圆角 圆 椭圆 盒模型补充及田径场实战 1 ...
- [Java] javaEE
定义 面向企业级应用中一些通用模块制定的标准 避免重复开发,解决代码可靠性问题 13种规范 JDBC(JavaDatabase Connectivity):数据库连接 以统一方式访问数据库的API J ...
- 使用LUKS加密你的磁盘
计算机数据的安全,保密性在现在的生活中显得越来越重要.随着数字化的时代的来临,越来越多的数据被数字化,特别是更多有关于我们隐私的数据在不断生成,甚至还有我们需要离线保存的密钥等.而且通常我们使用磁盘, ...