darknet

torch same padding

醉酒当歌 提交于 2020-11-27 09:04:38
CNN中,增加Padding过后,为我们带来的那些负面影响。 如上图所示: 第一行为普通3x3卷积,步长1,padding 0, 第二行为普通3x3卷积,步长1,padding 1, 第三行为膨胀3x3卷积,dilation rate=3,步长1,padding 3. 上图箭头右向所指,为cnn底层在caffe 和darknet的底层实现,用c或c++,至于pytorch和tensorflow 是否也是这样实现cnn我不清楚,但是目前来讲,有效实现卷积的也就3种方式, im2col(上图) ,winograd, FFT,但是还是im2col比较常见,winograd好像是商汤最近几年提出来的,通过特殊数学计算方式,减少计算量,目前该方法被应用在腾讯移动端深度学习框架NCNN中,至于FFT,还没见到用在深度学习种。 至于为什么使用im2col,这还是贾清扬大神在写caffe时提出来的,因为图像中,一个块内的像素点在内存中是地址不连续的,所以对于同一个块内的像素想要缓存到cache上,可能出现多次内存访问,效率极低,所以设计出im2co方式,提前将需要计算的像素点放在连续地址上。 因此,对于同一图像,除了原始图像在内存中占空间,使用im2col又会消耗另一份空间。 如上图所示,对于8x8的图像: 不加padding,计算量为9x36=324, 内存消耗为8x8=64,有效内存为64

一文读懂YOLO V5 与 YOLO V4

自闭症网瘾萝莉.ら 提交于 2020-11-27 05:46:55
YOLO之父Joseph Redmon在今年年初宣布退出计算机视觉的研究的时候,很多人都以为目标检测神器YOLO系列就此终结。然而在4月23日,继任者YOLO V4却悄无声息地来了。Alexey Bochkovskiy发表了一篇名为YOLOV4: Optimal Speed and Accuracy of Object Detection的文章。YOLO V4是YOLO系列一个重大的更新,其在COCO数据集上的平均精度(AP)和帧率精度(FPS)分别提高了10% 和12%,并得到了Joseph Redmon的官方认可,被认为是当前最强的实时对象检测模型之一。 正当计算机视觉的从业者们正在努力研究YOLO V4的时候,万万没想到,有牛人不服。6月25日,Ultralytics发布了YOLOV5 的第一个正式版本,其性能与YOLO V4不相伯仲,同样也是现今最先进的对象检测技术,并在推理速度上是目前最强。 从上图的结果可以看出,YOLO V5确实在对象检测方面的表现非常出色,尤其是YOLO V5s 模型140FPS的推理速度非常惊艳。 YOLO V5和V4集中出现让很多人都感到疑惑,一是YOLO V5真的有资格能被称作新一代YOLO吗?二是YOLO V5的性能与V4相比究竟如何,两者有啥区别及相似之处? 在本文中我会详细介绍YOLO V5和YOLO V4的原理,技术区别及相似之处

YOLOv3训练自己的数据

妖精的绣舞 提交于 2020-11-26 04:50:40
1. 下载预训练权重文件 YOLOv3使用在Imagenet上预训练好的模型参数(文件名称: darknet53.conv.74,大小76MB)基础上继续训练。 darknet53.conv.74下载链接: https://pjreddie.com/media/files/darknet53.conv.74 ,下载完成后放在darknet主目录。 也可以直接在darknet目录下通过wget命令下载: wget https://pjreddie.com/media/files/darknet53.conv.74 2. 准备打标工具并对自己的图片数据打标 打标工具推荐使用 labelImg,下载地址: https://github.com/tzutalin/labelImg 或 http://download.csdn.net/download/dcrmg/9974195 labelImg使用很简单,在图片的物体上画框然后给一个标签就可以了,打标结果的保存格式是xml文件。 例如对于train1.jpg,打标结果保存为train1.xml 3. xml标签文件格式转换 YOLO训练的标签文件是txt格式,需要把第2步中的xml文件转换。 1) 在darknet主目录下创建4个文件夹: trainImage、validateImage、trainImageXML 和

