AlexeyAB DarkNet YOLOv3框架解析与应用实践(三)
AlexeyAB DarkNet YOLOv3框架解析与应用实践(三)
ImageNet分类
您可以使用Darknet为1000级ImageNet挑战赛分类图像。如果你还没有安装Darknet,你应该先安装。
使用预先训练的模型分类
下面是安装Darknet、下载分类权重文件和在图像上运行分类器的命令:
git clone https://github.com/pjreddie/darknet.git
cd darknet
make
wget https://pjreddie.com/media/files/darknet19.weights
./darknet classifier predict cfg/imagenet1k.data cfg/darknet19.cfg darknet19.weights data/dog.jpg
本例使用Darknet19模型,您可以在下面阅读更多有关它的信息。运行此命令后,您将看到以下输出:
ayer filters size input output
0 conv 32 3 x 3 / 1 256 x 256 x 3 -> 256 x 256 x 32 0.113 BFLOPs
1 max 2 x 2 / 2 256 x 256 x 32 -> 128 x 128 x 32
2 conv 64 3 x 3 / 1 128 x 128 x 32 -> 128 x 128 x 64 0.604 BFLOPs
3 max 2 x 2 / 2 128 x 128 x 64 -> 64 x 64 x 64
4 conv 128 3 x 3 / 1 64 x 64 x 64 -> 64 x 64 x 128 0.604 BFLOPs
5 conv 64 1 x 1 / 1 64 x 64 x 128 -> 64 x 64 x 64 0.067 BFLOPs
6 conv 128 3 x 3 / 1 64 x 64 x 64 -> 64 x 64 x 128 0.604 BFLOPs
7 max 2 x 2 / 2 64 x 64 x 128 -> 32 x 32 x 128
8 conv 256 3 x 3 / 1 32 x 32 x 128 -> 32 x 32 x 256 0.604 BFLOPs
9 conv 128 1 x 1 / 1 32 x 32 x 256 -> 32 x 32 x 128 0.067 BFLOPs
10 conv 256 3 x 3 / 1 32 x 32 x 128 -> 32 x 32 x 256 0.604 BFLOPs
11 max 2 x 2 / 2 32 x 32 x 256 -> 16 x 16 x 256
12 conv 512 3 x 3 / 1 16 x 16 x 256 -> 16 x 16 x 512 0.604 BFLOPs
13 conv 256 1 x 1 / 1 16 x 16 x 512 -> 16 x 16 x 256 0.067 BFLOPs
14 conv 512 3 x 3 / 1 16 x 16 x 256 -> 16 x 16 x 512 0.604 BFLOPs
15 conv 256 1 x 1 / 1 16 x 16 x 512 -> 16 x 16 x 256 0.067 BFLOPs
16 conv 512 3 x 3 / 1 16 x 16 x 256 -> 16 x 16 x 512 0.604 BFLOPs
17 max 2 x 2 / 2 16 x 16 x 512 -> 8 x 8 x 512
18 conv 1024 3 x 3 / 1 8 x 8 x 512 -> 8 x 8 x1024 0.604 BFLOPs
19 conv 512 1 x 1 / 1 8 x 8 x1024 -> 8 x 8 x 512 0.067 BFLOPs
20 conv 1024 3 x 3 / 1 8 x 8 x 512 -> 8 x 8 x1024 0.604 BFLOPs
21 conv 512 1 x 1 / 1 8 x 8 x1024 -> 8 x 8 x 512 0.067 BFLOPs
22 conv 1024 3 x 3 / 1 8 x 8 x 512 -> 8 x 8 x1024 0.604 BFLOPs
23 conv 1000 1 x 1 / 1 8 x 8 x1024 -> 8 x 8 x1000 0.131 BFLOPs
24 avg 8 x 8 x1000 -> 1000
25 softmax 1000
Loading weights from darknet19.weights...Done!
data/dog.jpg: Predicted in 0.769246 seconds.
42.55%: malamute
22.93%: Eskimo dog
12.51%: Siberian husky
2.76%: bicycle-built-for-two
1.20%: mountain bike
Darknet在加载配置文件和权重时显示信息,然后对图像进行分类并打印图像的前10个类。海藻是一种混合品种的狗,但她有很多软弱无力,所以我们认为这是一个成功的!
您也可以尝试使用其他图像,如秃鹰图像:
./darknet classifier predict cfg/imagenet1k.data cfg/darknet19.cfg darknet19.weights data/eagle.jpg
生成:
...
data/eagle.jpg: Predicted in 0.707070 seconds.
84.68%: bald eagle
11.91%: kite
2.62%: vulture
0.08%: great grey owl
0.07%: hen
不错!
如果未指定图像文件,则在运行时将提示您输入图像。这样,您就可以在一行中对多个对象进行分类,而无需重新加载整个模型。使用命令:
./darknet classifier predict cfg/imagenet1k.data cfg/darknet19.cfg darknet19.weights
然后您将得到一个提示,如下所示:
....
25: Softmax Layer: 1000 inputs
Loading weights from darknet19.weights...Done!
Enter Image Path:
每当你厌倦了分类图像,你可以使用Ctrl-C退出程序。
在ImageNet上验证
到处都可以看到这些验证集编号。也许你想再检查一下这些模型的实际工作情况。我们来吧!
首先需要下载验证图像和cls loc注释。你可以把它们弄到这里,但你得记帐!下载完所有内容后,您应该有一个包含ILSVRC2012_bbox_val_v3.tgz和ILSVRC2012_img_val.tar的目录。首先我们打开包装:
tar -xzf ILSVRC2012_bbox_val_v3.tgz
mkdir -p imgs && tar xf ILSVRC2012_img_val.tar -C imgs
现在我们有了图像和注释,但我们需要标记图像,以便Darknet能够评估其预测。我们使用这个bash脚本来实现这一点。它已经在脚本/子目录中了。我们只需再次获取并运行它:
wget https://pjreddie.com/media/files/imagenet_label.sh
bash imagenet_label.sh
这将生成两个内容:一个名为labeled/的目录,其中包含指向图像的重命名符号链接;另一个名为inet.val.list的文件,其中包含标记图像的路径列表。我们需要将此文件移动到Darknet中的data/子目录:
mv inet.val.list <path-to>/darknet/data
现在你终于可以验证你的模型了!先把darknet重新make出来。然后运行验证例程,如下所示:
./darknet classifier valid cfg/imagenet1k.data cfg/darknet19.cfg darknet19.weights
注意:如果不使用OpenCV编译Darknet,那么就无法加载所有ImageNet图像,因为其中一些图像是stbúu image.h不支持的奇怪格式。
如果不使用CUDA编译,您仍然可以在ImageNet上验证,但这将需要相当长的时间。不推荐。 预先训练的模型
这里有各种用于ImageNet分类的预训练模型。准确度在ImageNet上测量为单crop验证准确度。GPU计时是在Titan X上测量的,CPU计时是在单核Intel i7-4790K(4 GHz)上运行的。在OPENMP中使用多线程应该与cpu的比例成线性关系。

