Stanford's CS231n Lecture 11: Detection and Segmentation 笔记

0. 主要内容




1. Semantic Segmentation

我们定义一系系列 label,比如天空,树木,猫,牛。然后对于输入图片的每个像素,输出一个预测的label值。

实现方式1: Fully Convolutional


但是对于高分辨率的图片 这样的过程是非常耗时的,于是我们进行了改进。

实现方式1 改:
这里我们用了downsampling 和 upsampling 来降低所需要处理的像素。
downsampling我们可以用pooling,strided convolution 来实现。
对于upsampling,这里介绍了两种方法:


nearest neighbor 和 bed of nails (钉板)
在具体场景中,如果我们用bed of nails 来upsampling的话,不会像上图那样选取左上角来给值,而是根据在downsampling的时候取的那个像素位置来对应的还原。


2. Classification + Localization
例子1: 分类并定位图中的猫
输入一张图,输出一个矩形框的坐标。(x,y,w,h)

例子2: 姿势预测
我们可以用14个点来表示人体主要关节,于是我们只要在一个图片里识别出来这14个点,就大概确定了人的姿势。所以这里输入是一张图,输出是14个坐标。
tip: 这里的loss function 用的是regression loss。
在loss function的选择上,classification 和 regression 问题选用的有点差别
如果我们要的是一个类别输出,比如对几个类别的分类问题,这时候用的比较多的就是:cross entropy loss, softmax loss, SVM margin type loss 
但是如果我们要的是一些连续的值,比如这里的点位,那么loss function 用L1, L2 距离比较合适。

3. Object Detection
这里和Classification问题的区别在于物体的数量。

3.1 CNN family
比较朴素的想法是滑窗,然后对选定的区域做分类/定位,比如用CNN。
然而这样有个问题在于如何选取滑窗呢? 在这个问题情景下,物体的数量,大小,位置都是不固定的。在选取滑窗的时候没有依据。

3.1.1 改进版: R-CNN (Region CNN):我们先对于给定的输入图片先采用 Region Proposals 算法,这个算法并不是深度学习的算法,而是一个计算机视觉的传统的算法。它可以给出大概2000个区域,高准确率,但是也高召回率。对于给出的这些区域,我们在这个基础上使用CNN。

R-CNN的性能问题:

3.1.2 进一步的改进版: Fast R-CNN
在把Region Proposals 算法运用到原图之前,我们先对原图做一步ConvNet,把原图映射到feature map,从而实现降维。并且再拿到ROI之后也对他们做一个pooling,来降低ROI的维度。这里用的是ROI pooling(不同于 max pooling)

虽然Fast R-CNN对于R-CNN有着性能提升,然而这里的算法瓶颈在于Region Proposal算法。

3.1.3 再进一步的改进:Faster R-CNN
我们不再用传统的Region Proposal算法,而是使用深度学习的方式来产生regions。由于这里的细节非常hairy,视频里小哥没有说原理。(喵喵喵 ???)


3.2.1 YOLO/SSD
YOLO: You Only Look at Once
SSD: Single Shot Detection
没有比较笼统,算法实现要具体看paper去理解了

3.3.1 Object Detection里面还有一个应用就是Dense Captioning



4. Instance Segmentation
一个实现方式:Mask R-CNN
这个算法的前半部分获取ROI和fast,faster R-CNN一样,但是后面有差异。
算法表现很棒


Mask R-CNN同样可以用于pose estimation,适用于图片里超过一个人的情景。

Comments

Post a Comment

Popular posts from this blog

Malware Report: iauzzy.exe

Malware Report: withme.exe

根因分析之iDice 文章复现