CVPR2018精选#2: 视频分析的非局部(non-local) 神经网络模块,CMU与Facebook AI研究室视频分类识别新贡献

拥有什么,决定了你只能迷恋什么 — David 9

很大程度上,目前的芯片工艺和技术,决定了人类只能迷恋神经网络这样的方案(高于传统机器学习一个计算级别)。就像进入铁器时代,人们才能方便地砍伐森林、挖掘矿山、开垦土地(如果在青铜时代就别想了)。

在铁器时代,对铁器的改进很受欢迎;正如今年CVPR上大神Kaiming HeXiaolong Wang 的文章试图改进神经网络工具去“开垦”视频分析 这片土地。

我们知道视频图片的区别无非是多了时间的维度(time,视频的帧)。最直觉的做法是先用cnn,再用擅长时间序列的rnn;或者,直接用3D卷积去做。而实际情况是直接用3D卷积效果不是最好,于是有人用两个cnn去做(一个cnn分析时间,一个cnn分析空间),或者另外用一个分析轨迹(trajectories)的模块去加强时空感

非局部(non-local) 模块把非局部感受野的信息提取操作做成一个神经网络模块,方便了端到端的视频分析:

一个可以插入神经网络的non-local模块

这个模块输入x可以理解为32帧的视频(32张图片帧数 T=32,长宽为H×W),输出z也是H×W大小的特征图。有没有注意到最左端的箭头是一个跳层连接?没错,non-local模块就是把视频额外的时空信息提取作为一个残差操作,这样整个模块可以任意插入到一个残差网络resnet中: 继续阅读CVPR2018精选#2: 视频分析的非局部(non-local) 神经网络模块,CMU与Facebook AI研究室视频分类识别新贡献

David9的普及贴:机器视觉中的平均精度(AP), 平均精度均值(mAP), 召回率(Recall), 精确率(Precision), TP,TN,FP,FN

召回率和准确率就像你去赌场要同时带着“票子”和“运气” — David 9

在机器学习面试中,经常会问道“召回率”“准确率”的区别 。 其实,就像你去赌场下注一样,如果你“票子”很多,可以把钱分摊在不同的赌注上,总有一个赌注会猜对,当你猜对了,就是一次“召回”了; 而“准确率”不关注你下多少注,好似你在赌场碰“运气”,下注越多,越能看出你今天的“运气”。

因此,你猜的次数越多自然有较大的召回,当然最好的情况是,你猜测很少次数就能召回所有。

计算召回率(Recall) 和 精确率(Precision) 时,人们一般会先搬出TP(True positive),TN(True negative),FP(False positive),FN(False negative )的概念:

                     Condition: A        Not A

  Test says “A”      True positive   |   False positive
                     ----------------------------------
  Test says “Not A”  False negative  |    True negative

然后给出公式:

召回率 Recall = TP / (TP + FN)

准确率 Precision = TP / (TP + FP)

事实上,不用硬背公式。两者的抽样方式就很不同: 召回率的抽样是每次取同一标签中的一个样本,如果预测正确就计一分;准确率的抽样是每次取你已预测为同一类别的一个样本,如果预测正确就计一分。这里一个关键点是:召回率是从数据集的同一标签的样本抽样;而准确率是从已经预测为同一类别的样本抽样。召回率和准确率都可以只针对一个类别。 继续阅读David9的普及贴:机器视觉中的平均精度(AP), 平均精度均值(mAP), 召回率(Recall), 精确率(Precision), TP,TN,FP,FN

CVPR2018精选#1: 无监督且多态的图片样式转换技术,康奈尔大学与英伟达新作MUNIT及其源码

所谓无监督学习,只是人类加入了约束和先验逻辑的无监督 — David 9

更新:有同学发现这篇文章可能并没有在CVPR2018最终录取名单(只是投稿),最终录取名单参考可以看下面链接:

https://github.com/amusi/daily-paper-computer-vision/blob/master/2018/cvpr2018-paper-list.csv

最近图片生成领域正刮着一股“无监督”之风,David 9今天讲Cornell大学与英伟达的新作,正是使无监督可以生成“多态”图片的技术,论文名:Multimodal Unsupervised Image-to-Image Translation (MUNIT)。

这股“无监督”之风的刮起,只是因为我们发现用GAN结合一些人为约束和先验逻辑,训练时无需监督图片配对,直接在domain1domain2中随机抽一些图片训练,即可得到样式转换模型。这些约束和先验有许多做法,可以迫使样式转换模型(从domain1到domain2)保留domain1的一些语义特征;也可以像CycleGAN的循环一致约束,如果一张图片x从domain1转换到domain2变为y,那么把y再从domain2转换回domain1变为x2时,x应该和x2非常相似和一致:

来自CycleGAN:https://arxiv.org/pdf/1703.10593.pdf

而这些无监督方法有一个缺陷:不能生成多样(多态)的图片MUNIT正是为了解决这一问题提出的,因为目前类似BicycleGAN的多态图片生成方法都需要配对监督学习。

MUNIT为此做了一些约束和假设,如,假设图片有两部分信息:内容c样式s,另外,图片样式转换时domain1和domain2是共享内容c的信息空间的:

MUNIT的自编码器

生成图片时,把同一个内容c和不同样式s组合并编码输出,就可生成多态的图片:

来自:https://arxiv.org/pdf/1804.04732.pdf

