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

posted @ 2020-05-03 07:43  吴建明wujianming  阅读(509)  评论(0编辑  收藏  举报