https://antkillerfarm.github.io/

Softmax详解

首先给出Softmax function的定义:

yc=ζ(z)c=ezc∑Cd=1ezd for c=1,…,C

y_c=\zeta(\textbf{z})_c = \dfrac{e^{z_c}}{\sum_{d=1}^C{e^{z_d}}} \text{ for } c=1, \dots, C

从中可以很容易的发现,如果zcz_c的值过大,朴素的直接计算会上溢出或下溢出。

解决办法:

zc←zc−a,a=max{z1,…,zC}

z_c\leftarrow z_c-a,a=\max\{z_1,\dots,z_C\}

证明:

ζ(z-a)c=ezc⋅e−a∑Cd=1ezd⋅e−a=ezc∑Cd=1ezd=ζ(z)c

\zeta(\textbf{z-a})_c = \dfrac{e^{z_c}\cdot e^{-a}}{\sum_{d=1}^C{e^{z_d}\cdot e^{-a}}} = \dfrac{e^{z_c}}{\sum_{d=1}^C{e^{z_d}}} = \zeta(\textbf{z})_c

Softmax的损失函数是cross entropy loss function:

ξ(X,Y)=∑i=1nξ(ti,yi)=−∑i=1n∑i=cCtic⋅log(yic)

\xi(X, Y) = \sum_{i=1}^n \xi(\textbf{t}_i, \textbf{y}_i) = - \sum_{i=1}^n \sum_{i=c}^C t_{ic} \cdot \log(y_{ic})

Softmax的反向传播算法:

∂ξ∂zi=−∑j=1C∂tjlog(yj)∂zi=−∑j=1Ctj∂log(yj)∂zi=−∑j=1Ctj1yj∂yj∂zi=−tiyi∂yi∂zi−∑j≠iCtjyj∂yj∂zi=−tiyiyi(1−yi)−∑j≠iCtjyj(−yjyj)=−ti+tiyi+∑j≠iCtjyi=−ti+∑j=1Ctjyi=−ti+yi∑j=1Ctj=yi−ti

\begin{align} \dfrac{\partial\xi}{\partial z_i} &= - \sum_{j=1}^C \dfrac{\partial t_j \log(y_j)}{\partial z_i} \\ &= - \sum_{j=1}^C t_j \dfrac{\partial \log(y_j)}{\partial z_i} \\ &= - \sum_{j=1}^C t_j \dfrac{1}{y_j} \dfrac{\partial y_j}{\partial z_i} \\ &= - \dfrac{t_i}{y_i} \dfrac{\partial y_i}{\partial z_i} - \sum_{j \neq i}^C \dfrac{t_j}{y_j} \dfrac{\partial y_j}{\partial z_i} \\ &= - \dfrac{t_i}{y_i} y_i(1-y_i) - \sum_{j \neq i}^{C} \dfrac{t_j}{y_j}(-y_jy_j) \\ &= -t_i + t_iy_i + \sum_{j \neq i}^{C} t_jy_i \\ &= -t_i + \sum_{j=1}^C t_jy_i \\ &= -t_i + y_i \sum_{j=1}^C t_j \\ &= y_i - t_i \end{align}

参考:

https://mp.weixin.qq.com/s/2xYgaeLlmmUfxiHCbCa8dQ

softmax函数计算时候为什么要减去一个最大值?

http://shuokay.com/2016/07/20/softmax-loss/

Softmax输出及其反向传播推导

https://mp.weixin.qq.com/s/HTIgKm8HuZZ_-lIQ3nIFhQ

浅入深出之大话SoftMax

目标检测

概述

object detection是计算机视觉的一个重要的分支。类似的分支还有目标分割、目标识别和目标跟踪。

以下摘录自Sensetime CTO曹旭东的解读:

传统方法使用滑动窗口的框架,把一张图分解成几百万个不同位置不同尺度的子窗口,针对每一个窗口使用分类器判断是否包含目标物体。传统方法针对不同的类别的物体,一般会设计不同的特征和分类算法,比如人脸检测的经典算法是Harr特征+Adaboosting分类器;行人检测的经典算法是HOG(histogram of gradients)+Support Vector Machine;一般性物体的检测的话是HOG特征+DPM(deformable part model)的算法

基于深度学习的物体检测的经典算法是RCNN系列:RCNN,fast RCNN(Ross Girshick),faster RCNN(少卿、凯明、孙剑、Ross)。这三个工作的核心思想是分别是:使用更好的CNN模型判断候选区域的类别;复用预计算的sharing feature map加快模型训练和物体检测的速度;进一步使用sharing feature map大幅提高计算候选区域的速度。其实基于深度学习的物体检测也可以看成对海量滑动窗口分类,只是用全卷积的方式。

