CV
pikaqiu_n95
这个作者很懒,什么都没留下…
展开
-
精度(precision),召回率(recall),map
目标检测中经常会见到precision,recall,map三个指标用来评估一个模型的优劣,当然在很多其他的应用中也可以看到这三个指标的具体应用;因此很有必要对这三个指标进行详细的了解。在介绍这三个指标之前有必要先了解几个基本的术语:True positives,True negatives,False positives,False negative。大雁和飞机假设现有一个测试集,测试集中仅包含大雁和飞机两种目标,如图所示:假设分类的目标是:取出测试集中所有飞机图片,而非大雁图片现做如下定义:原创 2020-10-20 23:53:18 · 4102 阅读 · 3 评论 -
yolov3损失函数分析
yolov1到v3损失函数都是逐步修改而来,特别是v4,v5损失函数的改动对于目标检测的性能和效果具有较大的提升;当然v3相比v1,v2还是有不少提升的,这种性能提升不仅仅是损失函数所带来的,网络结构的修改和优化也具有比较可观的效果。本文主要讲解v3损失函数的设计,这里首先回顾下v1,v2:v1损失函数:v2的损失函数:v2只是在v1的基础上改动了box宽高的损失计算方式,即去除了w和h的根号:v3相对v2最大的改动就是分类的损失以及box置信度的损失改为了二分交叉熵:上式中S为网络输出层网原创 2020-10-19 22:39:12 · 5614 阅读 · 2 评论 -
yolov3读取数据
yolov3数据预处理这块基本是一些比较常用的数据处理手段,将读取的图片数据转换为rgb并乘以1/255进行归一化,将图像大小通过缩放和pad的方式转换为宽高相等的图像,且转换后图像的大小为32的整数倍;为什么要转换为32的整数倍呢??? 因为网络设计最大的stride为32,如果不为32的整数倍,那么网络前向的过程中有可能会出现奇数倍的数据宽高,那么上采用后的图像再和前面的网络层进行特征融合就会出现维度不匹配的现象,所以这就是为什么要设置为32的整数倍。下面就是yolov3数据预处理的代码实现impor原创 2020-10-11 17:46:31 · 546 阅读 · 1 评论 -
yolov3模型训练,测试,检测
前面几篇博客已经对yolov3的实现过程做了一个大概的分析与讲解,本文主要讲解v3的模型训练,测试,检测的实现;这部分更多的是对前面模块的组合实现,核心的实现还是数据的准备,加载,模型搭建,代价函数的求解。网络训练部分的实现:train.pyfrom __future__ import division from models import *from utils.logger import *from utils.utils import *from utils.datasets impor原创 2020-10-11 12:17:08 · 1043 阅读 · 3 评论 -
yolov3模型搭建
yolov3的网络结构也比较简单,基本就是一些模块的重复,本文主要基于yolov3-tiny进行讲解,具体的网络结构如下:对上图结合相应的.cfg文件进行对比分析,model.py里面实现了网络的构建,具体代码如下:from __future__ import division import torchimport torch.nn as nnimport torch.nn.functional as Ffrom torch.autograd import Variableimport n原创 2020-10-11 11:50:39 · 868 阅读 · 1 评论 -
yolov3制作自己的训练数据
coco数据集不仅可以用于做目标检测还可以用于进行语义分割,这里主要讲解基于yolov3进行目标检测的数据准备。由于coco数据集的标签信息是以.json的格式存储的,因此有必要转换为具体的格式来进行模型训练与评估。具体的实现方式如下:# -*- coding: utf-8 -*-"""Created on Tue Jul 2 11:41:44 2019@author: Administrator"""#from __feature__ import print_functionimport原创 2020-10-11 11:32:04 · 365 阅读 · 1 评论 -
yolov3实现理论
1、yolov3简介yolov3已经出来好久了,最近一直在做基于yolo系列的检测相关工作,并对相关的源码进行了研究与分析。yolov3并没有很大的创新,更多的是借鉴了最近两年一些网络构造技巧。不过不得不承认效果还是很赞的,在保持速度的前提下,提升了预测精度,尤其是小目标物体的检测相比v1、v2来说得到了较大的改善。yolov3的主要改进:调整了网络结构;利用多尺度特征进行目标检测;对象分类用logistic取代了softmax。2、网络结构以darknet-53为例,具体结构如下:其中re原创 2020-10-11 10:53:28 · 567 阅读 · 1 评论 -
pytorch模型量化尝试
pytorch现在已经支持模型量化,主要支持两种量化模式(qnnpack和fbgemm):qnnpack是基于tensor的模式,这种相当于一种全局量化模式;另外fbgemm是基于通道的模式,相比qnnpack,fbgemm是以及基于通道的局部量化模式;需要说明的是这两种模式主要是针对权重而言的,激活函数的量化都是一样的。这里给出一个量化示例,pytorch目前只支持8bit的量化。实现过程依然是承接前一篇博客而来,只是添加了量化部分而已,代码实现如下:import osimport torchim原创 2020-09-24 20:45:48 · 5790 阅读 · 12 评论 -
基于numpy实现的卷积,通道卷积,batchnorm前向过程(二)
我们通常在做一些验证的过程中需要自己手动实现神经网络的一些基础单元,但是自己一行行代码实现的代码往往执行过慢,好在我们可以借助numpy的矩阵操作实现这些基本单元。前面的文章可参考博文我手动实现了常规卷积,通道卷积,全连接的前向过程,结果正常,但是速度有些让人担忧。于是乎,又切换到numpy实现了一遍,代码基本上是github上的,自己看懂了过程稍微修改了下,速度还是很给力。原理这里不做讲解,在前一篇博文已经做了大概的讲解,这里主要给出代码的实现以及相关应用。为了采用矩阵运算,需要先将输入数据转换为向量,原创 2020-09-23 22:28:01 · 732 阅读 · 0 评论 -
python实现conv(卷积),dept_conv(通道卷积),batchnorm(批量归一化)的前向过程(一)
神经网络已经在各行各业都得到了普遍的应用,然而在工程落地以及一些验证过程中有必要自己实现一些常用的模块,比如卷积,池化,批量归一化等常规的神经网络模块。尽管现在都是各种调库的天下,自己在做相关工程发现了解和实现这些基本模块还是很有必要的,不仅加深自己的理解,更加容易工程落地。神经网络的基础这里就不过多介绍,直接上实现代码。卷积实现:输入数据排布[N,chin,dim_inh,dim_inw],权重的排布[chout,chin,kernelh,kernelw],输出数据排布[N,chout,dim_ou.原创 2020-09-23 21:02:02 · 3607 阅读 · 0 评论 -
目标检测算法yolo anchors聚类(kmeans)生成
test原创 2020-09-23 15:40:23 · 1942 阅读 · 2 评论