[paper reading] SSD

GitHub:Notes of Classic Detection Papers

本来想放到GitHub的,结果GitHub不支持公式。
没办法只能放到CSDN,但是格式也有些乱
强烈建议去GitHub上下载源文件,来阅读学习!!!这样阅读体验才是最好的
当然,如果有用,希望能给个star

topic motivation technique key element use yourself math
SSD Problem to Solve
Contributions
SSD Architecture
Pros & Cons
Higher Speed
What Is Resample
Low & High Level Feature
Small Object Difficulties
Data Flow
Anchor & GtBox Matching
Foreground & Background
Hard Negative Mining
NMS
Data Augmentation
Testing (Inferencing) Step
Performance Analysis
Model Analysis
Convolution For Speed
Feature Pyramids Fashion
Positive & Negative Imbalance
Zoom In & Zoom Out
Loss Function
Multi-Level & Anchor
Layer Output & Filters
Model Output

文章目录

  • [paper reading] SSD
    • Motivation
      • Problem to Solve
      • Contributions
    • Technique
      • SSD Architecture
        • Framework Architecture
        • Modifications of Backbone
      • Pros & Cons
        • Pros
        • Cons
          • 小目标检测困难
          • default box 严重依赖手工设计
    • Key Element
      • Higher Speed
        • Structure
        • Input Image
      • What Is Resample
      • Low & High Level Feature
        • low-level feature map
        • high-level feature map
      • Small Object Difficulties
      • Data Flow
      • Anchor & GtBox Matching
      • Foreground & Background
      • Hard Negative Mining
      • NMS
      • Data Augmentation
        • 随机裁剪 random crop
        • 水平翻转 horizontal flip
        • 颜色扭曲 color distortion
        • Zoom In & Zoom Out
      • Testing (Inferencing) Step
      • Performance Analysis
        • Recall & Error Type
        • Bbox Size & Ratios
      • Model Analysis
    • Use Yourself
      • Convolution For Speed
      • Feature Pyramids Fashion
      • Positive & Negative Imbalance
      • Zoom In & Zoom Out
    • Math
      • Loss Function
      • Multi-Level & Anchor
        • Feature Map
        • Anchor Scale
        • Anchor Ratios
      • Layer Output & Filters
      • Model Output
    • Blogs

Motivation

Problem to Solve

one-stage方法具有较高的测试速度,但准确率低

SSD在使用one-stage的框架下,提高了其准确率

one-stage方法准确率低的原因(YOLO):

  • 对小目标检测乏力

    feature pyramid第一层是backbone的输出,已经是低分辨率+强语义的feature map了后续基于此再产生的feature pyramid分辨率会进一步下跌

    导致没有高分辨率的feature map用于检测小目标(暂且不说语义的强弱)

    为解决这个问题,后续的 [RetinaNet](./[paper reading] RetinaNet.md) 从low-level(high-resolution)的feature map上构建feature pyramid,从而产生了高分辨率+强语义的feature pyramid

  • 会出现更多的Localization错误 ==> 重新使用anchor

Contributions

  1. SSD的表现

    速度快于YOLO,精度逼平Faster-RCNN

  2. SSD的核心

    使用卷积核 (层) 输出预测

    通过在feature map上使用small convolutional filter,去预测anchorcategory score、box offset

  3. multi-scale和multi-ratio

    • multi-scale:不同scale的feature map ==> Feature Pyramids Fashion
    • multi-ratios:不同ratio的anchor ==> 手工设计anchor的尺寸

Technique

SSD Architecture

Framework Architecture

