AlexeyAB DarkNet YOLOv3框架解析与应用实践(一)
AlexeyAB DarkNet YOLOv3框架解析与应用实践(一)
Darknet: C语言中的开源神经网络
Darknet是一个用C和CUDA编写的开源神经网络框架。它速度快,易于安装,支持CPU和GPU计算。您可以在GitHub上找到源代码,也可以在这里阅读更多关于Darknet可以做什么的信息:
1. Installing Darknet
Darknet易于安装,只有两个可选依赖项:
OpenCV,如果你想要更广泛的支持图像类型。
如果你想计算GPU的话,安装CUDA。
两者都是可选的,所以让我们从安装基本系统开始。我只在Linux和Mac电脑上测试过。
Installing The Base System
首先在这里获取Darknet git存储库。这可以通过以下方式实现:
git clone https://github.com/pjreddie/darknet.git
cd darknet
make
如果这有效,你会看到一大堆编译信息飞驰而过:
mkdir -p obj
gcc -I/usr/local/cuda/include/ -Wall -Wfatal-errors -Ofast....
gcc -I/usr/local/cuda/include/ -Wall -Wfatal-errors -Ofast....
gcc -I/usr/local/cuda/include/ -Wall -Wfatal-errors -Ofast....
.....
gcc -I/usr/local/cuda/include/ -Wall -Wfatal-errors -Ofast -lm....
如果你有任何错误,试着去修正它们?如果一切看起来都编译正确,请尝试运行它!
./darknet
你应该得到输出:
usage: ./darknet <function>
使用CUDA编译
CPU上的Darknet速度很快,但是GPU上的速度快了500倍!你必须有一个Nvidia的GPU,你必须安装CUDA。我不会详细介绍CUDA的安装,因为它很可怕。
安装CUDA后,将基本目录中Makefile的第一行更改为:
GPU=1
现在你可以做这个项目,CUDA将被启用。默认情况下,它将在系统的第0个图形卡上运行网络(如果正确安装了CUDA,则可以使用nvidia smi列出图形卡)。如果要更改Darknet使用的卡,可以给它一个可选的命令行标志-i<index>,例如:
./darknet -i 1 imagenet test cfg/alexnet.cfg alexnet.weights
如果您使用CUDA编译,但出于任何原因希望进行CPU计算,则可以使用-nogpu来代替CPU:
./darknet -nogpu imagenet test cfg/alexnet.cfg alexnet.weights
用OpenCV编译
默认情况下,Darknet使用stb_image.h加载图像。如果你想更多的支持奇怪的格式(像CMYK jpeg),你可以使用OpenCV代替!OpenCV还允许您查看图像和检测,而无需将它们保存到磁盘。
首先安装OpenCV。如果从源代码处执行此操作,则会很长且很复杂,因此请尝试让包管理器为您执行此操作。
接下来,将Makefile的第2行更改为:
OPENCV=1
完成了!尝试一下,首先重新做一个项目。然后使用imtest例程测试图像加载和显示:
./darknet imtest data/eagle.jpg
2. YOLO:实时目标检测
你只看一次(YOLO)是一个最先进的实时物体检测系统。在Pascal Titan X上,它以每秒30帧的速度处理图像,在COCO test-dev上有57.9%的mAP。
与其他检测模型的比较
YOLOv3非常快速和准确。在0.5 IOU处测得的mAP中,YOLOv3与焦距损失相当,但速度快了约4倍。此外,可以轻松地权衡速度和准确性之间的简单改变模型的大小,无需再训练!


