demi的博客

使用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

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

人工智能和物联网时代,这十大良机不可错过!

近日,SAP针对网络经济未来发展趋势公布的研究报告《未来网络经济的99个趋势》显示,大数据、智能助手、共享经济等将成为未来网络经济的热门关键词。

1、到2020年,平均每个人都会与机器人有更多的对话。

值得注意的是,就在今年CES世界消费电子展上,多家科技公司推出了服务型机器人,其中一款Aeolus公司的家用服务机器人也是出尽风头,它不仅能够做为一个家庭保姆,干擦地板擦家具的脏活累活,还能够根据你的需求在冰箱为你取回需要的饮品等。未来一天,或许你日常交流的“家庭成员”之一就是一位机器人。

2、虽然51%的工作活动可以自动化,但是完全由机器替代的工作不到5%。

一直以来,从包括麦肯锡等专业机构的预期来看,AI确实会取代一些人类工作。但是同时,美国《新闻周刊》指出,很多人质疑AI会取代人类就业之际,数据公司的兴起表明,人工智能实际上能创造就业,这是我们不曾预想到的。此前的埃森哲报告也指出,越来越多角色将需要我们与AI有效地展开合作,而不是被AI取代。

3、71%的B2B客户在购买后被忽视,只有1%的B2B营销人员在售后管理客户关系。

机器学习和对抗性人工智能会是新的内部威胁吗

​机器学习和人工智能正在从概念验证程序转变为功能性企业基础架构。随着对这些技术的资金支持不断攀升,可以预见人工智能的普及是不可避免的。

机器学习(ML)和人工智能(AI)正在从概念验证程序转变为功能性企业基础架构。随着对这些技术的资金支持不断攀升,可以预见人工智能的普及是不可避免的。

但是数字智能的应用带来了新的风险:IT专家面对这急剧的变化,有些无所适从,而网络犯罪分子正在想方设法入侵新工具。

为什么AI无法取代人类专业技能?

现在的安全团队工作过度而且人员不足,但还是有人担心AI工具会最终取代人类专业技能。

为了回应这些担忧,Phys.org网站在2018年6月指出,现在关于人工智能和自动化的讨论被两种思想主导,一种是灾难预言者,他们害怕机器人会取代人类的工作,另一种是乐天派,他们对新技术不以为然,认为世界上没有什么新东西。

然而,研究表明,这些技术只适合取代某些特定的工作任务,而不是彻底消除某些职业。The Verge在2018年6月报道,美国军队的一项实验计划将利用机器学习来更好的预测车辆何时需要维修,这不仅降低了成本,也减轻了技术人员的压力。

一种新的CNN网络可以更高效地区分自然图像&生成图像

传统的肉眼识别方法是很难直接识别出 NIs (自然图像) 和 CG (计算机生成的图像)。本文中提出了一种高效的、基于卷积神经网络 (CNN) 的图像识别方法。通过大量的实验来评估模型的性能。实验结果表明,该方法优于现有的其他识别方法,与传统方法中采用 CNN 模型来识别图像,此方法还能借助高级可视化工具。

机器学习萌新必学的Top10算法

在机器学习中,有一种叫做「没有免费的午餐」的定理。简而言之,它指出没有任何一种算法对所有问题都有效,在监督学习(即预测建模)中尤其如此。

例如,你不能说神经网络总是比决策树好,反之亦然。有很多因素在起作用,例如数据集的大小和结构。

因此,你应该针对具体问题尝试多种不同算法,并留出一个数据「测试集」来评估性能、选出优胜者。

当然,你尝试的算法必须适合你的问题,也就是选择正确的机器学习任务。打个比方,如果你需要打扫房子,你可能会用吸尘器、扫帚或拖把,但是你不会拿出铲子开始挖土。

大原则

不过也有一个普遍原则,即所有监督机器学习算法预测建模的基础。

机器学习算法被描述为学习一个目标函数 f,该函数将输入变量 X 最好地映射到输出变量 Y:Y = f(X)

这是一个普遍的学习任务,我们可以根据输入变量 X 的新样本对 Y 进行预测。我们不知道函数 f 的样子或形式。如果我们知道的话,我们将会直接使用它,不需要用机器学习算法从数据中学习。

最常见的机器学习算法是学习映射 Y = f(X) 来预测新 X 的 Y。这叫做预测建模或预测分析,我们的目标是尽可能作出最准确的预测。

19个AI热门应用领域,你知道多少?

1. 自然语言生成(Natural Language Generation)

自然语言生成是人工智能的分支,研究如何将数据转化为文本,用于客户服务、报告生成以及市场概述。

2. 语音识别(Speech Recognition)

Siri就是一个典型的例子。
目前,通过语音应答交互系统和移动应用程序对人类语言进行转录的系统已多达数十万。

3. 虚拟助理(Virtual Agents)

虚拟助理是一种能与人类进行交互的计算机代理或程序,其中以聊天机器人最为著名。虚拟助理多用于客户服务和支持,并可以作为智能家居的管理者。

4. 机器学习平台(Machine Learning Platforms)

机器学习是计算机科学和人工智能技术的分支,它能提升计算机的学习能力。