小鹏AI
深度学习算法工程师,主攻深度学习模型优化部署,辅攻图形图像算法调优。
软件设计师、英伟达Jeston Nano专家认证。
展开
-
涡轮压力表刻度识别
问题:使用OpenCV识别指针所指向的数字,并将数字显示在表盘上算法设计思想:使用霍夫变换检测圆心的位置使用sobel算子进行表盘刻度和0点位置的检测从圆心出发画出一条水平线与检测出来的表盘刻度相交(记录两点所在的刻度值k1k_1k1和k2k_2k2)计算每一个刻度所代表的度数值v=(k2−k1)/πv=(k_2-k_1)/πv=(k2−k1)/π使用霍夫变换进行表盘中指针的检测,并得到直线的两点坐标计算圆点与0点的直线与指针的直线的相交的夹角α得出指针指向的刻度值:v∗αv*原创 2020-06-04 19:09:15 · 2015 阅读 · 0 评论 -
手势数字启蒙学习机
基于分类器的手势数字启蒙学习器今天看到邻居家的小孩学习手势数字,想着自己可以尝试着做一个的手势数字启蒙学习器.在我们的生活中,我们习惯于用手势表示在对话中的数字。为此可见,手势数字在人与人之间的交谈中起到很重要的地位。该数字启蒙学习器主要面向的对象主要是3-4岁的儿童,并尝试开始学习十以内加法以及手势数字学习。能够充分的锻炼3-4岁儿童脑力以及肢体语言之间的快速联系手势数字启蒙学习器下图手势数字启蒙学习器的使用方式如下1.开启手势数字启蒙学习器2.在手势数字启蒙学习器的左侧,有一个随机原创 2022-01-06 13:41:42 · 470 阅读 · 0 评论 -
OpenCV 图片处理----图片简单融合和图片高级融合
简单融合高级融合原创 2020-04-18 10:18:25 · 1328 阅读 · 2 评论 -
OpenCV 边缘检测----索贝尔算子(Sobel)
索贝尔算子(Sobeloperator):Sobel算子是一个主要用于边缘检测的离散微分算子, 它结合了高斯平滑和微分求导, 用来计算图像灰度函数的近似梯度。Sobel算子的计算过程Sobel边缘检测函数—cv2.Sobel()def Sobel(src, ddepth, dx, dy, dst=None, ksize=None, scale=None, delta=None, b...原创 2020-04-29 20:59:46 · 1879 阅读 · 0 评论 -
OpenCV getStructuringElement
getStructuringElement(shape, ksize, anchor=None)# shape:定义卷积盒的形状# ksize:定义卷积盒的尺寸卷积盒的形状(shape)有三种:矩形核(Rectangular Kernel):cv2.MORPH_RECT椭圆核(Elliptical Kernel):cv2.MORPH_ELLIPSE十字形核(Cross-shape...原创 2020-04-24 11:49:42 · 1911 阅读 · 1 评论 -
OpenCV Fast角点检测算法的使用和原理
代码及解析import numpy as npimport cv2img = cv2.imread("fast_check3.jpg",0) # 读取图片# Initiate FAST object with default valuesfast = cv2.FastFeatureDetector_create() # 实例化fast# find and draw the keypointskp = fast.detect(img, None) # 找出图片中的关键点img2 ..原创 2020-05-15 20:42:02 · 1094 阅读 · 0 评论 -
目标检测:mAP的具体计算方式
mAP: mean Average Precision (AP的平均值)具体步骤绘制PR曲线(Precision-Recall)Precision(查准率) : TPTP+FP\frac{TP}{TP + FP}TP+FPTPRecall (查全率): TPTP+FN\frac{TP}{TP+FN}TP+FNTPTrue Positive (TP): IOU>threshold (threshold一般取 0.5 ) 的检测框数量(同一 Ground Truth 只计算一次)Fals原创 2021-10-08 15:27:24 · 1923 阅读 · 1 评论 -
OpenCV 分水岭算法--距离变换distanceTransform
距离变换原理距离变换的定义是:计算一个图像中非零像素点到最近的像素点的距离,也就是到零像素点的最短距离。距离变换的处理图像通常是二值图像什么是二值图像:就是把图像分为两个部分,即:背景和物体(前景目标)两部分通常情况下,我们把前景目标的灰度值设置为255,也就是白色背景的灰度值我们设置为0,也就是黑色所以回归到距离变换原理,非零像素点就是前景目标零像素点就是背景如上图所示,...原创 2020-04-26 22:17:50 · 3365 阅读 · 0 评论 -
OpenCV 直方图概述以及统计直方图
学习目标:能够使用OpenCV或者Numpy函数计算直方图使用OpenCV或者Matplotlib函数绘制直方图学会cv2.calcHist(),np.histogram()函数的使用了解直方图直方图的x轴是灰度值(0~255)、y轴是图片中具有同一个灰度值的点的数目。直方图是根据灰度图像绘制的,而不是彩色图像直方图的左边区域图像是暗一点的像素数量、右侧则刚好相反直方图...原创 2020-04-21 12:02:22 · 509 阅读 · 0 评论 -
OpenCV GrabCut图像分割算法的使用及其原理
图像分割:选取图像中的指定目标,并将背景色置为黑色。识别目标实例分割:在像素级识别对象轮廓的任务【最困难的视觉任务之一】。识别目标特征GrabCut图像分割算法GrabCut图像分割算法是一个比较重要的图像分割算法...原创 2020-05-07 00:37:17 · 3458 阅读 · 0 评论 -
OpenCV Histogram back projection
PrincipleThe purpose of histogram back projection is to segment and find the target image. It will output an image of the same size as the input image. Each pixel value of the output represents the p...原创 2020-04-22 00:55:32 · 319 阅读 · 0 评论 -
OpenCV 漫水填充算法的使用及原理
本文架构漫水填充算法的简单介绍漫水填充算法的实现原理漫水填充算法floodFill函数及其参数介绍漫水填充算法的使用案例漫水填充算法漫水填充算法(FloodFill)是在很多图形绘制软件中常用的填充算法。通常是自动选中与种子像素相连的区域,利用指定的颜色进行区域的颜色填充。漫水填充算法(FloodFill)常用于标记或者分离图像的一部分,以便做进一步分析和处理。Window...原创 2020-05-07 16:46:07 · 1769 阅读 · 0 评论 -
OpenCV 图像阈值化
阈值化简介图像阈值化是图像处理的重要基础部分,应用很广泛,可以根据灰度的差异来分割图像不同的部分阈值化处理的图像一般为单通道图像(灰度值)固定阈值:cv2.threshold()自适应阈值:cv2.adaptiveThreshold()固定阈值原理:给定阈值进行阈值操作得到二值图(0,1两类值),可以过滤灰度值过大或过小的点cv2.threshold(src,thresh, m...原创 2020-04-23 21:53:59 · 348 阅读 · 0 评论 -
OpenCV 2D Histogram
2D HistogramOne dimensional histogram only needs to consider gray value, but 2D histogram needs to consider hue and saturation.2D histogram in OpenCVThe parameters of cv2.calcHist() method are dif...原创 2020-04-21 20:11:02 · 302 阅读 · 0 评论 -
OpenCV Watershed algorithm
PrincipleAny gray image can be regarded as a topological plane, the region with high gray value can be regarded as a mountain peak, and the region with low gray value can be regarded as a valley.Wh...原创 2020-04-23 13:46:04 · 329 阅读 · 0 评论 -
OpenCV Interpolation
interpolation - 插值方法。共有5种:INTER_NEAREST - 最近邻插值法INTER_LINEAR - 双线性插值法(默认)INTER_AREA - 基于局部像素的重采样(resampling using pixel area relation)INTER_CUBIC - 基于4x4像素邻域的3次插值法INTER_LANCZOS4 - 基于8x8像素邻域的Lanc...原创 2020-04-13 21:50:14 · 5734 阅读 · 1 评论 -
OpenCV 探究图片处理的简单操作
#encoding=utf-8import cv2 # 导入OpenCV模块img = cv2.imread("F:\\picture\\test.jpg") # 读取文件路径cv2.imshow("img", img) # 显示图像cv2.waitKey(0) # 等待按键cv2.destroyAllWindows() # 摧毁所有窗口...原创 2020-04-02 16:09:15 · 309 阅读 · 2 评论 -
OpenCV 绘制图像的局部区域直方图
如果要统计图像中某个局域的直方图构建一幅掩模图像将需要统计的部分设置为白色、其余部分设置为黑色将掩模图像传递给函数即可# -*-coding:utf8-*-#import cv2import numpy as npfrom matplotlib import pyplot as pltimg = cv2.imread('../data/home.jpg') # img.s...原创 2020-04-21 12:52:29 · 665 阅读 · 0 评论 -
OpenCV 探究Harris角点检测算法的使用及其原理
本文架构角点检测的相关概念Harris角点检测算法Harris角点检测函数及其参数介绍Harris角点检测实现角点检测的案例Harris角点检测实现的原理Harris角点检测实现的步骤Shi-Tomasi角点检测(Harris算法的改进)亚像素角点检测角点检测的相关概念(1)特征点(兴趣点/关键点)对于一幅图像,我们把目光从之前的观察整幅图像,转移到了图像中的某些特殊的点,对其进行分析。如果能检测到足够的这种点,同时他们的区分度很高(可以精确定位稳定的特征),那么这个方法具有实原创 2020-05-09 14:45:54 · 645 阅读 · 0 评论 -
DeepSort 图解SORT到DEEP SORT的变化
原创 2020-12-23 11:14:08 · 1822 阅读 · 0 评论 -
OpenCV 图像的形态学操作----膨胀腐蚀
膨胀腐蚀概述膨胀、腐蚀属于形态学的操作, 简单来说就是基于形状的一系列图像处理操作膨胀腐蚀是基于高亮部分操作的, 膨胀是对高亮部分进行膨胀, 类似**“领域扩张”, 腐蚀是高亮部分被腐蚀, 类似“领域蚕食”**膨胀腐蚀的应用和功能:消除噪声分割独立元素或连接相邻元素寻找图像中的明显极大值、极小值区域求图像的梯度其他相关:开运算、闭运算顶帽、黒帽形态学梯度膨胀—cv...原创 2020-04-24 16:17:23 · 755 阅读 · 0 评论 -
OpenCV 图像顶帽运算
顶帽运算也叫礼帽运算操作原理:图像的闭运算与原图像做差功能:可以用来分离比邻近点亮一些的斑点简要的概括:什么是闭运算,有什么功能?闭运算是图像先膨胀后腐蚀膨胀后腐蚀的过程,它可以用来消除小型黑洞(黑色区域)import cv2import numpy as npimage = cv2.imread("other.png")image = cv2.cvtColor(image, ...原创 2020-04-29 11:54:19 · 865 阅读 · 0 评论 -
基于深度学习的目标检测技术演进:R-CNN、Fast R-CNN、Faster R-CNN
大牛提出了一个可以看做单层sppnet的网络层,叫做ROI Pooling,这个网络层可以把不同大小的输入映射到一个固定尺度的特征向量,而我们知道,conv、pooling、relu等操作都不需要固定size的输入,因此,在原始图片上执行这些操作后,虽然输入图片size不同导致得到的feature map尺寸也不同,不能直接接到一个全连接层进行分类,但是可以加入这个神奇的ROI Pooling层,对每个region都提取一个固定维度的特征表示,再通过正常的softmax进行类型识别。原创 2020-08-17 09:20:23 · 225 阅读 · 0 评论 -
OpenCV Matplotlib绘制直方图
绘制直方图有两种方法:使用Matplotlib中的绘图函数使用OpenCV自带的绘图函数使用OpenCV自带函数绘制直方图比较麻烦,这个不做介绍Matplotlib中有直方图绘制函数:matplotlib.pyplot.hist()它可以直接统计并绘制直方图单通道–灰度图# -*-coding:utf8-*-#import cv2import numpy as npfrom...原创 2020-04-21 12:31:16 · 344 阅读 · 0 评论 -
OpenCV 轮廓特征----边界矩形
边界矩形分为两类:直边界矩形旋转的边界矩形直边界矩形检测图像中是否含有矩形,但不会考虑图像中旋转的矩形。所以边界矩形的面积不是最小的。可以使用 **cv2.boundingRect()**进行查看img = cv2.imread('rectangle.png', 1)gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)# 二值化,取阈值为...原创 2020-04-29 08:17:24 · 1189 阅读 · 0 评论 -
OpenCV Histogram Equalization
Goal:Learning the concept of histogram equailze and how to use it to improve the contrast of picturesTheory:If most of the pixel values in an images are concentrated in one pixel range.For exampl...原创 2020-04-21 15:58:10 · 613 阅读 · 0 评论 -
深度学习 用一个易懂的小栗子解释神经网络的BP算法
神经网络之BP算法BP算法也叫做δδδ算法以三层的感知器为例:输出层误差:E=12(d−O)2=12∑k=1ζ(dk−Ok)2E=\frac{1}{2}(d-O)^2=\frac{1}{2}\sum_{k=1}^ζ(d_k-O_k)^2E=21(d−O)2=21∑k=1ζ(dk−Ok)2隐层的误差:E=12∑k=1ζ(dk−f(netk))2=12∑k=1ζ(dk−f(∑j=1mwjkyj))E=\frac{1}{2}\sum_{k=1}^ζ(d_k-f(net_k))^2 = \f原创 2020-06-06 23:58:12 · 297 阅读 · 0 评论 -
优化器
https://blog.youkuaiyun.com/weixin_40170902/article/details/80092628转载 2020-09-08 19:01:47 · 182 阅读 · 1 评论 -
Tensorflow 拟合sinx、cosx以及square函数
导入需要的模块import numpy as npfrom matplotlib import pyplot as pltimport tensorflow as tf定义需要的参数类class Config: def __init__(self): self.save_path = './model_sin/sin_cos' # 训练结果保存的路径 self.lr = 0.001 # 学习步长 self.epoches = 1000原创 2020-06-22 09:36:35 · 942 阅读 · 0 评论 -
深度学习 Inception实现过程(附代码)
with tf.variable_scope(name): branch1 = tf.layers.conv2d(x, filters, 1, 2, 'same',name='branch1') branch2 = tf.layers.max_pooling2d(x, 3, 1, 'same', name='branch2_pool') branch2 = tf.layers.conv2d(branch2, filters, 1, 2, 'sam...原创 2020-07-15 10:12:05 · 884 阅读 · 1 评论 -
深度学习 LSTM的实现过程图以及代码实现
LSTM的实现过程LSTM的实现步骤长期记忆短期记忆遗忘门(第一个门)输入门输出门注意上面的公式,我们使用上面的公式进行代码的实现这个是内置的方法,我们可以直接进行调用a = tf.nn.rnn_cell.LSTMCell()a.call(self, inputs, state) # state : 即指长期记忆,也指短期记忆a.zero_state(self, batch_size, dtype) # batch_size 样本的数量需要给定, dtype需要传值原创 2020-07-17 16:21:48 · 2665 阅读 · 0 评论 -
GAN(Generative Adversarial Network)
GAN(Generative Adversarial Network),我们称之为生成式对抗网络GAN的几种变体GAN — CGAN — Pix2Pix — CycleGAN — StarGANGAN的作用GAN:给定一个随机向量能够生成一个随机的图片CGAN :给等一个标签和一个随机的向量生成指定的图片Pix2Pix:可用于简笔画生成图片CycleGAN:可以用于男女性别转换、油画图片转换等StarGAN:CycleGAN的一个简单的版本GAN的工作原理从GAN的名字我原创 2021-02-02 14:46:04 · 864 阅读 · 0 评论 -
FLOPS、FLOPs、FPS
FLOPS:Floating-point operations per second即每秒所运行的浮点运算次数,常用来测量电脑运算速度或被用来估算电脑性能。在多数情况下,测算FLOPS比测算每秒指令数(IPS)要准确。换算一个MFLOPS(megaFLOPS)等于每秒一百万(10610^6106)次的浮点运算;一个GFLOPS(gigaFLOPS)等于每秒十亿/十亿(10910^9109)次的浮点运算;一个TFLOPS(teraFLOPS)等于每秒一兆/一万亿(101210^121012)转载 2021-10-08 14:21:13 · 3681 阅读 · 1 评论 -
深度学习 tf和np的float32和float64为什么不能通用
标量和张量的区别标量比较就是比较标量的本事而张量的比较是比较矩阵,我们不能确定矩阵中所有的元素的长度都是一样的如果在进行比较的时候假设矩阵A和矩阵B比较矩阵A是float32的矩阵B是float64的如果两者要进行相加的时候,需要将每一个张量中的元素靠近另一个张量但是矩阵的元素过多,不能很好的达到统一因此张量中的类型需要相同...原创 2020-07-23 09:57:11 · 2390 阅读 · 2 评论 -
深度学习 比较三种损失函数的使用(交叉熵、平方、绝对值)
注意:y∗y^*y∗代表的是标签值仅仅有0、10、10、1两个值,yyy是获得的语义值(softmaxsoftmaxsoftmax后的逻辑值)交叉熵:Loss1=−y∗∗logyLoss1 = - y^**log^yLoss1=−y∗∗logy当y∗y^*y∗为0时:Loss的值为0当y∗y^*y∗为1时:Loss的值为−logy-log^y−logy平方:Loss2=y∗∗(1−y)2Loss2 = y^**(1-y)^2Loss2=y∗∗(1−y)2当y∗y^*y∗为0时:Loss的原创 2020-07-06 17:56:01 · 1152 阅读 · 3 评论 -
深度学习评价指标
分类算法的评价指标准确率(Precision)召回率(Recall)F分数(F-score)受试者工作特征(ROC)AUC(Area Under Curve)多分类:Micro-F1和Macro-F1检测算法的评价指标准确率 (Accuracy)混淆矩阵 (Confusion Matrix)召回率(Recall)平均正确率(AP)交并比(IoU)精确率(Precision)mean Average Precision(mAP)推荐系统评测指标准确率(Precis原创 2021-02-03 14:30:13 · 658 阅读 · 0 评论 -
CenterLoss
CenterLossCenterLoss 来自于ECC2016的一篇论文:《A Discriminative Feature Learning Approach for Deep Face Recognition》论文地址:http://ydwen.github.io/papers/WenECCV16.pdfCenterLoss是干嘛的?我们知道:对于图像的分类问题,我们通常使用softmax来计算损失上图就是我们使用softmax对手写数字图像进行不同数字进行颜色的分类如果我们在softm原创 2021-01-26 14:20:15 · 326 阅读 · 0 评论 -
理解LSTM(通俗易懂版)
https://www.jianshu.com/p/95d5c461924c转载 2020-08-24 11:25:54 · 461 阅读 · 0 评论 -
Softmax到Arcface的转变过程
二分类下的Softmax当P1 = P2p1−p2===>(W1−W2)x+b1−b2=0p_1-p_2 === >(W_1 - W_2)x + b_1 - b_2 = 0p1−p2===>(W1−W2)x+b1−b2=0将WiTx+biW_i^Tx + b_iWiTx+bi进行改写∣∣WiT∣∣∗∣∣x∣∣∗cos(θ)+bi||W_i^T|| * ||x|| * cos(θ) + b_i∣∣WiT∣∣∗∣∣x∣∣∗cos(θ)+bi 其中 θ是W与x的夹原创 2021-01-25 13:51:21 · 409 阅读 · 0 评论 -
深度学习 激活函数公式
原创 2020-07-17 12:41:38 · 312 阅读 · 0 评论