RCNN系列算法还是将物体检测分为两个步骤。现在还有一些工作是端到端(end-to-end)的物体检测,比如说YOLO(You Only Look Once: Unified, Real-Time Object Detection)和SSD(SSD: Single Shot MultiBox Detector)这样的算法。这两个算法号称和faster RCNN精度相似但速度更快。物体检测正负样本极端非均衡,two-stage cascade可以更好的应对非均衡。端到端学习是否可以超越faster RCNN还需要更多研究实验。

进化史

DPM(2007)->RCNN(2014)->Fast RCNN->Faster RCNN

参考:

http://blog.csdn.net/ttransposition/article/details/12966521

DPM(Deformable Parts Model)–原理

CV实践的难点

从理论上说,无论是传统CV,还是新近崛起的DL CV,其本质都是通过比对目标图片和训练图片的相似度,从而得到识别的结果。

CV的输入一般是由像素组成的矩阵。相比其他领域的数据挖掘而言,CV的实践难点主要包括:

1.视角的改变。照相机的移动会导致像素矩阵发生平移、旋转等变换。

2.光照影响。同一物体在不同光照条件下的影像有所不同。

3.形变。典型的例子是动物的运动,会导致外观的改变。

4.遮挡。待识别物体通常不是完全可见的。

5.背景。雪地、沙滩等不同场景,会影响物体的识别。

6.同类差异。比如各种猫都是猫,但它们的外观有细微的差异。

参考

https://www.zhihu.com/question/34223049

从近两年的CVPR会议来看,目标检测的研究方向是怎么样的?

https://zhuanlan.zhihu.com/p/21533724

对话CVPR2016:目标检测新进展

https://mp.weixin.qq.com/s/r9tXvKIN-eqKW_65yFyOew

谷歌开源TensorFlow Object Detection API

https://mp.weixin.qq.com/s/-PeXMU_gkcT5YnMcLoaKag

CVPR清华大学研究,高效视觉目标检测框架RON

https://mp.weixin.qq.com/s/_cOuhToH8KvZldNfraumSQ

什么促使了候选目标的有效检测?

https://mp.weixin.qq.com/s/LAy1LKGj5HOh_e9jPgvfQw

视觉目标检测和识别之过去,现在及可能

https://mp.weixin.qq.com/s/ZHRP5xnQxex7lQJsCxwblA

深度学习目标检测的主要问题和挑战!

https://mp.weixin.qq.com/s/XbgmLmlt5X4TX5CP59gyoA

目标检测算法精彩集锦

https://mp.weixin.qq.com/s/BgTc1SE2IzNH27OC2P2CFg

CVPR-I

https://mp.weixin.qq.com/s/qMdnp9ZdlYIja2vNEKuRNQ

CVPR—II

https://mp.weixin.qq.com/s/tc1PsIoF1RN1sx_IFPmtWQ

CVPR—III

https://mp.weixin.qq.com/s/bpCn2nREHzazJYq6B9vMHg

目标识别算法的进展

https://mp.weixin.qq.com/s/YzxaS4KQmpbUSnyOwccn4A

基于深度学习的目标检测技术进展与展望

https://mp.weixin.qq.com/s/JPCQqyzR8xIUyAdk_RI5dA

RCNN, Fast-RCNN, Faster-RCNN那些你必须知道的事!

https://www.zhihu.com/question/35887527

如何评价rcnn、fast-rcnn和faster-rcnn这一系列方法?

http://blog.csdn.net/messiran10/article/details/49132053

Caffe matlab之基于Alex network的特征提取

https://mp.weixin.qq.com/s/YovhKYeGGLqSxxSqMNsbKg

基于深度学习的目标检测学习总结

https://mp.weixin.qq.com/s/nGSaQXm8AczYodtmHD1qNA

深度学习目标检测模型全面综述:Faster R-CNN、R-FCN和SSD

https://mp.weixin.qq.com/s/c2oMJfE95I1ciEtvdTlb4A

完全脱离预训练模型的目标检测方法

https://mp.weixin.qq.com/s/NV2hWofOCractLt45-wI1A

山世光:基于深度学习的目标检测技术进展与展望

https://mp.weixin.qq.com/s/zJ3EN175_9num2OknVvnyA

邬书哲:物体检测算法的革新与传承

https://mp.weixin.qq.com/s/1vOdOMyByBacSBMVrscq5Q

黄畅:基于DenesBox的目标检测在自动驾驶中的应用

https://mp.weixin.qq.com/s/6rSeJOqbKyrDj3FpS8J5eg