YoLov3训练自己的数据集

风流意气都作罢 提交于 2020-11-26 04:50:27
工具:labelimg、MobaXterm 1.标注自己的数据集。用labelimg进行标注,保存后会生成与所标注图片文件名相同的xml文件,如图。我们标注的是井盖和路边栏,名称分了NoManholeCover、ManholeCover、WarningStick共3类标签名 2.下载yolov3项目工程。按照YoLo官网下载 git clone https: //github.com/pjreddie/darknet cd darknet make 3.修改Makefile文件(文件就在下载的darknet文件夹内) vi Makefile # 打开文件 GPU=1 # 使用 GPU 训练,其他的没有用,所以没有置为 1 ,可根据自己的需要调整 CUDNN=0 OPENCV=0 OPENMP=0 DEBUG=0 make #保存并退出后,进行make才可生效,如果出现错误,自行百度。 3.准备数据集。在darknet/scripts文件夹下创建文件夹VOCdevkit(因为scripts文件夹下有voc_label.py文件,它的作用下面会说,下面创建的文件也跟它有关),根据下图在VOCdevkit文件夹下创建文件,并放入相应的数据 VOCdevkit ——VOC2007 #文件夹的年份可以自己取,但是要与你其他文件年份一致,看下一步就明白了 ————Annotations

如何使用yolov3训练自己的数据集

和自甴很熟 提交于 2020-11-26 04:25:57
博客主要结构 1. 如何在ubuntu18.04上安装yolo 2 .如何配置yolov3 3 .如何制作自己的训练集测试集 4 .如何在自己的数据集上运行yolov3 1. 在ubuntu18.04下安装yolov3 安装darknet 按ctrl+atl+t 打开终端, 并在终端下依次输入以下命令 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 ./darknet 你将会看到以下输出结果 usage: ./darknet <function> 使用GPU编译(可选)

深度学习文字识别

我只是一个虾纸丫 提交于 2020-11-13 09:30:30
Blog : https://blog.csdn.net/implok/article/details/95041472 步骤 : 文字识别是AI的一个重要应用场景,文字识别过程一般由图像输入、预处理、文本检测、文本识别、结果输出等环节组成。 分类 :文字识别可根据待识别的文字特点采用不同的识别方法,一般分为定长文字、不定长文字两大类别。 定长文字(例如 手写数字识别 、 验证码 ),由于字符数量固定,采用的网络结构相对简单,识别也比较容易; 不定长文字(例如印刷文字、广告牌文字等),由于字符数量是不固定的,因此需要采用比较复杂的网络结构和后处理环节,识别也具有一定的难度。 一、定长文字识别 定长文字的识别相对简单,应用场景也比较局限,最典型的场景就是验证码的识别。由于字符数量是已知的、固定的,因此,网络结构比较简单,一般构建3层卷积层,2层全连接层便能满足“定长文字”的识别。 手写数字识别 MNIST是一个经典的手写数字数据集,来自美国国家标准与技术研究所,由不同人手写的0至9的数字构成,由60000个训练样本集和10000个测试样本集构成,每个样本的尺寸为28x28,以二进制格式存储,如下图所示: MNIST手写数字识别模型的主要任务是:输入一张手写数字的图像,然后识别图像中手写的是哪个数字。 该模型的目标明确、任务简单,数据集规范、统一,数据量大小适中

使用python脚本统一重命名训练图片文件名

