demi的博客

深度学习优化函数详解(0)——线性回归问题

在做一些深度学习的算法的时候,都会用到优化函数,在各种成熟的框架中,基本就是一行代码的事,甚至连默认参数都给你设置好了,基本不用动什么东西,最后也会有比较好的优化结果。但是对于优化函数这么核心,这么基本的东西总是模棱两可实在不应该。于是想自己把一些常用的优化函数从原理上搞清楚,所以才有了这个系列的文章。每一篇文章都有配套的python代码,文末会给出地址。

线性回归问题(Linear Regression)

假设我们有一组数据,是一些房子的面积和价格。如下

8个经过证实的方法:提高机器学习模型的准确率

我从实践中学习了到这些方法。相对于理论,我一向更热衷于实践。这种学习方式也一直在激励我。本文将分享 8 个经过证实的方法,使用这些方法可以建立稳健的机器学习模型。希望我的知识可以帮助大家获得更高的职业成就。

导语

提升一个模型的表现有时很困难。如果你们曾经纠结于相似的问题,那我相信你们中很多人会同意我的看法。你会尝试所有曾学习过的策略和算法,但模型正确率并没有改善。你会觉得无助和困顿,这是 90% 的数据科学家开始放弃的时候。

不过,这才是考验真本领的时候!这也是普通的数据科学家跟大师级数据科学家的差距所在。你是否曾经梦想过成为大师级的数据科学家呢?

如果是的话,你需要这 8 个经过证实的方法来重构你的模型。建立预测模型的方法不止一种。这里没有金科玉律。但是,如果你遵循我的方法(见下文),(在提供的数据足以用来做预测的前提下)你的模型会拥有较高的准确率。

我从实践中学习了到这些方法。相对于理论,我一向更热衷于实践。这种学习方式也一直在激励我。本文将分享 8 个经过证实的方法,使用这些方法可以建立稳健的机器学习模型。希望我的知识可以帮助大家获得更高的职业成就。

基于“视频图像”的人脸识别算法

一个典型的基于视频图像的人脸识别系统一般都是自动检测人脸区域,从视频中提取特征,最后如果人脸存在则识别出人脸的身份。在视频监控、信息安全和出入控制等应用中,基于视频的人脸识别是一个非常重要的问题,也是目前人脸识别的一个热点和难点。基于视频比基于静态图像更具优越性,因为 Bruce 等人和 Knight 等人已证明,当人脸被求反或倒转时,运动信息有助于(熟悉的)人脸的识别。虽然视频人脸识别是基于静态图像的人脸识别的直接扩展,但一般认为视频人脸识别算法需要同时用到空间和时间信息,这类方法直到近几年才开始受到重视并需要进一步的研究和发展。

视频人脸识别遇到的困难和挑战,具体来说有以下几种:

1、视频图像质量比较差:视频图像一般是在户外(或室内,但是采集条件比较差)获取的,通常没有用户的配合,所以视频人脸图像经常会有很大的光照和姿态变化。另外还可能会有遮挡和伪装。

2、人脸图像比较小:同样,由于采集条件比较差,视频人脸图像一般会比基于静态图像的人脸识别系统的预设尺寸小。小尺寸的图像不但会影响识别算法的性能,而且还会影响人脸检测,分割和关键点定位的精度,这必然会导致整个人脸识别系统性能的下降。

【盘点】掌握机器学习的5条必由之路

作者:Jason Brownlee
译者:刘小芹

【导读】作者在本文提出一种5步入门并应用机器学习的方法。它不是传统的方法。传统的机器学习方法提倡从下往上学,先从理论和数学开始,然后是算法实现,最后让你去解决现实世界的问题。

【盘点】掌握机器学习的5条必由之路

作者提倡的掌握机器学习的方法与传统方法相反,是从最有价值的成果部分开始。

目标是得到有商业价值的成果:怎样得出结果。

这个结果以一系列预测或能进行可靠预测的模型的方式呈现。

这是一种从上往下的、结果优先的方法。

在商业社会,开始时就有要得到结果的目标是最重要的,那么,怎样才能得到结果?

我们总结了5个步骤:

使用dlib中的深度残差网络(ResNet)实现实时人脸识别

