【阅读笔记】Dynamic Refifinement Network for Oriented and Densely Packed Object Detection

动态细化网络与SKU110K-R数据集:面向定向物体检测
该研究提出了一种动态细化网络,包括特征选择模块(FSM)和动态细化头(DRH),以解决神经元感受野与不同形状和方向物体的失调问题。同时,为了提升模型对定向物体检测的能力,创建了大规模的SKU110K-R数据集,包含旋转边界框的精细标注。实验表明,所提方法在定向物体检测上表现出色。

1 Introduction

        目标检测已经取得了显著的进展。然而,由于以下内在原因,定向和高密度物体的检测仍然具有挑战性:一是神经元的感受都是轴向对齐的,形状相同,而物体通常是不同的形状,沿着不同的方向排列。二是检测模型通常使用通用知识进行训练,在测试时不能很好地泛化处理特定的对象。三是数据集有限,阻碍了本任务的发展。为了解决前两个问题,本文提出了一种由特征选择模块组成的动态细化网络(FSM)和动态细化头(DRH)。为了解决相关基准测试可用性有限的问题,本文提出了一个广泛的、完全注释的数据集,即SKU110K-R,它基于面向边界框进行重新标记。

2 Related Work

RoI Trans : 将轴对齐的RoI转换成可旋转的RoI,解决RoI与定向目标之间的错位问题。
SCRDet: 在Smooth L1 loss中增加IOU常数因子,解决定向边界框的边界问题。
FSAF: 学习一个anchor-free模块动态选择最适合的特征level。
Dynamic anchor feature selection for single-shot object detection: 提出一种基于新定位点位置和大小的动态特征选择模块。
SKN: 提出使用不同的卷积核在每个位置选择具有不同感受野的特征。
SENet: 自适应调整并校准信道特征响应。
CBAM: 采取多个空间注意力模型对空间之间的关系进行建模。
Active convolution: 用偏移量增加卷积层中的采样位置,该模型在不同的空间位置共享偏移量,训练后的模型参数是静态的。
Deformable convolutional network (DCN) : 对图像中的密集空间变化进行建模,偏移量是动态模型输出。
RoI Trans: 学习了五个offsets,类似于位置敏感的RoI Align对齐方式,将轴对齐RoI转换为旋转RoI。
ORN: 提出了在卷积过程中主动旋转的有源旋转滤波器。旋转角度是一个超参数,是一个固定的数,所有的位置共享相同的旋转角度。
神经网络引入动态滤波器,根据输入特征和切换样本进行调节。动态滤波器在训练阶段学习滤波器权重,从而可以在推理阶段提取样本特征。
CARAFE: 提出一个内核预测模块,该模块负责以内容感知的方式重组卷积核。
DCN和RoI Trans: 它们对偏移预测进行动态建模,不改变核权重。


3 Method

3.1 Network Architecture

3.2 Feature Selection Module 

FSM 用于自适应地聚合提取不同的核大小、形状和方向的信息。RCL是原始的卷积核,在通过额外conv层学到的参数θ,把之前标准的卷积核变成带有参数θ的旋转卷积核,得到offset,共享输入的特征图,然后输入特征图与offset共同作为旋转卷积层的输入。

3.3 SKU110K-R Dataset 

SKU110K-R 是SKU110K的扩展版本。原始SKU110K数据集包含11,762张图片(8,233张用于训练,588张用于验证,2,941张用于测试)和1,733,678个实例。数千家超市商品图片,不同视角、比例、照明条件和噪声条件。SKU110K范围是[-15°,15°]。SKU110K-R将SKU110K图像旋转六个不同的角度(-45°, -30°, -15°, 15°, 30°, 和45°)进行数据扩展和增强。

4 Experiments

 

