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. Linux在shell终端中清空DNS缓存,刷新DNS的方法

    现在很多Linux发行版都没有内置DNS本地缓存,Linux不像Windows那样可以使用ipconfig /flushdns来刷新,在Linux下无需刷新,因为本身没有缓存. 前言 在Linux系统 ...

  2. php自定义配置文件简单写法

    1 <?php 2 header("Content-type:text/html;charset=utf-8"); 3 4 $q = getconfig('rr'); 5 e ...

  3. Python 巡检接入钉钉机器人

    前段时间,为了快速实现巡检服务器设备的健康状态,我简单的写了一个巡检工具,该工具已经可以满足我的大部分需求了,不过,每次都要自己手动去点击巡检才能知道今天设备的状态,由于每天巡检严重影响我学习逆向技术 ...

  4. Win10 ntoskrnl.exe蓝屏解决

    主机一直用的是无线网卡,装Win10下载驱动.不管是Window10自己更新,还是通过驱动人生.驱动精灵等安装的Killer网卡驱动,均日常导致蓝屏. 状态是这样的:玩游戏蓝屏.检测系统蓝屏.清垃圾蓝 ...

  5. Day003 巧妙验证短路运算

    &&的短路运算 条件1&&条件2...&&条件n,程序会先判断条件1,如果条件1为false,则不判断后面的条件,直接返回false 怎么判断程序到底有 ...

  6. 使用C#进行数据库增删改查ADO.NET(一)

    这节讲一下如何使用C#进行数据库的增删改查操作,本节以SQL Server数据库为例. .NET 平台,使用ADO.NET 作为与数据库服务器的桥梁,我们通过ADO.NET就可以使用C#语言操作数据库 ...

  7. 合并两个yuv文件的C++代码

    //将BasketballPass_416x240_50.yuv序列的前50帧和BlowingBubbles_416x240_50.yuv序列的前250帧合并成out.yuv //参数配置416 24 ...

  8. 【Web前端HTML5&CSS3】08-盒模型补充

    笔记来源:尚硅谷Web前端HTML5&CSS3初学者零基础入门全套完整版 目录 盒模型补充及田径场实战 1. 盒子大小 2. 轮廓 3. 阴影 4. 圆角 圆 椭圆 盒模型补充及田径场实战 1 ...

  9. [Java] javaEE

    定义 面向企业级应用中一些通用模块制定的标准 避免重复开发,解决代码可靠性问题 13种规范 JDBC(JavaDatabase Connectivity):数据库连接 以统一方式访问数据库的API J ...

  10. 使用LUKS加密你的磁盘

    计算机数据的安全,保密性在现在的生活中显得越来越重要.随着数字化的时代的来临,越来越多的数据被数字化,特别是更多有关于我们隐私的数据在不断生成,甚至还有我们需要离线保存的密钥等.而且通常我们使用磁盘, ...