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风扇预先安装和足够的空间,不必担心电缆管理,这是很好的,性价比高。