Alxnet
开始创新的模式!最初的模型是疯狂的分裂GPU的事情,所以这是一些后续工作的模型。
· Top-1 Accuracy: 57.0%
· Top-5 Accuracy: 80.3%
· Forward Timing: 3.1 ms/img
· CPU Forward Timing: 0.29 s/img
· cfg file
Darknet参考模型
这个模型设计得很小但是很强大。它获得了与AlexNet相同的前1名和前5名的性能,但参数只有1/10。它主要使用卷积层,而没有在末端的大型完全连接层。它的速度大约是AlexNet在CPU上的两倍,这使得它更适合一些视觉应用。
· Top-1 Accuracy: 61.1%
· Top-5 Accuracy: 83.0%
· Forward Timing: 2.9 ms/img
· CPU Forward Timing: 0.14 s/img
· cfg file
VGG-16
牛津大学的视觉几何小组为ILSVRC-2014比赛开发了VGG-16模型。它具有很高的分类精度和广泛的应用前景。我把这个版本改编自Caffe预先训练的模型。它被训练为另外6个阶段,以适应特定于darknet的图像预处理(而不是平均减法darknet调整图像介于-1和1之间)。
· Top-1 Accuracy: 70.5%
· Top-5 Accuracy: 90.0%
· Forward Timing: 9.4 ms/img
· CPU Forward Timing: 4.36 s/img
· cfg file
Extraction
开发了这个模型作为GoogleNet模型的一个分支。它不使用“初始”模块,只使用1x1和3x3卷积层。
· Top-1 Accuracy: 72.5%
· Top-5 Accuracy: 90.8%
· Forward Timing: 4.8 ms/img
· CPU Forward Timing: 0.97 s/img
· cfg file
Darknet19
我修改了提取网络,使之更快更准确。这个网络是一种融合了darknet参考网络和特征提取以及众多论文(如网络中的网络、初始和批量规范化)的思想。
· Top-1 Accuracy: 72.9%
· Top-5 Accuracy: 91.2%
· Forward Timing: 6.2 ms/img
· CPU Forward Timing: 0.87 s/img
· cfg file
Darknet19 448x448
我用一个更大的输入图像大小448x448,为10多个时期训练了Darknet19。该模型性能明显更好,但速度较慢,因为整个图像更大。
· Top-1 Accuracy: 76.4%
· Top-5 Accuracy: 93.5%
· Forward Timing: 11.0 ms/img
· CPU Forward Timing: 2.96 s/img
· cfg file
Resnet 50
出于某种原因,人们喜欢这些网络,即使他们是如此缓慢。
· Top-1 Accuracy: 75.8%
· Top-5 Accuracy: 92.9%
· Forward Timing: 11.4 ms/img
· CPU Forward Timing: 1.13 s/img
· cfg file
Resnet 152
出于某种原因,人们喜欢这些网络,即使他们是如此缓慢。
· Top-1 Accuracy: 77.6%
· Top-5 Accuracy: 93.8%
· Forward Timing: 28.6 ms/img
· CPU Forward Timing: 3.31 s/img
· cfg file
Densenet 201
我Densenet!他们是如此深沉,如此疯狂,工作如此出色。像Resnet一样,仍然很慢,因为它们有很多层,但至少它们工作得很好!
· Top-1 Accuracy: 77.0%
· Top-5 Accuracy: 93.7%
· Forward Timing: 32.6 ms/img
· CPU Forward Timing: 1.38 s/img
· cfg file
AlexeyAB DarkNet YOLOv3框架解析与应用实践(三)的更多相关文章
- AlexeyAB DarkNet YOLOv3框架解析与应用实践(六)
AlexeyAB DarkNet YOLOv3框架解析与应用实践(六) 1. Tiny Darknet 听过很多人谈论SqueezeNet. SqueezeNet很酷,但它只是优化参数计数.当大多数高 ...
- 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框架解析与应用实践(二) 版本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 ...
- nodejs 实践:express 最佳实践(三) express 解析
nodejs 实践:express 最佳实践(三) express 解析 nodejs 发展很快,从 npm 上面的包托管数量就可以看出来.不过从另一方面来看,也是反映了 nodejs 的基础不稳固, ...
- .NET Core 多框架支持(net45+netstandard20)实践中遇到的一些问题总结
.NET Core 多框架支持(net45+netstandard20)实践中遇到的一些问题总结 前言 本文主要是关于.NET Standard 代码 在多框架 和 多平台 支持自己实践过程中遇到的一 ...
随机推荐
- 初中级php程序员面试时常见问题整理
初中级php程序员面试问题收集 感悟 有时候草率给出一个答案,比思而无果更糟糕 php基础 php的数据类型 php数据类型的转换 php魔术方法 php 的trait的概念及特点 php 虚拟类和接 ...
- Pytorch系列:(四)IO操作
首先注意pytorch中模型保存有两种格式,pth和pkl,其中,pth是pytorch默认格式,pkl还支持pickle库,不过一般如果没有特殊需求的时候,推荐使用默认pth格式保存 pytorch ...
- 【Github搬砖】Python入门网络爬虫之精华版
Python学习网络爬虫主要分3个大的版块:抓取,分析,存储 另外,比较常用的爬虫框架Scrapy,这里最后也详细介绍一下. 首先列举一下本人总结的相关文章,这些覆盖了入门网络爬虫需要的基本概念和技巧 ...
- 密码学系列之:NIST和SHA算法
目录 简介 SHA1 SHA2 SHA3 简介 SHA算法大家应该都很熟悉了,它是一个用来计算hash的算法,目前的SHA算法有SHA1,SHA2和SHA3种.这三种算法都是由美国NIST制定的. N ...
- php 获取某数组中出现次数最多的值(重复最多的值)与出现的次数
1.$arr = array(7,7,8,9,10,10,10); $arr = array_count_values($arr); // 统计数组中所有值出现的次数 arsort($arr); ...
- 全套visio版本安装教程及下载地址
1:visio 2003 安装教程及下载地址 https://mp.weixin.qq.com/s/vhJUagKBz3vM-Dru0cwYow 2:visio 2007 安装教程及下载地址 http ...
- 使用C#操作注册表
这节讲一下使用C#操作注册表. 首先来了解一下,什么是注册表,注册表是Windows中特有的一个东西,百度百科中对其解释如下:Windows注册表(Registry)实质上是一个庞大的数据库,它存储着 ...
- Windows进程间通讯(IPC)----套接字
Windows套接字 Windows套接字即socket,通过socket可以实现在不同的进程间通信,甚至这两个进程可以不在同一个计算机中. Winsock使用步骤 服务端 socket初始化 创建套 ...
- 比物理线程都好用的C++20的协程,你会用吗?
摘要:事件驱动(event driven)是一种常见的代码模型,其通常会有一个主循环(mainloop)不断的从队列中接收事件,然后分发给相应的函数/模块处理.常见使用事件驱动模型的软件包括图形用户界 ...
- 测试报告$\beta$
VisualPytorch beta发布了! 功能概述:通过可视化拖拽网络层方式搭建模型,可选择不同数据集.损失函数.优化器生成可运行pytorch代码 扩展功能:1. 模型搭建支持模块的嵌套:2. ...