孤者浪人 提交于 2020-11-09 07:37:36
  Yolo算法,在进行模型训练时,常常使用VOC数据格式。   将图片文件复制到JPEGImages目录下,需要对文件名进行VOC标准格式编号重命名,如2020_000001.jpg,2020_000002.jpg,这样便于voc_label.py来进行后续处理。   这个工作如果手工作业,是个体力活。因此使用python脚本来做,可以重复使用。   python脚本如下,文件名为renamefiles.py。 1 # -*- coding:utf-8 -*- 2 ​ 3 # 读取指定目录,并将指定后缀的文件名重命名为yyyy_+6位数字编号的文件 4 ​ 5 import sys,os,string 6 import getopt 7 ​ 8 opts, args = getopt.getopt(sys.argv[1:], " hi:p: " , [ " help " , " input= " , " postfix= " ]) 9 ​ 10 def usage(): 11 print (sys.argv[0] + ' -i inputdir -p postfix ' ) 12 print (sys.argv[0] + ' -h #get help info ' ) 13 ​ 14 def rename_files(filepath, postfix): 15 #

基于深度学习的小目标检测算法文献综述阅读

╄→尐↘猪︶ㄣ 提交于 2020-10-30 17:02:04
基于深度学习的小目标检测算法文献综述阅读 目标检测简要介绍 传统目标检测 基于深度学习的目标检测 基于候选区域的目标检测 基于回归的目标检测 小目标检测背景介绍及难点 小目标检测算法介绍 多尺度预测 反卷积和上采样 对抗网络GAN 总结与展望 最近做了一个对于小目标检测算法的文献的阅读,在搜查文献的时候,了解了目标检测的发展过程以及其中比较典型的算法,以下根据汇报的PPT从四个方法介绍小目标检测算法文献综述,分别是: 目标检测的简要介绍、小目标检测背景介绍及难点、小目标检测算法介绍、总结与展望 ,此篇博客也可作为汇报的讲稿。 目标检测简要介绍 目标检测过程简单的可以分为两个过程:定位和识别,定位是对于某一个目标位于哪一个位置而言,识别是指所定位的目标是什么,是一个分类问题。目标检测的发展也可以分为两个过程,其一是传统的目标检测,另一个是基于深度学习的目标检测。 传统目标检测 传统目标检测可以分为三个过程:获取检测窗口、手工设计感兴趣目标的特征、训练分类器。 1998年Papageorgiou发表一篇关于A general framework for object detection,提出Harr分类器,这是一个用于检测人脸的目标检测分类器,计算获取的每个检测窗口的像素总和,然后取它们的差值,利用差值作为特征进行目标分类,该方法的优点是速度快。2004年,David

深度学习目标检测系列之YOLO9000

我只是一个虾纸丫 提交于 2020-10-07 05:10:14
1.闲言 在正式的学习之前,我喜欢先放飞一下自我。我觉得技术就是用来聊的,找个酒馆,找些大神,咱们听着音乐一起聊起来。所以我特别希望能把自己的文字口语化,就像玩一样。就像古代那些说书人一样,萧远山和慕容博相视一笑,王图霸业,血海深仇,尽归尘土。这是我向往的一种表达方式,但是我现在还达不到那个境界,只能尽力而为吧。 2.YOLOV2 1.十个改造点 yolov1提升了目标检测的速度,但是在MAP方面却掉了上去。所以说铁打的大神,流水的模型,他们自然会想尽各种办法来解决这个问题。在我看来这就好像程序员写bug一样,到头来总是要改的。所以yolov2可以分为两个部分,第一部分是对MAP提升所做的努力,第二部分是对原来模型的优化,当然是在保证检测速度的前提下。 下面的10个点,是V2的大神们做出的努力。这意味着什么,速度的提升?准确率的提升?模型的泛化能力提升?对,但是更重要的我觉得是工作量的体现,年终的结算。有时候看paper的时候,我们觉得这些大神们都跟圣人一样。他们做出的所有努力都是要造福社会,都是为了推动AI视觉的进一步发展。其实他们也是人,也会有来自各方面的限制,也会有自己的私心,一些小小的任性和种种生而为人而不能的无奈。所以读paper就是在和大神们对话,一边说着你真牛逼,一边在心里面想着我一定要超越你。 下来我们来解释一下,如果说模型预测出来的结果不是很令人满意