工作原理
先前的检测系统重新利用分类器或定位器来执行检测。他们将模型应用于多个位置和比例的图像。图像的高分区域被认为是检测。
使用完全不同的方法。将单一的神经网络应用于完整的图像。该网络将图像分为多个区域,并预测每个区域的包围盒和概率。这些边界框由预测的概率加权。
与基于分类器的系统相比,我们的模型有几个优点。它在测试时查看整个图像,因此它的预测由图像中的全局上下文通知。它也用单一的网络评估来预测,不像R-CNN这样的系统需要数千张单一的图像。这使得它非常快,比R-CNN快1000倍,比R-CNN快100倍。有关完整系统的详细信息,请参阅我们的论文。
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框架解析与应用实践(三) ImageNet分类 您可以使用Darknet为1000级ImageNet挑战赛分类图像.如果你还没有安装Darknet,你应该 ...
- AlexeyAB DarkNet YOLOv3框架解析与应用实践(二)
AlexeyAB DarkNet YOLOv3框架解析与应用实践(二) 版本3有什么新功能? YOLOv3使用了一些技巧来改进训练和提高性能,包括:多尺度预测.更好的主干分类器等等.全部细节都在我们的 ...
- 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 ...
- .NET Core 多框架支持(net45+netstandard20)实践中遇到的一些问题总结
.NET Core 多框架支持(net45+netstandard20)实践中遇到的一些问题总结 前言 本文主要是关于.NET Standard 代码 在多框架 和 多平台 支持自己实践过程中遇到的一 ...
- [转载]iOS 10 UserNotifications 框架解析
活久见的重构 - iOS 10 UserNotifications 框架解析 TL;DR iOS 10 中以前杂乱的和通知相关的 API 都被统一了,现在开发者可以使用独立的 UserNotifica ...
随机推荐
- @unittest.skip(reason):强制跳转。reason是跳转原因
在执行测试用例时,有时候有些用例是不需要执行的,那我们怎么办呢?难道删除这些用例?那下次执行时如果又需要执行这些用例时,又把它补回来?这样操作就太麻烦了. unittest提供了一些跳过指定用例的方法 ...
- 菜鸟教程jsonp基础知识讲解
jsonp是什么? Jsonp(JSON with Padding) 是 json 的一种"使用模式",可以让网页从别的域名(网站)那获取资料,即跨域读取数据. 为什么我们从不同的 ...
- 【MybatisPlus】使用Wrappers条件构造器构造or和and
模糊查询中,会有针对一个数据,需要查询数据库的多个字段的情况,例如: 上图中的平台名称和平台进程在数据表中是两个不同的字段, 如果不使用Mybatisplus,仅使用Mybatis,则只有通过写xml ...
- php 日志处理工具 SeasLog 的使用
首先附上seaslog github地址: https://github.com/Neeke/SeasLog/blob/master/README_zh.md php官方文档地址: https://w ...
- PAT 乙级 -- 1006 -- 换个格式输出整数
题目简述 让我们用字母B来表示"百".字母S表示"十",用"12-n"来表示个位数字n(<10),换个格式来输出任一个不超过3位的正整 ...
- 删除自定义服务 寒江孤钓<<windows 内核安全编程>> 学习笔记
书中第一章 成功启动first服务之后, 发现书中并没有介绍删除服务的方式, SRVINSTW工具中的移除服务功能,也无法找到我们要删除的服务, 于是,搜素了下,发现解决方法如下: 在cmd中输入 & ...
- pr加字幕
选择免费字体 自由字体整理了免费的商用字体 安装字体 将下载好的.ttf文件,右键选择为所有用户安装 如果没有选择为所有用户安装,你在Arctime或者premiere中可能无法找到这个字体 而且想要 ...
- Mac 解压缩软件-keka
去官网 GitHub地址 功能预览
- 谁动了我的 Linux?原来 history 可以这么强大!
当我们频繁使用 Linux 命令行时,有效地使用历史记录,可以大大提高工作效率. 在平时 Linux 操作过程中,很多命令是重复的,你一定不希望大量输入重复的命令.如果你是系统管理员,你可能需要对用户 ...
- XD to Flutter 2.0 现已发布!
Flutter 是 Google 的开源 UI 工具包.利用它,只需一套代码库,就能开发出适合移动设备.桌面设备.嵌入式设备以及 web 等多个平台的精美应用.过去几年,对于想要打造多平台应用的开发者 ...