关于数据流,详见 [Data Flow](#Data Flow)

Modifications of Backbone

使用VGG16作为Backbone(属于隐性的grid划分)

之后的backbone多为ResNet了

其对于Backbone进行了以下的修改(主要分为2部分:全连接层变为卷积层dilation卷积

  • FC 6 ==> 3×3 Conv 6,dilation rate = 6

  • FC 7 ==> 1×1 Conv7

  • conv4_3L2 Normalization

    该层特征图大小是 38×3838×3838×38,但是该层比较靠前,norm较大,所以在其后面增加了一个 L2 Normalization 层,以保证和后面的检测层差异不是很大

    L2 Normalization 仅仅是对每个像素点channle维度做归一化

  • 移除 dropout 层和 FC 8

  • Pool 5 : 2×2−s22×2-s22×2−s2 ==> 3×3−s13×3-s13×3−s1

Pros & Cons

Pros

详见 [Performance Analysis](#Performance Analysis)

  • 高正确率 + 高召回率

    • confidence高的检测结果都是大部分都是正确的

    • recall 达到了85~90%

      recall表示有多少目标被检测到,一般以IOU阈值来判断(上图中实线为IOU>0.5,虚线为IOU>0.1)

  • 更少的 localization error

    • 相比于two-stage:

      直接回归object的shape和category(而不是使用两个步骤)

    • 相比于one-stage:

      使用了精细设计的anchor / default box,为bounding box的scale和ratios提供了基准(相比于YOLOv1)

  • 在大目标上表现良好

Cons

小目标检测困难
  • 对于不同的类别共享空间位置(convolutional fashion)

  • 小目标对于bounding box的size十分敏感(而小目标bbox对误差敏感)

  • location和semantic难以兼顾

    SSD 直接在backbone的low-resolution+strong semantic的feature map上构建Feature Pyramid,导致整个Feature Pyramid都是low-resolution(缺少位置信息)

default box 严重依赖手工设计

需要人工设置prior box的min_size,max_size和aspect_ratio值。

网络中prior box的基础大小和形状不能直接通过学习获得,而是需要手工设置。

而网络中每一层feature使用的prior box大小和形状恰好都不一样,导致调试过程非常依赖经验。

Key Element

Higher Speed

Structure

  • 相比于 Two-Stage

    • 不使用proposal(RPN)
    • 不使用resample(ROI Pooling)
  • 相比于 One-Stage

    ==> 全卷积网络 ==> 参数量大大减少(而且GPU支持较好)

    • Backbone

      VGG的FC层都被换成了Conv层

    • Output

      YOLO使用FC层计算输出,SSD使用Conv层计算输出

Input Image

==> 输入小图片 ==> 运算量大幅减少

YOLO是448×448,而SSD是300×300 ==> 图片小了所需的运算就少了

What Is Resample

resample其实是根据proposal进行feature的重采样,首先见于 Faster-RCNN

是在RPN获得proposal之后,返回去从feature map获取相应特征

这种方法同时顾及了location和semantic,在小目标上检测良好,但模型复杂且费时间

Low & High Level Feature

SSD整个的Feature Pyramid都是high-level的feature mapFeature Pyramid中并不存在low-level的feature map

这一点需要额外注意

low-level feature map

优点:

  • 保留有空间信息
  • 细节信息丰富

缺点:

  • 语义信息较少,不适合直接用于后续操作(比如分类)

    ==> 这导致SSD在检测小目标上依旧乏力虽然保留的位置信息,但是语义信息不够丰富

high-level feature map

优点:

  • 语义信息丰富,一般可直接用于后续操作(比如分类)

缺点:

  • 大幅度丢失了位置信息和细节信息

    丢失位置信息 ==> 定位不准

    丢失细节信息 ==> 小目标不易检测

Feature Pyramid Network 的架构可以产生高分辨率、强语义的feature map

详见 [RetinaNet](./[paper reading] RetinaNet.md)

Small Object Difficulties

小目标检测是一个老大难的问题

Faster-RCNN 使用的resample的策略,同时保证了location和semantic,但是模型复杂且时间消耗大

SSD 作为one-stage方法,放弃了resample的策略,而是采用多个level的feature map,但是由于feature map的选取问题,导致整个Feature Pyramid并没有包含low-level的feature map(详见 [Low & High Level Feature](#Low & High Level Feature))

Data Flow

多level信息的聚合是发生在输出阶段(不是像DenseNet发生在feature map阶段)

Anchor & GtBox Matching

ground-truth boxanchor 的匹配关系是一对多的关系,即:一个ground-truth至少会匹配到一个anchor

相比于ground-truth & anchor 1对1的匹配,一对多这样的目的有两个:

  • 尽可能提高recall
  • 一定程度上增加正样本数量,缓解正负样本的不平衡

其匹配准则有两个:

  • Max IOU

    ground-truth box会与最大IOU的anchor匹配 ==> 保证1对1匹配

  • Threshold IOU

    ground-truth box会与 IOU超过Threshold(0.5)的anchor匹配

Foreground & Background

Background作为Foreground类别之一

这会导致分类任务中极端的正负样本不平衡,SSD 使用 [Hard Negative Mining](#Hard Negative Mining) 缓解这个问题

Faster-RCNN 先区分Background和Foreground(region proposal),之后再foreground分类

YOLOv1通过confidence区分background和foreground(confidence=Pr(object)∗IOUpredtruth\text{confidence} = \text{Pr}(\text{object})*\text{IOU}_{pred}^{truth}confidence=Pr(object)∗IOUpredtruth​),同时对才foreground进行分类。最后使用confidence矫正foreground的分类结果(滤除 False Negative

Hard Negative Mining

目的:维持正/负样本(foreground/background)正常的比例

负样本confidence loss 降序排列,取 confidence loss 最高的负样本(即 Hard Negative

换句话说,是抛弃了容易分类的background,以避免其overwhelming分类的loss

后续的 Focal Loss 以一种更优雅、更灵活的方法解决了这个问题

NMS

NMS 作为得到bounding box和score之后的 post-processing

详见 [YOLO v1](./[paper reading] YOLO v1.md)

Data Augmentation

detection中常用的有以下几种:

  • 水平翻转(horizontal flip)
  • 随机裁剪(random crop)
  • 颜色扭曲(color distortion)
  • 随机采集块域(Randomly sample a patch)==> 获取小目标训练样本

随机裁剪 random crop

  • 整个的原始输入图像
  • 与object的IOU为 [0.1,0.3,0.5,0.7,0.9][0.1, 0.3, 0.5, 0.7, 0.9][0.1,0.3,0.5,0.7,0.9] 的patch
  • 随机采样patch

采样patch的尺寸为原图的 [0.1,1][0.1, 1][0.1,1],aspect ratios 为 12,2\frac12, 221​,2

水平翻转 horizontal flip

对每个采样到的patch:

  1. 首先resize到固定尺寸
  2. 以0.5的概率水平翻转

颜色扭曲 color distortion

Some Improvements on Deep Convolutional Neural Network Based Image Classification

Zoom In & Zoom Out

  • Zoom in (Random Crop) ==> large object

    The random crops generated by the strategy can be thought of as a ”zoom in” operation and can generate many larger training examples.

  • Zoom out ==> small object

    1. 将原图像放在 16×16×16× 的画布的随机位置
    2. 其他位置使用均值填充
    3. random crop

    Zoom Out 产生大量小目标,对提高小目标检测性能有显著提升:

    其原因是小目标数量少,导致小目标对应的anchor难以训练(类似于分类时正负样本不平衡对正样本训练的影响)

    Zoom Out 的方法产生了大量的小样本,提升了小样本在数据集中的比重,从而提高了小样本的检测性能

    Data augmentation,翻来覆去的randomly crop,保证每一个prior box都获得充分训练而已

Testing (Inferencing) Step

  • 对于每个预测框,首先根据类别置信度确定其类别(置信度最大者)与置信度值
  • 过滤掉属于背景的预测框
  • 然后根据置信度阈值(如0.5)过滤掉阈值较低的预测框
  • 对于留下的预测框进行解码,根据先验框得到其真实的位置参数(解码后一般还需要做clip,防止预测框位置超出图片)
  • 根据置信度进行降序排列,然后仅保留top-k(如400)个预测框
  • NMS算法,过滤掉那些重叠度较大的预测框

最后剩余的预测框就是检测结果了。

Performance Analysis

Recall & Error Type

Bbox Size & Ratios

Model Analysis

  • 数据增强可以大幅度提高mAP

  • box的形状越多越好

  • 多个不同空间分辨率的输出显著提高性能

Use Yourself

Convolution For Speed

理论上卷积层的输出结果可以替代全连接层,但卷积层的运算量和参数量相比于全连接层少很多

小改动有大收益

实际上网络中可以不再出现全连接层

Feature Pyramids Fashion

检测任务天然会面对multi-scale和multi-ratios的困难

使用多个level的feature map是解决multi-scale方法的直觉思路

但单独使用每个level的feature map都会有不足

如何整合多了level的feature map是一个重要的问题

Positive & Negative Imbalance

正负样本不平衡的产生原因是:将background作为foreground的一个类

这会导致分类的损失函数被负样本主导(因为缺少了two-stage方法在stage-1对负样本的过滤)

其解决方法大概有3个:

  • Hard Negative Mining
  • Focal Loss
  • Online Hard Example Mining

Zoom In & Zoom Out

zoom in / zoom out 可扩增大目标 / 小目标的数量

尤其是 zoom out,可以获得大量的小样本,在一定程度上结局了小目标的anchor的训练难题

这对于小目标的增益十分明显

Math

Loss Function

L(x,c,l,g)=1N(Lconf⁡(x,c)+αLloc⁡(x,l,g))L(x, c, l, g)=\frac{1}{N}\left(L_{\operatorname{conf}}(x, c)+\alpha L_{\operatorname{loc}}(x, l, g)\right) L(x,c,l,g)=N1​(Lconf​(x,c)+αLloc​(x,l,g))

  • NNN:匹配到ground-truth box的anchor数目

  • xijp=1,0x_{ij}^p={1,0}xijp​=1,0:表示第 iii 个anchor是否匹配到类别为 ppp 的第 jjj 个ground-truth box

    当 xijp=1x_{ij}^p=1xijp​=1 时,表示第 iii 个anchor匹配到第 jjj 个ground-truth box,ground-truth类别为 ppp

这依旧是一个 Multi-Task 的损失函数:

  • Confidence Loss
    1NLconf⁡(x,c)\frac{1}{N} L_{\operatorname{conf}}(x, c) N1​Lconf​(x,c)
    Lconf⁡(x,c)L_{\operatorname{conf}}(x, c)Lconf​(x,c) :
    Lconf(x,c)=−∑i∈PosNxijplog⁡(c^ip)−∑i∈Neglog⁡(c^i0)where c^ip=exp⁡(cip)∑pexp⁡(cip)L_{\text {conf}}(x, c)=-\sum_{i \in \text {Pos}}^{N} x_{i j}^{p} \log \left(\hat{c}_{i}^{p}\right)-\sum_{i \in \text {Neg}} \log \left(\hat{c}_{i}^{0}\right) \quad \text { where } \quad \hat{c}_{i}^{p}=\frac{\exp \left(c_{i}^{p}\right)}{\sum_{p} \exp \left(c_{i}^{p}\right)} Lconf​(x,c)=−i∈Pos∑N​xijp​log(c^ip​)−i∈Neg∑​log(c^i0​) where c^ip​=∑p​exp(cip​)exp(cip​)​

  • Location Loss
    1NLloc⁡(x,l,g)\frac{1}{N} L_{\operatorname{loc}}(x, l, g) N1​Lloc​(x,l,g)
    Lloc⁡(x,l,g)L_{\operatorname{loc}}(x, l, g)Lloc​(x,l,g) :

    predicted box (lll) 和 ground-truth box (g) 的 Smooth L1 损失:
    Lloc(x,l,g)=∑i∈PosN∑m∈{cx,cy,w,h}xijksmooth⁡Ll(lim−g^jm)L_{l o c}(x, l, g)=\sum_{i \in P o s}^{N} \sum_{m \in\{c x, c y, w, h\}} x_{i j}^{k} \operatorname{smooth}_{\mathrm{Ll}}\left(l_{i}^{m}-\hat{g}_{j}^{m}\right) Lloc​(x,l,g)=i∈Pos∑N​m∈{cx,cy,w,h}∑​xijk​smoothLl​(lim​−g^​jm​)

    smooth⁡L1(x)={0.5x2if ∣x∣<1∣x∣−0.5otherwise \operatorname{smooth}_{L_{1}}(x)=\left\{\begin{array}{ll} 0.5 x^{2} & \text { if }|x|<1 \\ |x|-0.5 & \text { otherwise } \end{array}\right. smoothL1​​(x)={0.5x2∣x∣−0.5​ if ∣x∣<1 otherwise ​

    注意:Location Loss 仅仅对 positive anchor(匹配到ground-truth box的anchor)进行计算

    回归公式为:

    • 中心点坐标 cx,cycx, cycx,cy ==> 平移
      g^jcx=(gjcx−dicx)/diwg^jcy=(gjcy−dicy)/dih\begin{aligned} \hat{g}_{j}^{c x}=\left(g_{j}^{c x}-d_{i}^{c x}\right) / d_{i}^{w} \\ \hat{g}_{j}^{c y}=\left(g_{j}^{c y}-d_{i}^{c y}\right) / d_{i}^{h} \\ \end{aligned} g^​jcx​=(gjcx​−dicx​)/diw​g^​jcy​=(gjcy​−dicy​)/dih​​
  • 宽和高 w,hw,hw,h ==> 缩放
    g^jw=log⁡(gjwdiw)g^jh=log⁡(gjhdih)\begin{aligned} \hat{g}_{j}^{w}=\log \left(\frac{g_{j}^{w}}{d_{i}^{w}}\right) &\\ \hat{g}_{j}^{h}=\log \left(\frac{g_{j}^{h}}{d_{i}^{h}}\right) \end{aligned} g^​jw​=log(diw​gjw​​)g^​jh​=log(dih​gjh​​)​

Multi-Level & Anchor

Feature Map

注意:

即:在多个scale的feature map,使用多个ratios的anchor进行detection

卷积层index和feature map的size如下:

index Conv4_3 Conv7 Conv8_2 Conv9_2 Conv10_2 Conv11_2
feature map size 38×38×512 19×19×1024 10×10×512 5×5×256 3×3×256 1×1×256

Anchor Scale

anchor的相对于每层feature map size的尺度 sks_ksk​ 由下式计算:
sk=smin⁡+smax⁡−smin⁡m−1(k−1),k∈[1,m]s_{k}=s_{\min }+\frac{s_{\max }-s_{\min }}{m-1}(k-1), \quad k \in[1,m] sk​=smin​+m−1smax​−smin​​(k−1),k∈[1,m]

  • sks_ksk​:anchor的相对于feature map的size的比例
  • smin⁡s_{\min }smin​:0.2
  • smax⁡s_{\max }smax​:0.9
  • mmm:所使用feature map的个数,此处为6

经计算,anchor占对应feature map的scale以0.17递增,即:

index Conv4_3 Conv7 Conv8_2 Conv9_2 Conv10_2 Conv11_2
scale 单独设定为0.10 0.20 0.37 0.54 0.71 0.88

反映在原图上的true size为(输入图片为300×300):

index Conv4_3 Conv7 Conv8_2 Conv9_2 Conv10_2 Conv11_2
true size 30 60 111 162 213 264

Anchor Ratios

对每层feature map的ratios有4个或者6个

  • 6 ratios

    ar=[1,1′,2,12,3,13]a_r = [1,1',2,\frac12, 3,\frac13]ar​=[1,1′,2,21​,3,31​]

  • 4 ratios

    ar=[1,1′,2,12]a_r = [1,1',2,\frac12]ar​=[1,1′,2,21​]

其长宽 w,hw, hw,h 为:
wka=skarw_k^a = s_k \sqrt {a_r} wka​=sk​ar​​

hka=skarh_k^a = \frac{s_k}{\sqrt {a_r}} hka​=ar​​sk​​

Layer Output & Filters

相比于YOLO使用 FC层输出结果,SSD使用了convolutional filter来输出结果,从而获得更少的参数、更快的速度

SSD是一个全卷积网络,用于detection的feature map通过convolutional filter来输出结果

每个filter只输出一个值,这个值是category score,或是box offset

对于feature map的每个location,输出维度为:
(c+4)∗k(c+4)*k (c+4)∗k

  • ccc:目标的类别数+1(background与foreground一起做分类)

    没有了YOLO的confidence区分正负样本,这会导致正负样本极端的不平衡,SSD使用了[Hard Negative Mining](#Hard Negative Mining)来维持正负样本的比例

  • 444:bounding box的4个offset

  • kkk:feature map每个location的anchor数,为6或4

对于一个 m×nm×nm×n 的feature map,其输出维度为:
(c+4)∗k∗m∗n(c+4)*k * m *n (c+4)∗k∗m∗n
所需filter的个数也是:
(c+4)∗k∗m∗n(c+4)*k * m *n (c+4)∗k∗m∗n
以 5×55×55×5 的feature map为例,其输出为:

Model Output

index Conv4_3 Conv7 Conv8_2 Conv9_2 Conv10_2 Conv11_2
feature map size 38×38×512 19×19×1024 10×10×512 5×5×256 3×3×256 1×1×256
scale 单独设定为0.10 0.20 0.37 0.54 0.71 0.88
true size 30 60 111 162 213 264
ratios [1,1′,2,12][1,1',2,\frac12][1,1′,2,21​] [1,1′,2,12,3,13][1,1',2,\frac12, 3,\frac13][1,1′,2,21​,3,31​] [1,1′,2,12,3,13][1,1',2,\frac12, 3,\frac13][1,1′,2,21​,3,31​] [1,1′,2,12,3,13][1,1',2,\frac12, 3,\frac13][1,1′,2,21​,3,31​] [1,1′,2,12][1,1',2,\frac12][1,1′,2,21​] [1,1′,2,12][1,1',2,\frac12][1,1′,2,21​]
output (1, 4×4, 38, 38)
(1, 4×21, 38, 38)
(1, 6×4, 19, 19)
(1, 6×21, 19, 19)
(1, 6×4, 10, 10)
(1, 6×21, 10, 10)
(1, 6×4, 5, 5)
(1, 6×21, 5, 5)
(1, 6×4, 3, 3)
(1, 6×21, 3, 3)
(1, 4×4, 1, 1)
(1, 4×21, 1, 1)

anchor的中心点坐标为:
(i+0.5∣fk∣,j+0.5∣fk∣)\big( \frac{i+0.5}{|f_k|} ,\frac{j+0.5}{|f_k|}\big) (∣fk​∣i+0.5​,∣fk​∣j+0.5​)

  • ∣fk∣|f_k|∣fk​∣ 为第 kkk 层feature map的size

最终输出为:

  • location:(1, 8732, 4)
  • confidence:(1, 8732, 4)

其中 8732 为输出总的bounding box数目,为 (4×38×38)+(6×19×19)+(6×10×10)+(6×5×5)+(4×3×3)+(4×1×1)(4×38×38)+(6×19×19)+(6×10×10)+(6×5×5)+(4×3×3)+(4×1×1)(4×38×38)+(6×19×19)+(6×10×10)+(6×5×5)+(4×3×3)+(4×1×1)

所以说SSD本质上是密集采样

关于数据流,详见 [Data FLow](# Data FLow)

Blogs

  • 目标检测|SSD原理与实现:细节信息比较丰富,网络魔改的结构,有TensorFlow代码

  • 一文理解SSD到底是如何检测目标的:对比试验和损失函数

  • 目标检测——SSD简介及代码注释(附github代码——已跑通):网络的输出维度

  • 目标检测算法之SSD代码解析(万字长文超详细):PyTorch代码讲解

    【目标检测实战】Pytorch—SSD模型训练(VOC数据集):配置教程

  • SSD目标检测:数据流、优缺点分析、一些trick及其作用

  • 为什么SSD(Single Shot MultiBox Detector)对小目标的检测效果不好?

  • 目标检测算法之SSD的数据增强策略:数据增强代码

[paper reading] SSD相关推荐

  1. [paper reading] FCOS

    [paper reading] FCOS GitHub:Notes of Classic Detection Papers 2020.11.09更新:更新了Use Yourself,即对于本文的理解和 ...

  2. [paper reading] CenterNet (Triplets)

    [paper reading] CenterNet (Triplets) GitHub:Notes of Classic Detection Papers 2020.11.09更新:更新了Use Yo ...

  3. [paper reading] CornerNet

    [paper reading] CornerNet GitHub:Notes of Classic Detection Papers 本来想放到GitHub的,结果GitHub不支持公式. 没办法只能 ...

  4. [paper reading] YOLO v1

    [paper reading] YOLO v1 GitHub:Notes of Classic Detection Papers 本来想放到GitHub的,结果GitHub不支持公式. 没办法只能放到 ...

  5. cvpr2019/cvpr2018/cvpr2017(Papers/Codes/Project/Paper reading)

    cvpr2019/cvpr2018/cvpr2017(Papers/Codes/Project/Paper reading) Source:https://mp.weixin.qq.com/s/SmS ...

  6. [paper reading] CenterNet (Object as Points)

    [paper reading] CenterNet (Object as Points) GitHub:Notes of Classic Detection Papers 2020.11.09更新:更 ...

  7. [paper reading] RetinaNet

    [paper reading] RetinaNet GitHub:Notes of Classic Detection Papers 本来想放到GitHub的,结果GitHub不支持公式. 没办法只能 ...

  8. [paper reading] Faster RCNN

    [paper reading] Faster RCNN GitHub:Notes of Classic Detection Papers 本来想放到GitHub的,结果GitHub不支持公式. 没办法 ...

  9. [paper reading] DenseNet

    [paper reading] DenseNet GitHub:Notes of Classic Detection Papers 本来想放到GitHub的,结果GitHub不支持公式. 没办法只能放 ...

最新文章

  1. 深度学习4:使用MNIST数据集(tensorflow)
  2. 在IIS上安装 thinkphp的方法
  3. Windows 10 周年更新正式版下载 + win10 快捷键
  4. Pytorch高阶API示范——DNN二分类模型
  5. python时间模块的使用
  6. struts2中的值栈对象ValueStack
  7. html 通用css,需要有关通用HTML / CSS布局的帮助
  8. HTTP、Asp.net管道与IIS
  9. Vue 中获取 package.json 信息
  10. 2022年济南市施工员(市政工程)考试练习题及答案
  11. 青岛理工大学转专业到计算机难不难,2021年青岛理工大学大一新生转专业及入学考试相关规定...
  12. 第06章 Tableau仪表板和故事
  13. 私有协议的解密游戏:从秘文到明文
  14. icon小图标集合网站
  15. Html和Markdown中的空格, nbsp; ensp; emsp; 以及 thinsp; zwnj; zwj;
  16. 解决触摸板synatipics与键盘驱动相冲突问题——win8.1
  17. 修改RabbitMQ密码
  18. Linux学习(未完待续。。。)
  19. 038医疗项目-模块四:采购单模块—采购单数据模型
  20. DTD与XML的关系

热门文章

  1. python读音播报-基于python GUI开发的点名小程序(语音播报)
  2. 有道口语大师APP评测:语音识别准确度低
  3. 强大的端到端语音识别框架—RNN-T
  4. linux开机自启动python脚本_linux怎么让一个python脚本开机自动开启
  5. axios post,get,put
  6. 分治法解决组合问题(递归)
  7. safari 浏览器提示添加到主屏幕_Safari浏览器的秘密技能
  8. jQuery 学习-DOM篇(六):jQuery 替换 DOM 元素
  9. vue中的$event
  10. 从零开始的LaTex生活