- 博客(55)
- 收藏
- 关注
原创 计算机视觉(十二):Mask R-CNN
1 - 引言Mask R-CNN是在Faster R-CNN架构为基础上改进的一种目标检测架构,并且能够有效的完成高质量的语义分割
2019-03-18 19:29:05 2236
转载 目标检测评价指标
1 - 引言在衡量一个目标检测的模型时,有许多的标价指标可以帮助我们评价一个模型的好坏。在这里总结一下准确率 (Accuracy),混淆矩阵 (Confusion Matrix),精确率(Precision),召回率(Recall),平均正确率(AP),mean Average Precision(mAP),交除并(IoU),ROC + AUC,非极大值抑制(NMS)。2 - 准确率 (Ac...
2019-03-13 17:10:02 1038
原创 计算机视觉(十):梯度下降优化算法
1 - 引言我们知道,神经网络使用的是梯度下降来最小化损失函数,来获得最优解,因此如何使用更好的梯度下降算法,关系到我们神经网络的训练速度和准确率,因此,如何利用算得的损失函数及其关于模型参数的梯度,就成为了对神经网络最优化的核心问题。我们在optim.py文件中构建这些梯度下降算法之前,我们使用的是随机梯度下降(stochastic gradient descent)def sgd(w,...
2019-01-22 15:16:32 861
原创 计算机视觉(九):神经网络的完善与模块化
1 - 引言之前,我们已经实现了神经网络基本的功能,现在,要将神经网络的搭建用模块化的思想组建起来,让程序更加富有可扩展性和可读性,然后学习一些非常常用的神经网络优化算法,让我们的训练更加的快速,并且准确率进一步提高。下面就让我们开始吧2 - 模块化构造神经网络2.1 - 仿射层和激活层的前向传播一个神经元,由这两个部分构成仿射层(Affine Layer)神经网络中的一个全连接层。...
2019-01-22 10:56:12 959
原创 计算机视觉(八):提取Cifar-10数据集的HOG、HSV特征并使用神经网络进行分类
1 - 引言之前我们都是将整张图片输入进行分类,要想进一步提升准确率,我们就必须提取出图片更容易区分的特征,再将这些特征当做特征向量进行分类。在之前我们学了一些常用的图像特征,在这次实验中,我们使用了两种特征梯度方向直方图(HOG)颜色直方图(HSV)为什么选用这两种特征呢?应为HOG捕捉到的是图像的纹理特征,而忽略了颜色信息,颜色直方图会表示图像的颜色特征而忽略了纹理特征,因此将这...
2019-01-13 11:40:02 5623
原创 计算机视觉(七):构建两层的神经网络来分类Cifar-10数据集
1 - 引言之前我们学习了神经网络的理论知识,现在我们要自己搭建一个结构为如下图所示的神经网络,对Cifar-10数据集进行分类前向传播比较简单,就不在赘述反向传播需要注意的是,softmax的反向传播与之前写的softmax代码一样。神经网络内部的反向传播权重偏导就是前面的系数,偏置的导为1,所以就是传播输入的累加和,ReLU函数在反向传播时,小于零的均为0,大于零的不变根据求导过程可...
2019-01-11 11:47:04 2215
原创 计算机视觉(六):使用Softmax分类Cifar-10数据集
1 - 引言这次,我们将使用Softmax来分类Cifar-10,过程其实很之前使用的SVM过程差不多,主要区别是在于损失函数的不同,而且Softmax分类器输出的结果是输入样本在不同类别上的概率值大小,Softmax分类器也叫多项Logistic回归线性模型:y=Wxy=Wxy=WxSoftmax模型:Si=eyi∑jeyjS_i=\frac{e^{y_i}}{\sum_{j}e^{y...
2019-01-09 12:03:49 2808 2
原创 计算机视觉(五):使用SVM分类Cifar-10数据集
1 - 引言之前我们使用了K-NN对Cifar-10数据集进行了图片分类,正确率只有不到30%,但是还是比10%高的[手动滑稽],这次我们将学习使用SVM分类器来对Cafi-10数据集实现分类,但是正确率应该也不会很高要想继续提高正确率,就要对图像进行预处理和特征的选取工作,而不是用整张图片进行识别。从计算机视觉发展的角度来将,在深度学习出来之前,传统的图像识别方法一直都是使用特征选取+分类器...
2019-01-08 11:25:01 6701 1
原创 计算机视觉(四):使用K-NN分类器对CIFAR-10进行分类
1 - 引言之前我们学习了KNN分类器的原理,现在让我们将KNN分类器应用在计算机视觉中,学习如何使用这个算法来进行图片分类。2 - 准备工作创建项目结构如图所示在datasets文件中下载数据集Cifar-10k_nearest_neighbor.py代码如下:import numpy as npfrom collections import Counterclass K...
2019-01-05 11:53:37 3075 3
原创 计算机视觉(三):目标检测与识别
1 - 引言目标检测和识别,是计算机视觉最常见的挑战之一。目标检测和识别的区别在于:目标检测是用来确定图像的某个区域是否含有要识别的对象,而识别是程序识别对象的能力。识别通常只处理已检测到对象的区域。在计算机视觉中有很多目标检测和识别的技术梯度直方图(Histogram of Oriented Gradient, HOG)图像金字塔(image pyramid)滑动窗口(slidin...
2018-12-27 16:42:20 29018 3
原创 计算机视觉(一):人脸检测和识别
1 - 引言之前我们学习了机器学习和数字图像处理的相关知识,了解了基本的概念理论和OpenCV和TensorFlow框架的使用,现在我们可以结合这些知识与工具写出属于我们自己的计算机视觉项目,本文主要介绍了如何使用OpenCV提供的函数来构建一个人脸识别和检测的应用2 - Haar级联的概念我们知道提取出图像数据的细节特征对产生稳定分类结果和跟踪结果很有用,两个图像的相似程度可以通过他们对应...
2018-12-26 11:28:13 4114 1
原创 数字图像处理笔记(十三):图像特征表示和描述
1 - 引言在我们进行图像识别的时候,往往是将图片中的特征来表示整张图片让计算机进行识别,基本上表示一个区域涉及两种选择:外部特征内部特征下一步就是基于所选择的表示来描述区域当我们关注的重点是形状特征时,可选择一种外部表示;而当关注的重点是内部属性如颜色和纹理时,可以选择一种内部表示。无论哪种情形,选择用来作为描绘子的特征都应尽可能地对大小、平移和旋转不敏感2 - 表示图像分割技...
2018-12-23 14:38:21 8420 1
原创 数字图像处理笔记(十二):图像分割算法
1 - 引言在图像识别中,如果可以将图像感兴趣的物体或区别分割出来,无疑可以增加我们图像识别的准确率,传统的数字图像处理中的分割方法多数基于灰度值的两个基本性质不连续性以灰度突变为基础分割一副图像,比如图像的边缘相似性根据一组预定义的准则将一副图像分割为相似的区域。阈值处理、区域生长、区域分裂和区域聚合都是这类方法的例子。在边缘检测算法中我们学习了如何利用不连续性来分割图像。本文将...
2018-12-21 18:06:31 11256 1
原创 数字图像处理笔记(十一):边缘检测算法
1 - 引言2 - 点、线和边缘检测1.2换行1.3强调1 - 引言在图像识别中,如果可以将图像感兴趣的物体或区别分割出来,无疑可以增加我们图像识别的准确率,传统的数字图像处理中的分割方法多数基于灰度值的两个基本性质不连续性、以灰度突变为基础分割一副图像,比如图像的边缘相似性根据一组预定义的准则将一副图像分割为相似的区域。阈值处理、区域生长、区域分裂和区域聚合都是这...
2018-12-20 20:55:06 14713
原创 数字图像处理笔记(十):形态学图像处理
1 - 引言自20世纪50年代起傅里叶变换就一直是基于变换的图像处理的基石,但今年来一种新的称为小波变换的变换使得处理图像变得更为容易。当我们观察图像时,如果物体的尺寸较小或对比度较低,那么我们通常以较高的分辨率来研究他们;如果物体的尺寸较大或对比度较高,则只要求粗略的观察就足够了。因此,以不同的分辨率对它们进行研究将具有优势。下面就让我们介绍一下小波变换在图像去噪、增强、边缘检测上面的应用...
2018-12-20 10:43:14 1460
原创 数字图像处理笔记(九):选择性滤波
1 - 引言在前面我们讨论了高通和低通滤波器对图像进行处理,它们都是在整个图像的频率矩阵上操作,但是在很多应用中,我们感兴趣是处理指定的频段或频率矩形的小区域,因此需要使用选择性滤波,选择性滤波主要有两类带阻滤波器或带通滤波器陷波滤波器下面就让我们来介绍一下这两种滤波器2 - 带阻滤波器和带通滤波器这种类型的滤波器很容易使用前面的概念来构建,前面我们学习了理想、布特沃斯和高斯滤波器...
2018-12-17 17:30:45 3378
原创 数字图像处理笔记(八):频域高通滤波锐化图像
1 - 引言在笔记(七)中,我们通过衰减图像的傅里叶变换的高频成分来平滑对象,因为边缘和其他灰度的急剧变化与高频分量有关,所以图像的锐化可在频域通过高通滤波来实现。一个高通滤波器是从给定的低通滤波器用下式得到:HHP(u,v)=1−HLP(u,v)H_{HP}(u,v)=1-H_{LP}(u,v)HHP(u,v)=1−HLP(u,v)其中,HLP(u,v)H_{LP}(u,v)HLP...
2018-12-17 15:45:24 9314
原创 数字图像处理笔记(七):频域低通滤波平滑图像
1 - 引言在前面我们对空间滤波做了重点的研究,但是如果不了解在图像滤波中如何应用傅里叶变换和频率域的基本知识,想要彻底理解这一领域也是不太可能的。下面我们来介绍一下傅里叶变换和频域率处理的要领。...
2018-12-16 17:51:04 11101 3
原创 数字图像处理笔记(六):空间滤波基础
1 - 引言空间滤波是图像处理领域应用广泛的主要工具之一。这里我们主要讨论怎样使用空间滤波来增强图像。2 - 平滑空间滤波器
2018-12-15 18:10:04 2175
原创 数字图像处理笔记(五):直方图均衡与直方图匹配(规定化)
1 - 直方图处理直方图是多种空间域处理技术的基础,可以用于图像增强。2 - 直方图均衡考虑连续灰度值,并用变量r表示待处理图像的灰度。设r的取值区间为[0,L-1],且r = 0表示黑色,r = L - 1表示白色。令pr(r)p_r(r)pr(r)和ps(s)p_s(s)ps(s)分别表示随机变量r和s的概率密度函数,概率密度函数归一化后可以画出图像的直方图import nump...
2018-12-15 11:19:52 3347
原创 动态规划
1 - 引言动态规划是一种用途很广的问题求解方法,它本身并不是一个特定的算法,而是一种思想,一种手段,下面通过一道题目阐述动态规划的基本思路和特点2 - 数字三角形数字三角形问题。有一个由非负整数组成的三角形,第一行只有一个数,除了最下行之外每个数的左下方和右下方各有一个数从第一行的数开始,每次可以往左下或右下走一格,直到走到最下行,把沿途经过的数全部加起来。如何走才能使得这个和尽量...
2018-12-15 09:28:07 185
原创 数字图像处理笔记(四):灰度变换
1 - 引言图像处理分为空间域和变换域(在图像的傅里叶变换上进行处理),空间域是指图像平面本身,主要是直接以图像中的像素操作为基础进行图像处理,空间域的处理主要分为灰度变换和空间滤波两类,本文主要介绍灰度变换在图像增强方面的应用,使得输出的图像比原始图像更适合特定需求的一种处理。下面我们来介绍一下经典的灰度变换和空间滤波技术。2 - 一些基本的灰度变换函数灰度变换是所有图像处理技术中最简单...
2018-12-13 16:29:02 4985
原创 贪心算法
1 - 引言贪心法是一种解决问题的策略。如果策略正确,那么贪心法往往是易于描述、易于实现的。2 - 背包相关问题最优装载问题。给出n个物体,第i个物体重量为wiw_iwi。选择尽量多的物体,使得总重量不超过C。【分析】由于只关心物体的数量,所以装重的没有装轻的划算。只需把所有物体按重量从小到大排序,依次选择每个物体,直到装不下为止。这是一种典型的贪心算法,它只顾眼前,但却能得到最...
2018-12-13 11:19:12 439
原创 再谈数据结构(四):排序与查找
1 - 引言虽然C++中的STL库中提供了许多排序和查找的方法。但是我们还是需要了解一下排序和查找内部的原理,下面让我们学习一下各类排序与查找算法2 - 归并排序第一种高效的排序算法是归并排序,按照分治三步法,对归并排序算法介绍如下:划分问题:把序列分成元素个数尽量相等的两半。递归求解:把两半元素分别排序合并问题:把两个有序表合并成一个前两部分是很容易完成的,关键在于如何把两个有...
2018-12-12 12:05:46 390
原创 数字图像处理笔记(三):使用OpenCV检测图像特征
1 - 引言在数字图像处理中还提供了许多检测图像简单特征的方法,例如边缘检测、轮廓检测、直线检测、圆检测等。让我们用OpenCV实现以下这些算法吧2 - Canny边缘检测OpenCV提供了一个非常方便的Canny函数(以算法的发明者发明)import cv2import numpy as npimg = cv2.imread('images/12.jpg',0)cv2.imwri...
2018-12-11 16:34:58 1052
原创 再谈数据结构(三)图
1 - 引言图(Graph)描述的是一些个体之间的关系。与线性表和二叉树不同的是:这些个体之间既不是前驱后继的顺序关系,也不是祖先后代的层次关系,而是错综复杂的网状关系。图也是数据结构中经常使用的一种结构,让我们来学习一下使用图的算法吧2 - 用DFS求连通块例题6-12 油田(Oil Deposits, UVa 572)输入一个m行n列的字符矩阵,统计字符“@”组成多少个八连块。如果...
2018-12-07 12:04:09 383
原创 数字图像处理笔记(一):利用OpenCV的Cameo框架搭建实验环境
1 - 引言Python的应用程序可以通过面向对象的方法来实现,OpenCV提供了一个Cameo框架可以捕捉电脑的摄像头。我们可以通过编写添加框架里的类和方法来对摄像头捕捉到的画面进行图像处理和实验,是一个很好的学习方法,下面让我们来搭建一下这个Cameo框架2 - 使用managers.CaptureManager提取视频流无论图像来自视频文件还是摄像头,OpenCV都可以获取、显示和记录...
2018-12-06 13:22:12 1208
原创 机器学习笔记(二十二):TensorFlow实战十四(图像风格迁移)
1 - 引言相信大家都使用过一种滤镜,可以把一张照片转换成不同风格的照片,如下图所示:那么我们就来利用TensorFlow来实现以下这个算法,这个算法出自Gatys的A Neural Algorithm of Artistic Style论文,十分有趣,让我们来详细的介绍一下这个算法吧2 - 利用VGG提取特征总得来说,就是利用一个训练好的卷积神经网络 VGG-19,这个网络在Image...
2018-12-05 21:35:26 1614 3
原创 再谈数据结构(二)数和二叉树
1 - 引言关于树和二叉树,我们需要达到的能力有:熟悉树和二叉树的有关概念熟悉二叉树的性质熟练掌握遍历二叉树的递归算法,并灵活运用知道线索二叉树,会对二叉树进行线索化递归遍历二叉树及其应用构造赫夫曼树和赫夫曼编码树和二叉树的转换森林和二叉树的转换遍历树和森林本文着重在树和二叉树实际应用与代码实现基本操作,对概念就不再赘述2 -...
2018-11-29 10:49:48 517
原创 机器学习笔记(二十一):TensorFlow实战十三(迁移学习)
1 - 引言越复杂的神经网络,需要的训练集越大,ImageNet图像分类数据集有120万标注图片,所以才能将152层的ResNet的模型训练到大约96.%的正确率。但是在真正的应用中,很难收集到如此多的标注数据。即使收集到也需要花费大量人力物力来标注。并且即使有了大量的数据集,要训练一个复杂的卷积神经网络也需要几天甚至几周的时间,为了解决标注数据和训练时间的问题,可以使用迁移学习下面就让我们来...
2018-11-26 18:31:35 565
原创 机器学习笔记(二十):TensorFlow实战十二(TensorBoard可视化)
1 - 引言前面已经介绍到TensorFlow可以实现许多非常常用的神经网络结构,有的网络结构十分复杂,里面的参数关系更是难以管理。因此,TensorFlow提供了一个可视化工具TensorBoard。可以有效的展示运行过程中的计算图、各种指标随着时间的变化趋势以及训练中使用到的图像等信息。2 - TensorBoard简介TensorBoard是TensorFlow的可视化工具,可以呈现当...
2018-11-26 16:02:55 721
原创 机器学习笔记(十九):TensorFlow实战十一(多线程输入数据)
1 - 引言为了加速模型训练的时间,TensorFlow提供了一套多线程处理输入数据的框架。下面我们来详细的介绍如何使用多线程来加速我们的模型训练速度2 - 队列与多线程在TensorFlow中,队列和变量类似,我们可以修改它们的状态。下面给出一个示例来展示如何在TensorFlow中操作一个队列import tensorflow as tf#创建一个队列,指定队列长度为2,类型为...
2018-11-25 14:11:21 667
原创 机器学习笔记(十八):TensorFlow实战十(图像数据处理)
1 - 引言之前我们介绍了通过卷积神经网络可以给图像识别技术带来突破性的进展,现在我们从图像的预处理这个角度来继续提升我们图像识别的准确率。输入的预处理需要使用TFRecord格式来同一不同的原始数据格式,并且更加有效的管理不同的属性。并且TensorFlow支持图像处理函数,可以通过预处理来弱化与图像识别无关的因素2 TFRecord输入数据格式TFRecord文件中的数据都是通过tf...
2018-11-24 22:11:08 937
原创 机器学习笔记(十七):TensorFlow实战九(经典卷积神经网络:ResNet)
1 - 引言我们可以看到CNN经典模型的发展从LeNet -5、AlexNet、VGG、再到Inception,模型的层数和复杂程度都有着明显的提高,有些网络层数更是达到100多层。但是当神经网络的层数过高时,这些神经网络会变得更加难以训练。一个特别大的麻烦就在于训练的时候会产生梯度消失,非常深的网络通常会有一个梯度信号,该信号会迅速的消退,从而使得梯度下降变得非常缓慢。更具体的说,在梯度下...
2018-11-23 16:13:12 1184
原创 机器学习笔记(十四):TensorFlow实战六(经典卷积神经网络:AlexNet )
1 - 引言2012年,Imagenet比赛冠军的model——Alexnet [2](以第一作者alex命名)。这个网络算是一个具有突破性意义的模型首先它证明了CNN在复杂模型下的有效性,然后GPU实现使得训练在可接受的时间范围内得到结果,让之后的网络模型构建变得更加复杂,并且通过GPU加速越来越得到关注论文原文:http://papers.nips.cc/paper/4824-image...
2018-11-21 17:08:39 735
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人