吴恩达的课程笔记
难度排列
- image classification
- classification with localization
- detection(multiple objects)
classification with localization
纯classification 最后一层是 softmax 层。但classification 除了softmax 层之外,还输出一个bounding box(bx,by,bh,bw),分别代表中心、宽高
$y^T$=[pc,bx,by,bh,bw,c1,c2,c3,…,cn]
其中pc代表是否有目标物品,ci代表label
\(L(\hat y,y)=\left \{ \begin{array}{lll}
\sum(\hat y_i-y_i)^2 & if y_1=1\\
(\hat y_1-y_1)^2 & if y_1=0
\end{array}\right.\)
当然你也可以分别用square error(坐标部分)+log-likelyhood error
Landmark Detection
例如:
- 目的:你想让算法识别并输出脸上的各个关键点的位置。做法:把坐标作为y来学习
sliding windows detection
用已经训练好的 CNN 算法扫描图片的每一部分。
缺点是计算量极大。
分析扫描过程发现,其实有很多计算是重复的,那么可以用下面的方法来节省算力:
- FC实际上可以看成一个卷积层。
- 用原本的卷积网络就可以了
看图
注意,原模型的 stride 相当于扫描的 stride
缺点是不能找到精确的位置(精度取决于算法结构中的 stride)
Bounding Box Predictions
YOLO algorithm(you only look once)
Y做成这样:$19198$,其中$19*19$对应原图片上的每个 grid,8对应的是 $y^T$=[pc,bx,by,bh,bw,c1,c2,c3,…,cn]
注意:
- 如果某个物体跨越多个 grid,也只有一个grid 对应的 y 的pc是1.
- 每个grid 的左上是(0,0),右下是(1,1)
- bh,bw也是相对于边界长度的,可以大于1
技巧
- Intersection Over Union(IOU)算法画出的边界,和ground truth 画出的边界,两者的交集除以两者的并集。
- 完全正确,则IOU=1,
- 一般认为0.5以上是“正确”,你也可以用其它阈值。
- Non-max Suppression. 有可能一辆车覆盖很多 grid,然后很多grid 都各自预测出一辆车的位置。Pc是概率,选出一个概率最大的。
- step1 discard all boxes with $p_c\leq 0.6$
- step2 pick the largest $p_c$
- step3 discard any remaining box with IoU$\geq 0.5$with the box output in step2
- step4 back to step2
- Anchor Boxes. 如果某个grid 有多个物体,怎么办?y多倍
R-CNN
- region-CNN:先运行一个 segment algorithm,然后每个区域上做label+bounding box
- Fast R-CNN:先运行一个 segment algorithm,然后每个区域上做label+bounding box,但是用卷积的方法
- Faster R-CNN:用卷积
但是 Faster R-CNN还是比YOLO慢一些