5 Conclusion 

 1. 提出一种基于目标形状和方向的自适应调整神经元感受野的模块。该FSM模块能有效地缓解感受野和目标之间的失调。
 2.提出两个DRH,即DRH-C和DRH-R(分别用于分类和回归任务)。这些DRHs可以根据每一个样本的唯一性和特殊性建模,并以一种面向对象的方法进行预测。
 3.收集了SKU110K-R,包含对定向边界框精细标注。
 

### 关于密集连接分层网络用于图像去噪的研究 密集连接分层网络(Densely Connected Hierarchical Network, DCHN)是一种专门设计用于解决图像去噪问题的深度学习架构。该方法通过引入密集连接机制来增强特征重用能力,从而提高模型的学习效率和性能[^1]。 #### 密集连接的核心概念 在传统的卷积神经网络中,每一层通常只与其前一层相连。然而,在密集连接结构中,每层不仅接收其前一层的输入,还接受之前所有层的输出作为附加输入。这种设计能够显著减少梯度消失现象并促进更深层次的信息流动[^2]。 #### 层次化网络的设计理念 为了进一步提升效果,研究者们提出了层次化的网络结构。在这种框架下,不同尺度上的特征被分别提取并通过跨级别的交互操作加以融合。具体而言,低级细节与高级语义之间的联系得以加强,使得最终恢复出来的图片更加贴近真实情况[^3]。 以下是基于PyTorch实现的一个简化版DCHN模型代码片段: ```python import torch.nn as nn class DenseBlock(nn.Module): def __init__(self, input_channels, growth_rate=16, layers_per_block=4): super(DenseBlock, self).__init__() self.layers = nn.ModuleList() for i in range(layers_per_block): layer = nn.Sequential( nn.BatchNorm2d(input_channels + i * growth_rate), nn.ReLU(), nn.Conv2d(input_channels + i * growth_rate, growth_rate, kernel_size=3, padding=1) ) self.layers.append(layer) def forward(self, x): features = [x] for layer in self.layers: out = layer(torch.cat(features, dim=1)) features.append(out) return torch.cat(features, dim=1) class TransitionLayer(nn.Module): def __init__(self, num_filters): super(TransitionLayer, self).__init__() self.transition = nn.Sequential( nn.BatchNorm2d(num_filters), nn.ReLU(), nn.Conv2d(num_filters, num_filters // 2, kernel_size=1), nn.AvgPool2d(kernel_size=2) ) def forward(self, x): return self.transition(x) class DCHNet(nn.Module): def __init__(self, initial_channels=64, growth_rate=16, blocks=[4, 4, 4]): super(DCHNet, self).__init__() self.first_conv = nn.Conv2d(3, initial_channels, kernel_size=3, padding=1) channels = initial_channels dense_blocks = [] transition_layers = [] for block_num in blocks[:-1]: dense_blocks.append(DenseBlock(channels, growth_rate=growth_rate, layers_per_block=block_num)) channels += block_num * growth_rate transition_layers.append(TransitionLayer(channels)) channels //= 2 dense_blocks.append(DenseBlock(channels, growth_rate=growth_rate, layers_per_block=blocks[-1])) self.dense_blocks = nn.ModuleList(dense_blocks) self.transition_layers = nn.ModuleList(transition_layers) self.final_conv = nn.Conv2d(channels + blocks[-1]*growth_rate, 3, kernel_size=3, padding=1) def forward(self, x): out = self.first_conv(x) residuals = [] for db, tl in zip(self.dense_blocks[:-1], self.transition_layers): out = db(out) residuals.append(out) out = tl(out) out = self.dense_blocks[-1](out) residuals.reverse() for res in residuals: _, _, h, w = res.size() out = nn.functional.interpolate(out, size=(h,w), mode='bilinear', align_corners=False) + res out = self.final_conv(out) return out ``` 此代码定义了一个基础版本的DCHNet,其中包含了多个dense blocks以及相应的过渡层。它适用于多种类型的噪声去除任务,并可通过调整超参数以适应特定应用场景需求[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值