黄李超讲物体检测

https://mp.weixin.qq.com/s/JjsAnB_OxKS1Af9XAtw5sA

一文带你读懂深度学习框架下的目标检测

https://mp.weixin.qq.com/s/dcrBQ-t3tLOTouEyofOBxg

间谍卫星:利用卷积神经网络对卫星影像进行多尺度目标检测

https://mp.weixin.qq.com/s/66yXsRIeZdHfoZkJkci24w

地平线黄李超开讲:深度学习和物体检测!

https://mp.weixin.qq.com/s/x0r-2J_YdYgIQlRDqvGofg

CVPR 2017论文解读:用于单目图像车辆3D检测的多任务网络

http://blog.csdn.net/zhang11wu4/article/details/53967688

目标检测最新方法介绍

https://mp.weixin.qq.com/s/RNHgm1GW79iXVe2tit6IyA

旷视&清华大学提出新型两步检测器Light-Head R-CNN

https://mp.weixin.qq.com/s/6cUP9vvfcuv8rIEnGnAFiA

NCSU&阿里巴巴论文:可解释的R-CNN

https://mp.weixin.qq.com/s/ZrZtGBxVOZmexDMw_S_Orw

TensorFlow深度学习目标检测模型及源码架构解析

https://mp.weixin.qq.com/s/HPzQST8cq5lBhU3wnz7-cg

R-FCN每秒30帧实时检测3000类物体,马里兰大学Larry Davis组最新目标检测工作

https://mp.weixin.qq.com/s/u3eXhoFvo7vZujc0XoQQWQ

旷视研究院解读Light-Head R-CNN:平衡精准度和速度

RCNN

《深度学习(五)》中提到的AlexNet、VGG、GoogleNet主要用于图片分类。而这里介绍的RCNN(Regions with CNN)主要用于目标检测。

车牌识别的另一种思路

在介绍RCNN之前,我首先介绍一下2013年的一个车牌识别项目的解决思路。

车牌识别差不多是深度学习应用到CV领域之前,CV领域少数几个达到实用价值的应用之一。国内在2010~2015年前后,有许多公司都做过类似的项目。其产品更是随处可见,很多停车场已经利用该技术,自动识别车辆信息。

车牌识别的难度不高——无论是目标字符集,还是目标字体,都很有限。但也有它的技术难点:

1.计算资源有限。通常就是PC,甚至嵌入式设备,不可能用大规模集群来计算。

2.有实时性的要求,通常处理时间不超过3s。

因此,如何快速的在图片中找到车牌所在区域,就成为了关键问题。

常规的做法,通常是根据颜色、形状找到车牌所在区域,但鲁棒性不佳。后来,同事L提出了改进方法:

Step 1:在整个图片中,基于haar算子,寻找疑似数字的区域。

Step 2:将数字聚集的区域设定为疑似车牌所在区域。

Step 3:投入更大运算量,以识别车牌上的文字。(这一步是常规做法。)

RCNN的基本原理

RCNN是Ross Girshick于2014年提出的深度模型。

注:Ross Girshick(网名:rbg),芝加哥大学博士(2012),Facebook研究员。他和何恺明被誉为CV界深度学习的双子新星
个人主页:
http://www.rossgirshick.info/

论文:

《Rich feature hierarchies for accurate object detection and semantic segmentation》

代码:

https://github.com/rbgirshick/rcnn

RCNN相对传统方法的改进:

速度:经典的目标检测算法使用滑动窗法依次判断所有可能的区域。RCNN则(采用Selective Search方法)预先提取一系列较可能是物体的候选区域,之后仅在这些候选区域上(采用CNN)提取特征,进行判断。

训练集:经典的目标检测算法在区域中提取人工设定的特征。RCNN则采用深度网络进行特征提取。

使用两个数据库:

一个较大的识别库(ImageNet ILSVC 2012):标定每张图片中物体的类别。一千万图像,1000类。

一个较小的检测库(PASCAL VOC 2007):标定每张图片中,物体的类别和位置,一万图像,20类。

RCNN使用识别库进行预训练得到CNN(有监督预训练),而后用检测库调优参数,最后在检测库上评测。

这实际上就是《深度学习(九)》中提到的fine-tuning的思想。