opencv中提供的基于haar特征级联进行人脸检测的方法效果非常不好,本文使用dlib中提供的人脸检测方法(使用HOG特征或卷积神经网方法),并使用提供的深度残差网络(ResNet)实现实时人脸识别,不过本文的目的不是构建深度残差网络,而是利用已经训练好的模型进行实时人脸识别,实时性要求一秒钟达到10帧以上的速率,并且保证不错的精度。opencv和dlib都是非常好用的计算机视觉库,特别是dlib,前面文章提到了其内部封装了一些比较新的深度学习方法,使用这些算法可以实现很多应用,比如人脸检测、车辆检测、目标追踪、语义分割等等。由于这两个库相应的都包含了C++和Python的版本,而Python的配置和相对使用起来更加简单,因此这篇文章主要通过Python来实现。

先上测试的识别效果,第一张识别吴恩达和Bengio,后者我没有打标签所以识别的是“other”;另外一张gif 是识别梁朝伟、刘德华和一个女主持的过程,本地库中没有存储女主持的图片。

彻底理解数字图像处理中的卷积——以Sobel算子为例

卷积在信号处理领域有极其广泛的应用,也有严格的物理和数学定义。本文只讨论卷积在数字图像处理中的应用。

在数字图像处理中,有一种基本的处理方法:线性滤波。待处理的平面数字图像可被看做一个大矩阵,图像的每个像素对应着矩阵的每个元素,假设我们平面的分辨率是 1024 * 768,那么对应的大矩阵的行数= 1024,列数=768 。

用于滤波的是一个滤波器小矩阵(也叫卷积核),滤波器小矩阵一般是个方阵,也就是行数和列数相同,比如常见的用于边缘检测的 Sobel 算子 就是两个 3*3 的小矩阵.

进行滤波就是对于大矩阵中的每个像素,计算它周围像素和滤波器矩阵对应位置元素的乘积,然后把结果相加到一起,最终得到的值就作为该像素的新值,这样就完成了一次滤波。

上面的处理过程可以参考这个示意图:

图像卷积计算示意图:

一文了解什么是语义分割及常用的语义分割方法有哪些?

语义分割是计算机视觉中的基础任务,我们通常会使用基于 CNN 加 CRF 的方法或直接使用对抗性的训练实现端到端的分割。本文简要介绍了这两种方法及它们的特点。

人类是如何描述场景的?我们可能会说「窗户下有一张桌子」,或者「沙发右边有一盏灯」。图像理解的关键在于将一个整体场景分解成几个单独的实体,这也有助于我们推理目标的不同行为。

当然,目标检测方法可以帮助我们绘制某些确定实体的边框,但人类对场景的理解能以像素级的精细程度对每一个实体进行检测并标记精确的边界。我们已经开始发展自动驾驶汽车和智能机器人,这些都需要深入理解周围环境,因此精确分割实体变得越来越重要。

什么是语义分割?

语义分割是计算机视觉中的基本任务,在语义分割中我们需要将视觉输入分为不同的语义可解释类别,「语义的可解释性」即分类类别在真实世界中是有意义的。例如,我们可能需要区分图像中属于汽车的所有像素,并把这些像素涂成蓝色。

机器学习算法——聚类

聚类属于无监督学习,事先不知道数据会分为几类,通过聚类分析将数据聚合成几个群体。聚类是不需要对数据进行训练和学习的。主要的聚类算法有K-Means和DBSCAN。

K-Means算法的基本原理比较简单:
1.指定K值(数据要分成的簇的数目),并指定初始的k个质心;
2.遍历每个数据点,计算其到各个质心的距离,将其归类到距离最近的质心点;
3分类完毕后,求各个簇的质心,得到新的质心点;
4.重复2和3中的操作,计算新的质心与旧的质心之间距离,如果小于设定的误差值,则停止计算,否则继续进行迭代。

K-Means算法的效果由SSE(sum of square error误差平方和)来衡量,聚类的效果受K值和初始质心影响很大,有可能会在局部形成聚类点。有一种改进方法是二分K-Means算法,每次选择SSE值最大的簇进行二分类,直到分成K个聚类。

K-Means算法还有一个很明显的缺点是对于某些分布的点是不能进行分类的,比如如图中的点:

深度学习的目标检测技术演进:R-CNN、Fast R-CNN、Faster R-CNN

object detection我的理解,就是在给定的图片中精确找到物体所在位置,并标注出物体的类别。object detection要解决的问题就是物体在哪里,是什么这整个流程的问题。然而,这个问题可不是那么容易解决的,物体的尺寸变化范围很大,摆放物体的角度,姿态不定,而且可以出现在图片的任何地方,更何况物体还可以是多个类别。

object detection技术的演进:
RCNN->SppNET->Fast-RCNN->Faster-RCNN

从图像识别的任务说起
这里有一个图像任务:
既要把图中的物体识别出来,又要用方框框出它的位置。