实际训练时,我们需要两个自编码器,分别对应domain1和domain2: 继续阅读CVPR2018精选#1: 无监督且多态的图片样式转换技术,康奈尔大学与英伟达新作MUNIT及其源码

“图片风格转换”又出新作,英伟达CVPR论文:高效图片风格转换与解析闭合解

如果性能遇到了瓶颈,“老套”的办法总能帮我们搞定一些事情 — David 9

深度卷积网络 广泛应用以来,我们更像进入了一个“伪智能”时代。深度网络的“创造”更多的是基于“巨量数据”的“创造”。以图片风格转换为例,无论是我们以前说的GAN还是其他变形CNN,都需要标注样本达到一定量,才能生成比较好的风格转换图(附带着冗长的训练时间 和其他模型调优技巧):

英伟达前不久放出的CVPR新论文,一定程度上证明了在这个“伪智能”时代,只用深度网络是不够的,往往加入一些“老套”的算法可以帮你得到一些“漂亮”的结果:

来自:https://arxiv.org/pdf/1802.06474.pdf

上图是给定一张原始图片(a)和一张“黑夜”风格图片(b),我们希望把(a)的风格转换成(b)的结果。

可见(c)与(d)的结果都没有英伟达声称的方法(e)看起来自然。

英伟达这篇论文的一大半贡献不在深度网络,

而是如何把传统的WCT白化和调色转换:whitening and coloring transforms)应用到深度网络中,以及图片平滑的后处理工作。

整体框架如下:

来自:https://arxiv.org/pdf/1802.06474.pdf 继续阅读“图片风格转换”又出新作,英伟达CVPR论文:高效图片风格转换与解析闭合解

理解Hinton胶囊网络之精华浓缩版,第一部分: 胶囊网络背后的灵感与初衷(Capsule Networks)

David 9 一直想扒一扒Hinton的胶囊网络,老教授两篇论文有些晦涩,但今天发现AI³普及帖不错,只是略显冗长。。所以,精华浓缩版就呼之欲出了O(∩_∩)O~

深度CNN是Hinton老教授10年前就在重点研究的课题,胶囊网络也是Hinton早已思考的内容,所以,

第一:胶囊网络不是空穴来风的新算法,而是基于CNN的缺陷和新需求的改进。

第二,胶囊网络比CNN好在哪里??

首先,CNN牛X之处在于用类似蛮力的海量数据方式,自动把重要的分类特征找到,所以,无论图像是不是完整,我们都有理由相信CNN能够识别图中有没有“米老鼠”这个对象:

不完整的米老鼠拼图
完整的米老鼠拼图

只要CNN看到有象征米老鼠的“耳朵”和“鼻子”, CNN就认定这张图中有“米老鼠”。(哪怕拼图还没完成继续阅读理解Hinton胶囊网络之精华浓缩版,第一部分: 胶囊网络背后的灵感与初衷(Capsule Networks)

理解Hinton胶囊网络之精华浓缩版,第二部分: 胶囊网络是如何工作的?(Capsule Networks)

胶囊网络精华浓缩版第一部分中,我们就吐槽过Max pooling的一堆缺陷:

  • 虽然最大池化层可帮助辨别图像中元素的位置关系,但是有太多信息丢失(pooling操作“粗暴地”把局部相邻像素点集压缩成一个像素点)
  • 缺乏空间分层和空间推理能力,缺乏“举一反三”的能力
Max pooling图示

当我们深入看胶囊网络的工作方式,我们会感觉胶囊网络就是为改进Max Pooling而生的:

来自: https://arxiv.org/pdf/1710.09829.pdf

上图胶囊网络整体架构中,卷积层Conv1输出后,跟的不再是Max Pooling层, 而是主胶囊层(PrimaryCaps layer)数据胶囊层(DigitCaps layer)

这些胶囊层到底是如何工作的?我们先从胶囊层和一般的全连接层入手。

一般的全连接层是这样工作的:

来自:https://medium.com/ai%C2%B3-theory-practice-business/understanding-hintons-capsule-networks-part-ii-how-capsules-work-153b6ade9f66

对于上一层Max Pooling输出的所有标量(x1, x2, x3)与权重(w1,w2,w3)做卷积求和操作。最后,使用非线性激活函数 f(•)输出预测值hj 继续阅读理解Hinton胶囊网络之精华浓缩版,第二部分: 胶囊网络是如何工作的?(Capsule Networks)

做机器学习,再别把IoU,ROI 和 ROC,AUC 搞混了 !聊聊目标检测,医疗领域的那些评价函数

涉及领域不多的机器学习爱好者经常会把IoU,ROI 和 ROC,AUC 这样的评价函数(Metric functions)搞混。其实记住它们也没那么难,David 9今天就来帮大家理一理:

1. IoU (Intersection over Union),交集并集比

2. ROI (region of interest) , 感兴趣区域

3. ROC (Receiver Operating Characteristic curve) 受试者工作特征曲线

4. AUC (Area Under the Curve) , 曲线下区域

首先要区分,前两个目标检测领域的术语;后两个是从医疗领域引进的,但是所有机器学习准确率都可能用到该指标。

最容易理解的是第2个ROI,我们做任何目标检测在准备数据集时都要选择感兴趣区域, 我们之前的文章也提到过

labelImg 就是一个不错的标注工具。帮助你选择目标检测的感兴趣框。是的这不是一个评价函数,是一个概念而已。 继续阅读做机器学习,再别把IoU,ROI 和 ROC,AUC 搞混了 !聊聊目标检测,医疗领域的那些评价函数