极简笔记 DeepID-Net: Object Detection with Deformable Part Based Convolutional Neural Networks

本文介绍了将Deformable Part Model (DPM)与卷积神经网络(CNN)结合的DeepID-Net,用于目标检测。通过改进预训练设置和引入def-pooling layer,提升检测性能,利用全局上下文信息增强定位准确性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

极简笔记 DeepID-Net: Object Detection with Deformable Part Based Convolutional Neural Networks

论文地址 http://www.ee.cuhk.edu.hk/~xgwang/papers/ouyangZWpami16.pdf

这是CUHK王晓刚组2017年的一篇TPAMI,最早发在CVPR2015,增加实验之后投到的期刊,所以对比实验都是些AlexNet,GoogLeNet等早期网络模型,faster-rcnn也还没有出现。选读这篇文章是因为想看看Deformable Part Method(DPM)如何和CNN结合。

文章核心贡献:1. 新的目标检测的网络架构;2. 修改了pretrain的设置,提升了性能;3. 把DPM和CNN结合起来的def-pooling layer取代max-pooling layer。pipeline见图
pipeline
作者认为在做检测时候,单单对框框中的物体进行分类会有困难,比如只框出一个小小的排球,可能会和游泳运动员戴在头上的泳帽的纹理搞混。此时需要整张图的全局信息,当发现排球在排球场上,泳帽出现在泳池里,这时检测分类会更加准确,而不会因为局部纹理而被误导。
architecture
很多检测网络都是现在分类任务上pretrain的,文章认为这两个任务有很大不同k,分类任务需要对位置尺度不敏感,而检测任务对位置尺度敏感,因此不能直接生搬硬套。文章使用ImageNet cls-loc的1000类数据进行了pretrain,之后再在200类检测数据集上进行fine-tuning,获得更好效果。
comparison
文章认为CNN中间层每个channel,实际就是物体某个部件的响应图。这个HOG+DPM的流程非常类似,所以作者将DPM的思想加入CNN中,提出用于DPM计算的def-pooling layer。记第c个通道的feature map为 Mc M c ,它的第 (i,j) ( i , j ) 个像素为 M(i,j)c M c ( i , j ) ,响应值为 m(x,y)c m c ( x , y ) 。记anchor中心坐标为 (x,y) ( x , y ) ,anchor上像素的偏移为 (δx,δy) ( δ x , δ y ) ,偏移像素点的绝对坐标为 zδx,δy=(x,

### 线性可变形卷积技术增强卷积神经网络性能 线性可变形卷积是一种扩展标准卷积操作的技术,允许模型自适应地调整感受野的位置。这种灵活性使得模型能够更好地捕捉不同尺度和形状的目标特征。 #### 基本原理 在传统卷积中,滤波器按照固定的空间布局滑动并提取特征。然而,在处理复杂场景时,物体可能呈现不同的姿态、比例或遮挡情况。为此,线性可变形卷积引入了一个额外的分支来预测每个位置上的偏移量(offset),这些偏移会作用于原始采样点上[^4]: ```python import torch.nn as nn class LinearDeformConv(nn.Module): def __init__(self, in_channels, out_channels, kernel_size=3, stride=1, padding=1): super(LinearDeformConv, self).__init__() # 学习偏移量的子网 self.offset_conv = nn.Conv2d(in_channels=in_channels, out_channels=kernel_size * kernel_size * 2, # xy方向各需一个偏移 kernel_size=kernel_size, stride=stride, padding=padding) # 主干卷积层 self.conv = nn.Conv2d(in_channels=in_channels, out_channels=out_channels, kernel_size=kernel_size, stride=stride, padding=padding) def forward(self, x): offsets = self.offset_conv(x) # 预测偏移场 output = deform_conv_function(input=x, offset=offsets, weight=self.conv.weight, bias=self.conv.bias) return output ``` 这里`deform_conv_function()`代表实现具体变形卷积运算的功能函数。通过这种方式,即使面对形态各异的对象实例,也能获得更精准的感受域定位。 #### 性能提升机制 当应用于目标检测任务时,该方法有助于提高边界框回归精度以及分类准确性。特别是在多尺度变换下保持鲁棒性的能力尤为突出[^2]。由于采用了基于数据驱动的方式动态调整空间支持区域,因此相比静态模板化的常规做法更具表达力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值