Xception场景分类模型的实践

刚好最近在找场景分类精度更高的模型,因此将会对近年来精度更高的模型(tensorflow slim中集成的模型除外)进行逐一测试。

Xception: Deep Learning with Depthwise Separable Convolutions ,谷歌去年推出的一篇论文。


看了下这篇论文,它是在inceptionVX的基础上演变过来的。



上面右侧四个图刚好也是论文中思路阐述的重要部分。这些都要追溯到inception相关的结构。

     当时提出Inception的初衷可以认为是:特征的提取和传递可以通过1*1卷积,3*3卷积,5*5卷积,pooling等,到底哪种才是最好的提取特征方式呢?  Inception结构将这个疑问留给网络自己训练,也就是将一个输入同时输给这几种提取特征方式,然后做concat。经典的Inception v3主要是将5*5卷积换成两个3*3卷积层的叠加。

     Figure3表示对于一个输入,先用一个统一的1*1卷积核卷积,然后连接3个3*3的卷积,这3个卷积操作只将前面1*1卷积结果中的一部分作为自己的输入(这里是将1/3channel作为每个3*3卷积的输入)。

     之后,论文又讨论了下inception的极限,这也构成了xception的架构。





论文中指出:In short, the Xception architecture is a linear stack of depthwise separable convolution layers with residual connections.This makes the architecture very easy to defineand modify; 这种方法原理如下图:



         在depthwise separable convolution中是先进行一个channel-wise的spatial convolution,也就是上图的(b),然后是1*1的卷积。而在Figure4中是先进行1*1的卷积,再进行channel-wise的spatial convolution,最后concat。在Figure4中,每个操作后都有一个ReLU的非线性激活,但是在depthwise separable convolution中没有。


论文还给出了实验结果:


明显地看,比V3是有很大的提升。由于xception已经集成到KERAS,因此利用KERAS进行实验,还是对之前反复测试的多场景分类图来进行测试:



对tensorflow slim中的模型,其测试结果为:

使用预训练模型:InceptionV4 进行训练后的效果比较:
Probability 94.92% => [alp]
Probability 1.09% => [valley, vale]
Probability 0.80% => [monastery]
Probability 0.51% => [church, church building]
Probability 0.19% => [bell cote, bell cot]


使用预训练模型:inception_resnet_v2 进行训练后的效果比较:
Probability 78.76% => [alp]
Probability 6.80% => [church, church building]
Probability 1.50% => [bell cote, bell cot]
Probability 1.50% => [monastery]
Probability 1.33% => [valley, vale]


使用xception的预测结果为:


图片../imgs/lussari.jpg 的预测结果如下:
('n09193705', 'alp', 0.88302344)
('n02980441', 'castle', 0.018367991)
('n09468604', 'valley', 0.016518271)
('n03781244', 'monastery', 0.015572131)
('n03028079', 'church', 0.013273265)

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
分类模型是目前深度学习计算机视觉领域最为广泛应用的模型之一。分类模型的主要任务是将一张图片进行分类,其神经网络结构和算法不断优化,目前已经出现了很多经典的分类模型,例如ResNet、DenseNet、Inception等。 PyTorch 是近年来发展较为迅猛的深度学习框架之一,其作为 Facebook 的开源项目,具有易上手、易扩展、动态计算图等优点。在 PyTorch 中,可以使用高阶 API 实现大部分深度学习模型,可以相对轻松地进行网络的构建、训练和调试。 TensorRT 是 NVIDIA 推出的针对深度学习推理计算的高性能优化库。它通过高效的卷积实现技术、高效的内存管理、内存共享等手段,显著提高了深度学习推理计算过程的速度和效率。 TensorRT 在推理过程中能够达到非常高的计算速度,尤其是在对应 NVIDIA GPU 加速卡的情况下。 Xception 是一种基于 Inception 的卷积神经网络,其在 Inception 的基础上采用了深度可分离卷积,用来替代原始的卷积操作。这种操作能够将卷积操作改为两步,即可分离卷积和 1x1 卷积,因此能够有效地减少模型的参数数量和计算量,并且可以在不影响模型性能的情况下实现更好的加速效果。 将这几者综合起来看,分类模型 pytorch tensorrt xception 可能是说在 PyTorch 平台上,使用 Xception 作为神经网络模型,并使用 TensorRT 进行深度学习推理计算加速。 Xception 作为一种类似 Inception 的卷积神经网络,在其基础上使用了深度可分离卷积的操作,使得该模型可以更有效地提高模型的效率和性能。TensorRT 可以在针对深度学习推理计算的过程中进行高效的计算和内存共享,以显著提高模型的推理速度。因此,我们可以通过这些具体的工具和方法来完成图像分类任务。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值