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框架解析与应用实践(六)的更多相关文章

  1. AlexeyAB DarkNet YOLOv3框架解析与应用实践(五)

    AlexeyAB DarkNet YOLOv3框架解析与应用实践(五) RNNs in Darknet 递归神经网络是表示随时间变化的数据的强大模型.为了更好地介绍RNNs,我强烈推荐Andrej K ...

  2. AlexeyAB DarkNet YOLOv3框架解析与应用实践(四)

    AlexeyAB DarkNet YOLOv3框架解析与应用实践(四) Nightmare 从前,在一所大学的大楼里,西蒙尼亚.维达第和齐瑟曼有一个很好的主意,几乎和你现在坐的大楼完全不同.他们想,嘿 ...

  3. AlexeyAB DarkNet YOLOv3框架解析与应用实践(三)

    AlexeyAB DarkNet YOLOv3框架解析与应用实践(三) ImageNet分类 您可以使用Darknet为1000级ImageNet挑战赛分类图像.如果你还没有安装Darknet,你应该 ...

  4. AlexeyAB DarkNet YOLOv3框架解析与应用实践(二)

    AlexeyAB DarkNet YOLOv3框架解析与应用实践(二) 版本3有什么新功能? YOLOv3使用了一些技巧来改进训练和提高性能,包括:多尺度预测.更好的主干分类器等等.全部细节都在我们的 ...

  5. AlexeyAB DarkNet YOLOv3框架解析与应用实践(一)

    AlexeyAB DarkNet YOLOv3框架解析与应用实践(一) Darknet:  C语言中的开源神经网络 Darknet是一个用C和CUDA编写的开源神经网络框架.它速度快,易于安装,支持C ...

  6. mybatis 3.x源码深度解析与最佳实践(最完整原创)

    mybatis 3.x源码深度解析与最佳实践 1 环境准备 1.1 mybatis介绍以及框架源码的学习目标 1.2 本系列源码解析的方式 1.3 环境搭建 1.4 从Hello World开始 2 ...

  7. iScroll框架解析——Android 设备页面内 div(容器,非页面)overflow:scroll; 失效解决(转)

    移动平台的活,兼容问题超多,今儿又遇到一个.客户要求在弹出层容器内显示内容,但内容条数过多,容器显示滚动条.按说是So easy,容器设死宽.高,CSS加属性 overflow:scroll; -we ...

  8. .NET Core 多框架支持(net45+netstandard20)实践中遇到的一些问题总结

    .NET Core 多框架支持(net45+netstandard20)实践中遇到的一些问题总结 前言 本文主要是关于.NET Standard 代码 在多框架 和 多平台 支持自己实践过程中遇到的一 ...

  9. [转载]iOS 10 UserNotifications 框架解析

    活久见的重构 - iOS 10 UserNotifications 框架解析 TL;DR iOS 10 中以前杂乱的和通知相关的 API 都被统一了,现在开发者可以使用独立的 UserNotifica ...

随机推荐

  1. <JVM上篇:内存与垃圾回收篇>01-JVM与Java体系结构

    笔记来源:尚硅谷JVM全套教程,百万播放,全网巅峰(宋红康详解java虚拟机) 同步更新:https://gitee.com/vectorx/NOTE_JVM https://codechina.cs ...

  2. Cmder右键配置

    Cmder右键配置 每次用camder手动一层一层的进入目标文件夹,是一件很麻烦的事儿.所以,将camder添加到系统右键菜单是个很好地解决方法. 1.把 Cmder 加到环境变量 把Cmder.ex ...

  3. mysql用户创建触发器权限不足跟参数log_bin_trust_function_creators

    问题描述 有业务反馈当前用户无法创建触发器和存储过程,让用户自己测试,该用户进行对表的增删改查等其他权限没有问题,这边用root用户查证,该用户拥有对当前库的所有权限,但是为什么就是创建不了触发器呢? ...

  4. 关于HTTP的一些概念

    各种概念 HTTP HTTP(HyperText Transfer Protocol) -- 超文本传输协议 它可以拆成三个部分:"超文本"."传输".&quo ...

  5. 多线程-5.JMM之happens-before原则

    a happens-before b 翻译为a操作对b操作是可见的.可见即是指共享变量的更改能获知. 特性:传递性 原则:volatile定义的变量 写操作 happens-before 读操作 同一 ...

  6. 使用DevExpress的GridControl实现多层级或无穷级的嵌套列表展示

    在我早期的随笔<在GridControl表格控件中实现多层级主从表数据的展示>中介绍过GridControl实现二级.三级的层级列表展示,主要的逻辑就是构建GridLevelNode并添加 ...

  7. 有关80386cpu在保护模式下的虚拟地址,线性地址和实际物理地址的关系

    80386cpu是8086cpu的升级版,其具有32位的寄存器.(32根地址线和32根数据线) 8086cpu其是16位的寄存器但是其地址线有20根,其寻址范围为2的20次方,但是有一个16位的寄存器 ...

  8. 『动善时』JMeter基础 — 18、JMeter配置元件【计数器】

    目录 1.计数器介绍 2.计数器界面详解 3.计数器的使用 (1)测试计划内包含的元件 (2)线程组界面内容 (3)计数器界面内容 (4)HTTP请求界面内容 (5)查看结果 1.计数器介绍 如果需要 ...

  9. 持续集成和持续交付工具-jenkins

    jenkins说明 jenkins是一款由Java编写的开源的持续集成工具,它运行在Servlet容器中(例如Apache Tomcat).它支持软件配置管理(SCM)工具(包括AccuRev SCM ...

  10. golang:net/http理解总结

    Go语言标准库内建提供了net/http包,涵盖了HTTP客户端和服务端的具体实现.使用net/http包,我们可以很方便地编写HTTP客户端或服务端的程序. http服务端的创建流程 在使用http ...