深度学习(十四)——Softmax详解, 目标检测, RCNN相关推荐

  1. 无人驾驶汽车系统入门(二十六)——基于深度学习的实时激光雷达点云目标检测及ROS实现

    无人驾驶汽车系统入门(二十六)--基于深度学习的实时激光雷达点云目标检测及ROS实现 在前两篇文章中,我们使用PCL实现了在点云中对地面的过滤和点云的分割聚类,通常来说,在这两步以后我们将对分割出来的 ...

  2. 深度学习网络模型——RepVGG网络详解、RepVGG网络训练花分类数据集整体项目实现

    深度学习网络模型--RepVGG网络详解.RepVGG网络训练花分类数据集整体项目实现 0 前言 1 RepVGG Block详解 2 结构重参数化 2.1 融合Conv2d和BN 2.2 Conv2 ...

  3. 深度学习网络模型——Vision Transformer详解 VIT详解

    深度学习网络模型--Vision Transformer详解 VIT详解 通用深度学习网络效果改进调参训练公司自己的数据集,训练步骤记录: 代码实现version-Transformer网络各个流程, ...

  4. 机器学习,深度学习基础算法原理详解(图的搜索、交叉验证、PAC框架、VC-维(持续更新))

    机器学习,深度学习基础算法原理详解(图的搜索.交叉验证.PAC框架.VC-维.支持向量机.核方法(持续更新)) 机器学习,深度学习基础算法原理详解(数据结构部分(持续更新)) 文章目录 1. 图的搜索 ...

  5. 深度学习 + OpenCV,Python实现实时视频目标检测

    选自PyimageSearch 机器之心编译 参与:路雪.李泽南 使用 OpenCV 和 Python 对实时视频流进行深度学习目标检测是非常简单的,我们只需要组合一些合适的代码,接入实时视频,随后加 ...

  6. 万字长文详解目标检测算法,超大超全(2022最新)

    摘要 1 概述 2 目标检测回顾 2.1 two-stage 2.2 one-stage 3 目标检测配方 3.1 基础概念 3.1.1 损失函数 3.1.2 Anchor-based 和 Keypo ...

  7. 系统学习NLP(二十四)--详解Transformer (Attention Is All You Need)

    转自:https://zhuanlan.zhihu.com/p/48508221 推荐:http://jalammar.github.io/illustrated-transformer/ 前言 注意 ...

  8. 三维深度学习之pointnet系列详解(一)

    目前二维深度学习取得了很大的进步并且应用范围越来越广,随着三维设备的发展,三维深度学习得到了很大的关注. 最近接触了三维深度学习方面的研究,从pointnet入手,对此有了一点点了解希望记录下来并分享 ...

  9. 【深度学习】Batch Normalization详解

    Batch Normalization 学习笔记 原文地址:http://blog.csdn.net/hjimce/article/details/50866313 作者:hjimce 一.背景意义 ...

最新文章

  1. 【Android游戏开发之七】(游戏开发中需要的样式)再次剖析游戏开发中对SurfaceView中添加组件方案!...
  2. 确保***测试计划成功的10个秘诀(语录)
  3. static,构造器,执行顺序
  4. Vim 多行剪切、复制和删除
  5. VisualStudio VC redist各版本下载链接
  6. F2FS源码分析-3.1 [F2FS 文件创建和删除部分] 一般文件的创建
  7. 通过 Kali Linux 暴力破解 WiFi
  8. java cropper 上传_基于cropper.js的图片上传和裁剪
  9. 如何禁止更改IE的代理服务器设置(转)
  10. JQuery学习之路Part8:家族树操作(查找祖先、后代、兄弟同胞、绝对查找)【完结】
  11. 人工智能 deepface 换脸技术 学习
  12. Nagios学习笔记
  13. python制作英汉词典_Python基于有道实现英汉字典功能
  14. C#语言实例源码系列-虚拟键盘
  15. 盘盘,这几个特殊的IP地址
  16. 多线程并发或线程安全问题如何解决?
  17. 整理:图片文件管理工具类---ImageUtil
  18. MOS管应用之外接电源和电池供电的双电源自动切换电路
  19. 为什么view的setOnClickListener引用Activity不会内存泄漏
  20. C#找到最小的整数X,同时满足:X是2019的整倍数,X的每一位数字是奇数

热门文章

  1. [原创].NET 业务框架开发实战之九 Mapping属性原理和验证规则的实现策略
  2. XCTF-MISC-新手区-gif
  3. 能玩java游戏oppo按键手机_游戏手机排行榜|OPPO Reno果然不负期待
  4. echarts如何获取后端的值_散户必读:当你中线看好一只股票后,该如何操作才能获取最大利润...
  5. 切换node版本 nvm 的基本使用 -- 以及安装公司特有的镜像源
  6. 对程序员非常重要的24个软技能
  7. Echarts API说明文档
  8. vue页面引入多个组件的方法
  9. 实验3 分支语句和循环语句(1)
  10. Arduino使用HC05蓝牙模块与手机连接(转载)