AI
文章平均质量分 83
liguiyuan112
这个作者很懒,什么都没留下…
展开
-
在模型推理时合并BN和Conv层
在模型推理时合并BN和Conv层,能够简化网络架构,起到加速模型推理的作用,这里简单讲解一下如何合并及其代码原创 2022-07-06 11:26:10 · 1541 阅读 · 1 评论 -
YOLOv5训练自己的数据集
最近在学习YOLOv5目标检测,想训练自己的数据集,这里做一个安全帽检测的算法。文章部分代码参考:https://github.com/PeterH0323/Smart_Construction,感谢作者的分享。1. 下载YOLOv5代码使用git下载YOLOv5代码,下载地址:GitHub - ultralytics/yolov5: YOLOv5 ???? in PyTorch > ONNX > CoreML > TFLiteYOLOv5 ???? in PyTorch原创 2021-10-27 11:19:05 · 1530 阅读 · 3 评论 -
yolov4网络结构的理解
1. yolov4网络整体结构yolov4的网络组成模块:Backbone: CSPDarknet53Neck: SPP, PANHead: YOLOv3下图是yolov4的整体结构:2. CSPDarknet53主网络架构CSPDarknet53网络是在Darknet53的基础上加入CSP。我们先了解一下CSPNet网络,CSP全称Cross Stage Partial,它可以增强CNN的学习能力,能够在轻量化、低计算量和低内存访问成本下有效提高准确率。(论文:https://arxiv.原创 2021-07-07 23:31:39 · 6403 阅读 · 7 评论 -
常用的激活函数Sigmoid,ReLU,Swish,Mish,GELU
Sigmoid激活函数在我们的网络模型中比较常用,也常作为二分类任务的输出层,函数的输出范围为(0,1)原创 2021-07-01 17:27:35 · 14101 阅读 · 2 评论 -
TensorRT模型推理内存泄露问题解决
问题描述:在使用tensorRT部署模型时,发现随着客户端不断地请求服务,显存会持续的增长,当超过显卡内存时就会出现申请不到显存而报错的情况。经过分析是我在tensorrt模型前向推理是造成的问题,在代码里:trt_engine_path = './model/resnet50.trt'trt_runtime = trt.Runtime(TRT_LOGGER)engine = load_engine(trt_runtime, trt_engine_path)context = engi原创 2020-12-22 14:20:54 · 4709 阅读 · 7 评论 -
mxnet模型转onnx模型
1.安装mxnet开发环境这里我安装的是gpu的版本,直接使用命令安装即可:sudo pip3 install mxnet-cu100也可以在安装的时候用 -i https://mirrors.aliyun.com/pypi/simple指定阿里源,安装速度会快很多。2.模型转换代码import numpy as npimport mxnet as mxfrom mxnet.contrib import onnx as onnx_mxnetsym = './model..原创 2020-12-03 14:45:09 · 2889 阅读 · 1 评论 -
Ubuntu18.04安装tensorRT来部署模型
安装tensorRT(1)查看自己的cuda和cudnn版本cuda:cat /usr/local/cuda/version.txtcat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2(2)安装pycudapip3 install pycuda -i https://mirrors.aliyun.com/pypi/simple这里注意不要使用sudo来安装,要不然可能会出现找不到cuda.h文件的错误。-i ..原创 2020-12-01 17:39:49 · 5025 阅读 · 0 评论 -
onnx 模型转换及推理
最近在部署模型在安卓端时发现ncnn模型不及原来的pytorch精度高,误差挺大的,分类误差超过了0.1,怀疑是模型转换,这里就验证一下是不是pytorch -> onnx 模型中产生的误差。1.模型转换先来看一下pyotrch 到onnx 模型转换,这个网上已经很多资料了,这里再贴一下代码:import torchdevice = torch.device("cuda" if torch.cuda.is_available() else "cpu")def model_..原创 2020-09-24 14:01:15 · 4333 阅读 · 1 评论 -
交叉熵和最大似然估计之间的关系
在分类的网络模型中,我们常常使用交叉熵作为损失函数,今天来梳理一下这些知识点。1. 交叉熵交叉熵作为损失函数的实际意义,这里引用这篇博文(https://blog.csdn.net/elite666/article/details/83850786)的一句话:交叉熵刻画的是实际输出(概率)与期望输出(概率)的距离,也就是交叉熵的值越小,两个概率分布就越接近,即拟合的更好。交叉熵计算公式:式中 x为一个离散随机变量,p(xj)表示第j类的概率。假设同一随机变量...原创 2020-09-23 18:13:06 · 7335 阅读 · 2 评论 -
pytorch loss反向传播出错
在使用pytorch进行训练代码时,在运行 loss.backward() 误差反向传播时出错 :RuntimeError: grad can be implicitly created only for scalar outputs File "train.py", line 143, in train loss.backward() File "/usr/local/lib/python3.6/dist-packages/torch/tensor.py", line 198...原创 2020-07-23 10:52:38 · 21495 阅读 · 1 评论 -
pytorch 版本升级和接口修改
这里记录一下自己在运行pytorch 时由于版本修正引起的一些警告或错误:运行出现:/usr/local/lib/python3.6/dist-packages/torch/nn/_reduction.py:43: UserWarning: size_average and reduce args will be deprecated, please use reduction='none' instead. warnings.warn(warning.format(ret))解决办..原创 2020-07-17 17:18:54 · 2398 阅读 · 4 评论 -
keras 中的SeparableConv2D和DepthwiseConv2D 卷积
在keras代码中我们看到有SeparableConv2D和DepthwiseConv2D卷积,我们来聊聊他们之间的差别。理解SeparableConv2D实现的是整个深度可分离卷积,包含深度卷积(DW)和逐点卷积(PW)这两个过程,DepthwiseConv2D只是实现了深度卷积,可见SeparableConv2D是比DepthwiseConv2D多了一个逐点卷积的过程。正如下图所示:就是SeparableConv2D的实现过程,其中深层卷积把通道进行分离,然后逐点卷积(1..原创 2020-06-23 15:05:22 · 3392 阅读 · 0 评论 -
COCO2017 数据集分类统计
coco2017数据集是微软采集的数据,我们可以直接使用python coco api 来读取图片数据,对于这个数据集的类别我们可以做一下统计,这样有利于我们在做行人检测上做一个评估,同时对不同类别在算法上做一个均衡。我们使用一下代码来统计不同类别的图片数量、标注框数量。代码:from pycocotools.coco import COCOdataDir='./COCO'dataType='val2017'#dataType='train2017'annFile='{}/a原创 2020-06-03 10:10:05 · 13894 阅读 · 8 评论 -
目标检测数据集VOC 2007/2012 整理
写之前这里先提供数据集的下载地址,darknet网页的链接:https://pjreddie.com/projects/pascal-voc-dataset-mirror/voc 2007数据集包含 训练集:5011 张,测试集:4952张,共9963张,20个类。20个类分别为:aeroplanebicyclebirdboatbottlebusca...原创 2020-02-29 19:13:26 · 8502 阅读 · 0 评论 -
softmax loss 交叉熵损失函数求导
1. softmax函数求导求导之前我们先了解softmax函数,softmax一般是用来作为网络的输出层,直接输出概率信息,定义如下:那么我们对softmax函数进行求导,为了简洁把求和里面的一大堆用简写:①当i =j时:②当i≠j时:2.对softmax loss求导好了,有了前面这些知识之后我们开始求导。这个函数最要是...原创 2020-03-01 17:25:10 · 1209 阅读 · 0 评论 -
pytorch 中的softmax, log_softmax, nn.CrossEntropyLoss和NLLLoss
1. softmax和softmax loss知识学习在进行图像分类和分割任务时,经常会用到softmax和softmax loss,今天就来彻底搞清楚这两个的区别。softmaxsoftmax是用来输出多个分类的概率的,可以作为网络的输出层。softmax的定义如下:其中z是softmax的输入,f(z)是softmax的输出,k代表第k个类别。sotfmax ...原创 2020-01-06 15:31:40 · 3549 阅读 · 0 评论 -
pytorch 中的topk函数
pytorch中topk() 函数用法1. 函数介绍最近在代码中看到这两个语句maxk = max(topk)_, pred = output.topk(maxk, 1, True, True)这个函数是用来求output中的最大值或最小值,返回两个参数:其一返回output中的最大值(或最小值),其二返回该值的索引。2. topk()函数原型:(具体的用法...原创 2019-12-26 11:07:09 · 4368 阅读 · 3 评论 -
人脸活体检测资料整理
整理资料:人脸识别中活体检测算法综述:https://blog.csdn.net/SIGAI_CSDN/article/details/82772813知乎上的资料:https://zhuanlan.zhihu.com/p/25401788代码资料:CVPR 2019 活体检测比赛:https://github.com/SeuTao/CVPR19-Face-Anti-sp...原创 2019-12-12 16:37:49 · 985 阅读 · 0 评论 -
人脸关键点检测PFLD论文解读
最近做了一个人脸关键点相关的项目,选择了PFLD方案,在这里顺便写一下论文的学习笔记。1. Introduction论文地址:https://arxiv.org/pdf/1902.10859.pdf人脸关键点检测论文《PFLD: A Practical Facial Landmark Detector》 在2019年2月提出的,是由天津大学、武汉大学、腾讯AI Lab等共同提出...原创 2019-08-31 17:29:57 · 3023 阅读 · 5 评论 -
轻量化网络:MobileNetV2 论文理解
1. 介绍paper地址:https://arxiv.org/abs/1801.04381论文是在2018年1月提出的,题目叫:MobileNetV2: Inverted Residuals and Linear Bottlenecks,可以知道论文的创新点是 Inverted Residuals 和 Linear Bottlenecks 这两个技术。这篇论文旨在提升准确率和减少内存的占用...原创 2019-05-27 12:40:55 · 2174 阅读 · 0 评论 -
安装caffe时-lboost_python3问题
1. 具体问题描述如下:CXX examples/cifar10/convert_cifar_data.cppAR -o .build_release/lib/libcaffe.aLD -o .build_release/lib/libcaffe.so.1.0.0/usr/bin/ld: 找不到 -lboost_python3collect2: error: ld returned ...原创 2019-03-14 17:19:25 · 8053 阅读 · 5 评论 -
人脸关键点数据集整理
人脸关键点数据集整理如下:常见的几种关键点数据集有5关键点、21关键点、68关键点、98关键点等。还有一些超过100个关键点的数据集,这些数据集具有商业价值等原因,所以一般都不会公开。1. 数据集下载:数据集 介绍 链接 300W 共600张图片(300室内,300室外),68关键点 https://ibug.doc.ic.ac.uk/resources/3...原创 2019-07-31 20:05:08 · 11762 阅读 · 3 评论 -
ubuntu16.04 安装caffe (cpu版本)教程
本教程是在 ubuntu16.04下安装的caffe cpu版本,使用的是python3.5版本。具体安装步骤如下:1.安装caffe相关依赖包:sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compilersudo ...原创 2019-06-18 10:33:56 · 2315 阅读 · 0 评论 -
ncnn安装教程
1.安装protobuf下载protobuf并安装,我使用的是3.7最新版本,下载地址为:https://github.com/protocolbuffers/protobuf/releases/tag/v3.7.0再下载这个protobuf-all-3.7.0.tar.gz,并解压然后编译。cd protobuf-3.7.0./configuremakemake check...原创 2019-04-04 19:52:54 · 3936 阅读 · 0 评论 -
腾讯PocketFlow模型压缩与加速实现
1. 开发环境:Ubuntu16.04Python3.6tensorflow1.122. 安装PocketFlow github地址:官网教程:https://pocketflow.github.io/installation/官网提供了三种PocketFlow部署方法,分别为:本地、docker、seven,这里我使用的是local开发方法。安装步骤:...原创 2019-03-24 11:48:13 · 2156 阅读 · 4 评论 -
ubuntu16.04下安装caffe以及错误汇总
这篇文章主要讲安装和编译caffe过程以及遇到的问题,还有解决方法。关于如何安装nvidia驱动,cuda,cudnn,以及opencv3 等网上已经有足够多的教程了,可以直接在网上找。1. 系统配置:OS: Ubuntu16.04python Version: python3CUDA Version: 10.02. caffe安装2.1 安装依赖库:sudo a...原创 2019-03-13 18:45:55 · 4870 阅读 · 3 评论 -
facenet 人脸识别原理理解(三)
在前两篇文章已经介绍了facenet人脸识别代码的使用和具体操作,但相关的原理还是没有说,这篇文章进行简单的讲解一下。1. 原理在人脸识别中,当我们需要加在图片数据库入新的一张人脸图片时,是怎么做到识别的呢,难道要我们重新修改网络最后的输出函数softmax,添加一个输出,然后再重新训练整个网络?这是不现实的吧!那我们要怎么做呢?更多的做法是采用欧氏距离D来衡量这两张图片的差距,进行判...原创 2019-03-11 17:43:19 · 6651 阅读 · 3 评论 -
facenet 人脸识别库的搭建和使用方法(二)
上一篇文章介绍了facenet人脸识别的源码使用,这篇文章就来搭建自己的人脸识别库。1. 制作自己的人脸识别库1.1 准备数据集通过百度图片爬取一些明星图片为例,这里准备了一个DownloadImageByBaidu.py文件用来下载图片。# coding=utf-8"""爬取百度图片的高清原图"""import reimport sysimport urllibi...原创 2019-03-04 17:40:05 · 5601 阅读 · 10 评论 -
facenet 人脸识别源码的使用方法(一)
1. 开发环境OS: ubuntu16.04tensorflow版本:1.12.0python版本: 3.6.72. 下载源码到本地facenet官方github:https://github.com/davidsandberg/facenet.gitgit clone https://github.com/davidsandberg/fac...原创 2019-03-01 17:00:39 · 8323 阅读 · 3 评论 -
小米AI平台MACE的构建和部署
1.准备部署文件需要准备的部署文件包括头文件(.h), mace库文件(.),转化后的模型(.a),这里以resnet18v1-opt.onnx模型为例1.1. 优化onnx模型# Optimize your model$python MACE_ROOT/tools/onnx_optimizer.py resnet18v1.onnx resnet18v1-opt.onnx1.2...原创 2019-02-18 17:11:46 · 1407 阅读 · 0 评论 -
MACE的环境搭建和工程构建
1. MACE 主页MACE 的github地址:https://github.com/XiaoMi/mace小米官方的相关文档:https://mace.readthedocs.io/en/latest/对开发环境的要求,可以按照以下指令安装相关的包: 2. 安装docker参照教程:https://blog.csdn.net/u012505617/article...原创 2019-01-09 16:39:07 · 2097 阅读 · 0 评论 -
ubuntu16.04下卸载opencv旧版本、安装新版本opencv-3.2
自己更新Python和cmake版本后,发现opencv用不了,需要重新安装,这里顺便把教程整理一下。1. 卸载旧版本opencv进入到原来安装opencv的build目录,执行卸载操作:cdopencv-3.2.0/buildsudo make uninstallcd ..sudo rm -r buildsudo rm -r /usr/local/include/ope...原创 2019-03-28 20:43:30 · 7123 阅读 · 1 评论 -
人脸识别相似度计算方法
在人脸识别中,我们通常采用欧氏距离和余弦距离来衡量人脸特征的相似度,判别是否为同一个人。欧氏距离欧氏距离比较简单,采用欧氏公式直接计算两个点之间的距离,如下:代码:diff = np.subtract(feature1, feature2)dist = np.sqrt(np.sum(np.square(diff)))feature1.shape 和feature2.sh...原创 2019-04-14 01:13:13 · 38192 阅读 · 16 评论 -
浅谈人脸识别中的loss 损失函数
在人脸识别中,算法的提高主要体现在损失函数的设计上,损失函数会对整个网络的优化有着导向性的作用。我们看到许多常用的损失函数,从传统的softmax loss到cosface, arcface 都有这一定的提高,这篇文章自己就来整理下这几个算法。无论是SphereFace、CosineFace还是ArcFace的损失函数,都是基于Softmax loss来进行修改的。Base l...原创 2019-04-17 17:57:33 · 13130 阅读 · 5 评论 -
Discrimination-aware channel pruning论文解读
1. 算法介绍paper:https://arxiv.org/abs/1810.11809Discrimination-aware channel pruning (DCP, Zhuang et al., 2018)鉴别力感知的通道剪枝。这个称为鉴别力感知,就是在卷积层通道中找出那些真正具有贡献、有鉴别感知力的通道,然后保留下来,而那些对没有鉴别力(往往指那些通道只包含全零权重)的通道就剪...原创 2019-05-11 18:33:06 · 976 阅读 · 0 评论 -
MobileNet V1论文解读
paper地址:https://arxiv.org/abs/1704.04861?context=cs1. 介绍MobileNet V1论文是google 在2017年4月提出的,作者先描述了现在的网络越来越网深层,准确率在不断的提高,伴随计算量越来越大,网络的效率并没有得到提升,表现在模型的大小(size)和速度(speed)方面,于是提出了这个轻量化网络模型。并在移动端或者嵌入式设备上...原创 2019-05-21 14:37:33 · 1626 阅读 · 0 评论 -
条件概率、概率乘法、全概率、贝叶斯公式
概率的几个公式(1)条件概率:在条件A发生的条件下,B发生的概率:(2)概率乘法公式:如果,则 如果,则 (3)全概率公式:全概率公式用于计算某个“结果”B发生的可能性大小。(4)贝叶斯公式(又称逆概公式):如果,则对任一事件B,只要 P(B) > 0 ,就有:可以看到分母就是全概率公式,分子就是分母求和中的某一项。...原创 2019-05-11 11:00:09 · 16325 阅读 · 0 评论 -
神经网络中的前向传播和反向传播理解
前向传播输入,输出,缓存为前向传播的过程:向量化的过程可以写成:式中,就是初始的输入X。如下图的两层神经网络所示,可以很好的理解。反向传播反向传播主要采用数学上的链式法则,反向传播的公式推导可以总结为4个公式。输入,输出,,形式转换一下,和上面的式子是等价的,步骤如下:第5个公式由4式代入1式得到。...原创 2019-05-01 00:09:04 · 3383 阅读 · 0 评论 -
Arcface人脸识别算法流程分析
流程分析关于arcface人脸识别算法流程,首先引入论文的一个图:(1)输入xi为1*d的向量,对该向量执行L2正则化得到(2)向量W是d*n的矩阵,n表示分类的类别数,对每一列(Wj)执行L2正则化,得到(3)和进行矩阵相乘得到全连接输出,严格上讲是,前面两项都为1,所以就是,(4)对输出中对应真实标签的值执行反余弦操作就得到,表示真实的标签。(...原创 2019-04-25 16:42:54 · 6742 阅读 · 0 评论 -
对mtcnn的人脸对齐的理解
概念理解人脸识的流程:人脸检测 ——人脸对齐——特征提取——相似度对比人脸对齐也是关键的一步,在不同的应用场景下,会直接影响到人脸识别的结果。因为是否进行人脸对齐,会影响到提取到的特征,对齐前后提取到的特征是有差别的。人脸对齐(矫正):就是检测到人脸角度不正,关键点不对齐,然后需要对齐操作。人脸对齐前后的效果对比如下图,发现对齐后效果还是挺好的。 那么我们要怎么实施...原创 2019-05-04 19:21:34 · 4821 阅读 · 8 评论