IC-CONV:使用高效空洞搜索的 Inception 卷积

P粉084495128
发布: 2025-07-18 14:53:24
原创
1071人浏览过
本文介绍了基于Paddle实现Inception Conv及魔改版ResNet的过程。Inception Conv通过并联不同空洞卷积并拼接结果构成,魔改版ResNet将主干3x3标准卷积替换为Inception Conv。文中展示了模型搭建、测试细节,包括结构总览、参数量等,验证其在ILSVRC2012数据集上的精度,top1准确率达77.16%,top5达93.48%。

☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜

ic-conv:使用高效空洞搜索的 inception 卷积 - php中文网

引入

  • 空洞卷积(Dilation convolution)是标准卷积神经网络的关键变体,可以控制有效的感受野并处理对象的da尺度方差,而无需引入额外的计算
  • 为了充分挖掘其潜力,作者提出了一种新的空洞卷积变体,即 inception (dilated) 卷积,其中卷积在不同轴,通道和层之间具有独立的空洞
  • 本次就来使用 Paddle 实现 Inception Conv 和基于 Inception Conv 的魔改版 ResNet
  • 并使用官方提供的预训练模型参数进行精度验证

相关资料

  • 论文:Inception Convolution with Efficient Dilation Search
  • 官方项目:yifan123/IC-Conv

算子和模型的搭建

导入一些必要的包

In [1]
import reimport jsonimport paddleimport paddle.nn as nnfrom paddle.vision.models import resnet
登录后复制
   

IC_Conv

  • Inception Conv 的结构如下图:

    IC-CONV:使用高效空洞搜索的 Inception 卷积 - php中文网                

  • 大致的实现方法是使用多个不同的空洞卷积并联,然后将结果拼接到一起

    Find JSON Path Online
    Find JSON Path Online

    Easily find JSON paths within JSON objects using our intuitive Json Path Finder

    Find JSON Path Online 193
    查看详情 Find JSON Path Online
  • 通过 pattern_dist 参数加载搜索到的各个卷积的参数

In [2]
class IC_Conv2D(nn.Layer):
    def __init__(self, pattern_dist, inplanes, planes, kernel_size, stride=1, groups=1, bias_attr=False):
        super(IC_Conv2D, self).__init__()
        self.conv_list = nn.LayerList()
        self.planes = planes        for pattern in pattern_dist:
            channel = pattern_dist[pattern]
            pattern_trans = re.findall(r"\d+\.?\d*", pattern)
            pattern_trans[0] = int(pattern_trans[0])+1
            pattern_trans[1] = int(pattern_trans[1])+1
            if channel > 0:
                padding = [0, 0]
                padding[0] = (kernel_size+2*(pattern_trans[0]-1))//2
                padding[1] = (kernel_size+2*(pattern_trans[1]-1))//2
                self.conv_list.append(nn.Conv2D(inplanes, channel, kernel_size=kernel_size, stride=stride,
                                                padding=padding, bias_attr=bias_attr, groups=groups, dilation=pattern_trans))    def forward(self, x):
        out = []        for conv in self.conv_list:
            out.append(conv(x))
        out = paddle.concat(out, axis=1)        assert out.shape[1] == self.planes        return out
登录后复制
   

IC_ResNet

  • IC_ResNet 即一种添加了 Inception Conv 的魔改版 ResNet
  • 将 ResNet 主干中的 3x3 标准卷积替换为 Inception Conv
In [3]
class BottleneckBlock(resnet.BottleneckBlock):
    def __init__(self,
                 inplanes,
                 planes,
                 stride=1,
                 downsample=None,
                 groups=1,
                 base_width=64,
                 dilation=1,
                 norm_layer=None):
        super(BottleneckBlock, self).__init__(inplanes, planes, stride,
                                              downsample, groups, base_width, dilation, norm_layer)        global pattern, pattern_index
        pattern_index = pattern_index + 1
        width = int(planes * (base_width / 64.)) * groups
        self.conv2 = IC_Conv2D(
            pattern[pattern_index], width, width, kernel_size=3, stride=stride, bias_attr=False)class IC_ResNet(resnet.ResNet):
    def __init__(self, block, depth, pattern_path=None, class_dim=1000, with_pool=True):
        super(IC_ResNet, self).__init__(resnet.BottleneckBlock,
                                        depth, num_classes=class_dim, with_pool=with_pool)        global pattern, pattern_index        with open(pattern_path, 'r') as f:
            pattern = json.load(f)
        pattern_index = -1

        self.inplanes = 64
        self.dilation = 1

        layer_cfg = {            50: [3, 4, 6, 3],            101: [3, 4, 23, 3]
        }
        layers = layer_cfg[depth]

        self.layer1 = self._make_layer(block, 64, layers[0])
        self.layer2 = self._make_layer(block, 128, layers[1], stride=2)
        self.layer3 = self._make_layer(block, 256, layers[2], stride=2)
        self.layer4 = self._make_layer(block, 512, layers[3], stride=2)        assert len(pattern) == pattern_index + 1def ic_resnet_50_k9(pretrained=False, **kwargs):
    model = IC_ResNet(
        BottleneckBlock,
        depth=50,
        pattern_path='ic_resnet50_k9.json',
        **kwargs
    )    if pretrained:
        model.set_dict(paddle.load('ic_resnet50_k9_imagenet_retrain.pdparams'))    return model
登录后复制
   

模型测试

In [4]
# 实例化模型model = ic_resnet_50_k9(pretrained=True)
model.eval()# 模型结构总览paddle.summary(model, (1, 3, 224, 224))# 计算模型参数量和 flopspaddle.flops(model, (1, 3, 224, 224))# 准备一个随机输入x = paddle.randn((1, 3, 224, 224))# 测试前向计算out = model(x)# 打印输出结果的 shapeprint(out.shape)
登录后复制
       
-------------------------------------------------------------------------------
   Layer (type)         Input Shape          Output Shape         Param #    
===============================================================================
     Conv2D-1        [[1, 3, 224, 224]]   [1, 64, 112, 112]        9,408     
   BatchNorm2D-1    [[1, 64, 112, 112]]   [1, 64, 112, 112]         256      
      ReLU-1        [[1, 64, 112, 112]]   [1, 64, 112, 112]          0       
    MaxPool2D-1     [[1, 64, 112, 112]]    [1, 64, 56, 56]           0       
     Conv2D-55       [[1, 64, 56, 56]]     [1, 64, 56, 56]         4,096     
  BatchNorm2D-55     [[1, 64, 56, 56]]     [1, 64, 56, 56]          256      
      ReLU-18        [[1, 256, 56, 56]]    [1, 256, 56, 56]          0       
     Conv2D-58       [[1, 64, 56, 56]]     [1, 42, 56, 56]        24,192     
     Conv2D-59       [[1, 64, 56, 56]]      [1, 5, 56, 56]         2,880     
     Conv2D-60       [[1, 64, 56, 56]]      [1, 1, 56, 56]          576      
     Conv2D-61       [[1, 64, 56, 56]]      [1, 4, 56, 56]         2,304     
     Conv2D-62       [[1, 64, 56, 56]]      [1, 4, 56, 56]         2,304     
     Conv2D-63       [[1, 64, 56, 56]]      [1, 3, 56, 56]         1,728     
     Conv2D-64       [[1, 64, 56, 56]]      [1, 1, 56, 56]          576      
     Conv2D-65       [[1, 64, 56, 56]]      [1, 1, 56, 56]          576      
     Conv2D-66       [[1, 64, 56, 56]]      [1, 2, 56, 56]         1,152     
     Conv2D-67       [[1, 64, 56, 56]]      [1, 1, 56, 56]          576      
    IC_Conv2D-1      [[1, 64, 56, 56]]     [1, 64, 56, 56]           0       
  BatchNorm2D-56     [[1, 64, 56, 56]]     [1, 64, 56, 56]          256      
     Conv2D-57       [[1, 64, 56, 56]]     [1, 256, 56, 56]       16,384     
  BatchNorm2D-57     [[1, 256, 56, 56]]    [1, 256, 56, 56]        1,024     
     Conv2D-54       [[1, 64, 56, 56]]     [1, 256, 56, 56]       16,384     
  BatchNorm2D-54     [[1, 256, 56, 56]]    [1, 256, 56, 56]        1,024     
BottleneckBlock-17   [[1, 64, 56, 56]]     [1, 256, 56, 56]          0       
     Conv2D-68       [[1, 256, 56, 56]]    [1, 64, 56, 56]        16,384     
  BatchNorm2D-58     [[1, 64, 56, 56]]     [1, 64, 56, 56]          256      
      ReLU-19        [[1, 256, 56, 56]]    [1, 256, 56, 56]          0       
     Conv2D-71       [[1, 64, 56, 56]]     [1, 30, 56, 56]        17,280     
     Conv2D-72       [[1, 64, 56, 56]]      [1, 6, 56, 56]         3,456     
     Conv2D-73       [[1, 64, 56, 56]]      [1, 1, 56, 56]          576      
     Conv2D-74       [[1, 64, 56, 56]]      [1, 1, 56, 56]          576      
     Conv2D-75       [[1, 64, 56, 56]]      [1, 9, 56, 56]         5,184     
     Conv2D-76       [[1, 64, 56, 56]]      [1, 4, 56, 56]         2,304     
     Conv2D-77       [[1, 64, 56, 56]]      [1, 1, 56, 56]          576      
     Conv2D-78       [[1, 64, 56, 56]]      [1, 1, 56, 56]          576      
     Conv2D-79       [[1, 64, 56, 56]]      [1, 1, 56, 56]          576      
     Conv2D-80       [[1, 64, 56, 56]]      [1, 5, 56, 56]         2,880     
     Conv2D-81       [[1, 64, 56, 56]]      [1, 4, 56, 56]         2,304     
     Conv2D-82       [[1, 64, 56, 56]]      [1, 1, 56, 56]          576      
    IC_Conv2D-2      [[1, 64, 56, 56]]     [1, 64, 56, 56]           0       
  BatchNorm2D-59     [[1, 64, 56, 56]]     [1, 64, 56, 56]          256      
     Conv2D-70       [[1, 64, 56, 56]]     [1, 256, 56, 56]       16,384     
  BatchNorm2D-60     [[1, 256, 56, 56]]    [1, 256, 56, 56]        1,024     
BottleneckBlock-18   [[1, 256, 56, 56]]    [1, 256, 56, 56]          0       
     Conv2D-83       [[1, 256, 56, 56]]    [1, 64, 56, 56]        16,384     
  BatchNorm2D-61     [[1, 64, 56, 56]]     [1, 64, 56, 56]          256      
      ReLU-20        [[1, 256, 56, 56]]    [1, 256, 56, 56]          0       
     Conv2D-86       [[1, 64, 56, 56]]     [1, 41, 56, 56]        23,616     
     Conv2D-87       [[1, 64, 56, 56]]      [1, 5, 56, 56]         2,880     
     Conv2D-88       [[1, 64, 56, 56]]      [1, 3, 56, 56]         1,728     
     Conv2D-89       [[1, 64, 56, 56]]      [1, 1, 56, 56]          576      
     Conv2D-90       [[1, 64, 56, 56]]      [1, 1, 56, 56]          576      
     Conv2D-91       [[1, 64, 56, 56]]      [1, 3, 56, 56]         1,728     
     Conv2D-92       [[1, 64, 56, 56]]      [1, 7, 56, 56]         4,032     
     Conv2D-93       [[1, 64, 56, 56]]      [1, 1, 56, 56]          576      
     Conv2D-94       [[1, 64, 56, 56]]      [1, 2, 56, 56]         1,152     
    IC_Conv2D-3      [[1, 64, 56, 56]]     [1, 64, 56, 56]           0       
  BatchNorm2D-62     [[1, 64, 56, 56]]     [1, 64, 56, 56]          256      
     Conv2D-85       [[1, 64, 56, 56]]     [1, 256, 56, 56]       16,384     
  BatchNorm2D-63     [[1, 256, 56, 56]]    [1, 256, 56, 56]        1,024     
BottleneckBlock-19   [[1, 256, 56, 56]]    [1, 256, 56, 56]          0       
     Conv2D-96       [[1, 256, 56, 56]]    [1, 128, 56, 56]       32,768     
  BatchNorm2D-65     [[1, 128, 56, 56]]    [1, 128, 56, 56]         512      
      ReLU-21        [[1, 512, 28, 28]]    [1, 512, 28, 28]          0       
     Conv2D-99       [[1, 128, 56, 56]]    [1, 77, 28, 28]        88,704     
    Conv2D-100       [[1, 128, 56, 56]]     [1, 9, 28, 28]        10,368     
    Conv2D-101       [[1, 128, 56, 56]]     [1, 1, 28, 28]         1,152     
    Conv2D-102       [[1, 128, 56, 56]]     [1, 3, 28, 28]         3,456     
    Conv2D-103       [[1, 128, 56, 56]]     [1, 4, 28, 28]         4,608     
    Conv2D-104       [[1, 128, 56, 56]]     [1, 4, 28, 28]         4,608     
    Conv2D-105       [[1, 128, 56, 56]]     [1, 4, 28, 28]         4,608     
    Conv2D-106       [[1, 128, 56, 56]]     [1, 2, 28, 28]         2,304     
    Conv2D-107       [[1, 128, 56, 56]]     [1, 3, 28, 28]         3,456     
    Conv2D-108       [[1, 128, 56, 56]]     [1, 1, 28, 28]         1,152     
    Conv2D-109       [[1, 128, 56, 56]]     [1, 2, 28, 28]         2,304     
    Conv2D-110       [[1, 128, 56, 56]]     [1, 3, 28, 28]         3,456     
    Conv2D-111       [[1, 128, 56, 56]]     [1, 8, 28, 28]         9,216     
    Conv2D-112       [[1, 128, 56, 56]]     [1, 2, 28, 28]         2,304     
    Conv2D-113       [[1, 128, 56, 56]]     [1, 2, 28, 28]         2,304     
    Conv2D-114       [[1, 128, 56, 56]]     [1, 3, 28, 28]         3,456     
    IC_Conv2D-4      [[1, 128, 56, 56]]    [1, 128, 28, 28]          0       
  BatchNorm2D-66     [[1, 128, 28, 28]]    [1, 128, 28, 28]         512      
     Conv2D-98       [[1, 128, 28, 28]]    [1, 512, 28, 28]       65,536     
  BatchNorm2D-67     [[1, 512, 28, 28]]    [1, 512, 28, 28]        2,048     
     Conv2D-95       [[1, 256, 56, 56]]    [1, 512, 28, 28]       131,072    
  BatchNorm2D-64     [[1, 512, 28, 28]]    [1, 512, 28, 28]        2,048     
BottleneckBlock-20   [[1, 256, 56, 56]]    [1, 512, 28, 28]          0       
    Conv2D-115       [[1, 512, 28, 28]]    [1, 128, 28, 28]       65,536     
  BatchNorm2D-68     [[1, 128, 28, 28]]    [1, 128, 28, 28]         512      
      ReLU-22        [[1, 512, 28, 28]]    [1, 512, 28, 28]          0       
    Conv2D-118       [[1, 128, 28, 28]]    [1, 65, 28, 28]        74,880     
    Conv2D-119       [[1, 128, 28, 28]]     [1, 3, 28, 28]         3,456     
    Conv2D-120       [[1, 128, 28, 28]]     [1, 3, 28, 28]         3,456     
    Conv2D-121       [[1, 128, 28, 28]]     [1, 4, 28, 28]         4,608     
    Conv2D-122       [[1, 128, 28, 28]]     [1, 9, 28, 28]        10,368     
    Conv2D-123       [[1, 128, 28, 28]]     [1, 7, 28, 28]         8,064     
    Conv2D-124124       [[1, 128, 28, 28]]     [1, 5, 28, 28]         5,760     
    Conv2D-125       [[1, 128, 28, 28]]     [1, 1, 28, 28]         1,152     
    Conv2D-126       [[1, 128, 28, 28]]     [1, 2, 28, 28]         2,304     
    Conv2D-127       [[1, 128, 28, 28]]     [1, 2, 28, 28]         2,304     
    Conv2D-128       [[1, 128, 28, 28]]     [1, 2, 28, 28]         2,304     
    Conv2D-129       [[1, 128, 28, 28]]     [1, 5, 28, 28]         5,760     
    Conv2D-130       [[1, 128, 28, 28]]     [1, 3, 28, 28]         3,456     
    Conv2D-131       [[1, 128, 28, 28]]     [1, 2, 28, 28]         2,304     
    Conv2D-132       [[1, 128, 28, 28]]     [1, 2, 28, 28]         2,304     
    Conv2D-133       [[1, 128, 28, 28]]    [1, 13, 28, 28]        14,976     
    IC_Conv2D-5      [[1, 128, 28, 28]]    [1, 128, 28, 28]          0       
  BatchNorm2D-69     [[1, 128, 28, 28]]    [1, 128, 28, 28]         512      
    Conv2D-117       [[1, 128, 28, 28]]    [1, 512, 28, 28]       65,536     
  BatchNorm2D-70     [[1, 512, 28, 28]]    [1, 512, 28, 28]        2,048     
BottleneckBlock-21   [[1, 512, 28, 28]]    [1, 512, 28, 28]          0       
    Conv2D-134       [[1, 512, 28, 28]]    [1, 128, 28, 28]       65,536     
  BatchNorm2D-71     [[1, 128, 28, 28]]    [1, 128, 28, 28]         512      
      ReLU-23        [[1, 512, 28, 28]]    [1, 512, 28, 28]          0       
    Conv2D-137       [[1, 128, 28, 28]]    [1, 69, 28, 28]        79,488     
    Conv2D-138       [[1, 128, 28, 28]]     [1, 5, 28, 28]         5,760     
    Conv2D-139       [[1, 128, 28, 28]]     [1, 4, 28, 28]         4,608     
    Conv2D-140       [[1, 128, 28, 28]]     [1, 6, 28, 28]         6,912     
    Conv2D-141       [[1, 128, 28, 28]]     [1, 5, 28, 28]         5,760     
    Conv2D-142       [[1, 128, 28, 28]]     [1, 6, 28, 28]         6,912     
    Conv2D-143       [[1, 128, 28, 28]]     [1, 2, 28, 28]         2,304     
    Conv2D-144       [[1, 128, 28, 28]]     [1, 3, 28, 28]         3,456     
    Conv2D-145       [[1, 128, 28, 28]]     [1, 2, 28, 28]         2,304     
    Conv2D-146       [[1, 128, 28, 28]]     [1, 1, 28, 28]         1,152     
    Conv2D-147       [[1, 128, 28, 28]]     [1, 1, 28, 28]         1,152     
    Conv2D-148       [[1, 128, 28, 28]]     [1, 5, 28, 28]         5,760     
    Conv2D-149       [[1, 128, 28, 28]]     [1, 2, 28, 28]         2,304     
    Conv2D-150       [[1, 128, 28, 28]]     [1, 1, 28, 28]         1,152     
    Conv2D-151       [[1, 128, 28, 28]]    [1, 16, 28, 28]        18,432     
    IC_Conv2D-6      [[1, 128, 28, 28]]    [1, 128, 28, 28]          0       
  BatchNorm2D-72     [[1, 128, 28, 28]]    [1, 128, 28, 28]         512      
    Conv2D-136       [[1, 128, 28, 28]]    [1, 512, 28, 28]       65,536     
  BatchNorm2D-73     [[1, 512, 28, 28]]    [1, 512, 28, 28]        2,048     
BottleneckBlock-22   [[1, 512, 28, 28]]    [1, 512, 28, 28]          0       
    Conv2D-152       [[1, 512, 28, 28]]    [1, 128, 28, 28]       65,536     
  BatchNorm2D-74     [[1, 128, 28, 28]]    [1, 128, 28, 28]         512      
      ReLU-24        [[1, 512, 28, 28]]    [1, 512, 28, 28]          0       
    Conv2D-155       [[1, 128, 28, 28]]    [1, 57, 28, 28]        65,664     
    Conv2D-156       [[1, 128, 28, 28]]     [1, 9, 28, 28]        10,368     
    Conv2D-157       [[1, 128, 28, 28]]    [1, 12, 28, 28]        13,824     
    Conv2D-158       [[1, 128, 28, 28]]     [1, 3, 28, 28]         3,456     
    Conv2D-159       [[1, 128, 28, 28]]     [1, 9, 28, 28]        10,368     
    Conv2D-160       [[1, 128, 28, 28]]     [1, 6, 28, 28]         6,912     
    Conv2D-161       [[1, 128, 28, 28]]     [1, 4, 28, 28]         4,608     
    Conv2D-162       [[1, 128, 28, 28]]     [1, 2, 28, 28]         2,304     
    Conv2D-163       [[1, 128, 28, 28]]     [1, 4, 28, 28]         4,608     
    Conv2D-164       [[1, 128, 28, 28]]     [1, 3, 28, 28]         3,456     
    Conv2D-165       [[1, 128, 28, 28]]     [1, 2, 28, 28]         2,304     
    Conv2D-166       [[1, 128, 28, 28]]     [1, 2, 28, 28]         2,304     
    Conv2D-167       [[1, 128, 28, 28]]     [1, 5, 28, 28]         5,760     
    Conv2D-168       [[1, 128, 28, 28]]     [1, 3, 28, 28]         3,456     
    Conv2D-169       [[1, 128, 28, 28]]     [1, 3, 28, 28]         3,456     
    Conv2D-170       [[1, 128, 28, 28]]     [1, 4, 28, 28]         4,608     
    IC_Conv2D-7      [[1, 128, 28, 28]]    [1, 128, 28, 28]          0       
  BatchNorm2D-75     [[1, 128, 28, 28]]    [1, 128, 28, 28]         512      
    Conv2D-154       [[1, 128, 28, 28]]    [1, 512, 28, 28]       65,536     
  BatchNorm2D-76     [[1, 512, 28, 28]]    [1, 512, 28, 28]        2,048     
BottleneckBlock-23   [[1, 512, 28, 28]]    [1, 512, 28, 28]          0       
    Conv2D-172       [[1, 512, 28, 28]]    [1, 256, 28, 28]       131,072    
  BatchNorm2D-78     [[1, 256, 28, 28]]    [1, 256, 28, 28]        1,024     
      ReLU-25       [[1, 1024, 14, 14]]   [1, 1024, 14, 14]          0       
    Conv2D-175       [[1, 256, 28, 28]]    [1, 95, 14, 14]        218,880    
    Conv2D-176       [[1, 256, 28, 28]]    [1, 29, 14, 14]        66,816     
    Conv2D-177       [[1, 256, 28, 28]]     [1, 9, 14, 14]        20,736     
    Conv2D-178       [[1, 256, 28, 28]]     [1, 6, 14, 14]        13,824     
    Conv2D-179       [[1, 256, 28, 28]]    [1, 26, 14, 14]        59,904     
    Conv2D-180       [[1, 256, 28, 28]]    [1, 16, 14, 14]        36,864     
    Conv2D-181       [[1, 256, 28, 28]]    [1, 11, 14, 14]        25,344     
    Conv2D-182       [[1, 256, 28, 28]]     [1, 4, 14, 14]         9,216     
    Conv2D-183       [[1, 256, 28, 28]]    [1, 12, 14, 14]        27,648     
    Conv2D-184       [[1, 256, 28, 28]]     [1, 7, 14, 14]        16,128     
    Conv2D-185       [[1, 256, 28, 28]]     [1, 7, 14, 14]        16,128     
    Conv2D-186       [[1, 256, 28, 28]]     [1, 7, 14, 14]        16,128     
    Conv2D-187       [[1, 256, 28, 28]]    [1, 11, 14, 14]        25,344     
    Conv2D-188       [[1, 256, 28, 28]]     [1, 3, 14, 14]         6,912     
    Conv2D-189       [[1, 256, 28, 28]]     [1, 4, 14, 14]         9,216     
    Conv2D-190       [[1, 256, 28, 28]]     [1, 9, 14, 14]        20,736     
    IC_Conv2D-8      [[1, 256, 28, 28]]    [1, 256, 14, 14]          0       
  BatchNorm2D-79     [[1, 256, 14, 14]]    [1, 256, 14, 14]        1,024     
    Conv2D-174       [[1, 256, 14, 14]]   [1, 1024, 14, 14]       262,144    
  BatchNorm2D-80    [[1, 1024, 14, 14]]   [1, 1024, 14, 14]        4,096     
    Conv2D-171       [[1, 512, 28, 28]]   [1, 1024, 14, 14]       524,288    
  BatchNorm2D-77    [[1, 1024, 14, 14]]   [1, 1024, 14, 14]        4,096     
BottleneckBlock-24   [[1, 512, 28, 28]]   [1, 1024, 14, 14]          0       
    Conv2D-191      [[1, 1024, 14, 14]]    [1, 256, 14, 14]       262,144    
  BatchNorm2D-81     [[1, 256, 14, 14]]    [1, 256, 14, 14]        1,024     
      ReLU-26       [[1, 1024, 14, 14]]   [1, 1024, 14, 14]          0       
    Conv2D-194       [[1, 256, 14, 14]]    [1, 84, 14, 14]        193,536    
    Conv2D-195       [[1, 256, 14, 14]]    [1, 14, 14, 14]        32,256     
    Conv2D-196       [[1, 256, 14, 14]]     [1, 8, 14, 14]        18,432     
    Conv2D-197       [[1, 256, 14, 14]]    [1, 17, 14, 14]        39,168     
    Conv2D-198       [[1, 256, 14, 14]]    [1, 16, 14, 14]        36,864     
    Conv2D-199       [[1, 256, 14, 14]]     [1, 7, 14, 14]        16,128     
    Conv2D-200       [[1, 256, 14, 14]]     [1, 5, 14, 14]        11,520     
    Conv2D-201       [[1, 256, 14, 14]]     [1, 6, 14, 14]        13,824     
    Conv2D-202       [[1, 256, 14, 14]]     [1, 9, 14, 14]        20,736     
    Conv2D-203       [[1, 256, 14, 14]]     [1, 7, 14, 14]        16,128     
    Conv2D-204       [[1, 256, 14, 14]]     [1, 9, 14, 14]        20,736     
    Conv2D-205       [[1, 256, 14, 14]]     [1, 7, 14, 14]        16,128     
    Conv2D-206       [[1, 256, 14, 14]]    [1, 18, 14, 14]        41,472     
    Conv2D-207       [[1, 256, 14, 14]]     [1, 5, 14, 14]        11,520     
    Conv2D-208       [[1, 256, 14, 14]]     [1, 8, 14, 14]        18,432     
    Conv2D-209       [[1, 256, 14, 14]]    [1, 36, 14, 14]        82,944     
    IC_Conv2D-9      [[1, 256, 14, 14]]    [1, 256, 14, 14]          0       
  BatchNorm2D-82     [[1, 256, 14, 14]]    [1, 256, 14, 14]        1,024     
    Conv2D-193       [[1, 256, 14, 14]]   [1, 1024, 14, 14]       262,144    
  BatchNorm2D-83    [[1, 1024, 14, 14]]   [1, 1024, 14, 14]        4,096     
BottleneckBlock-25  [[1, 1024, 14, 14]]   [1, 1024, 14, 14]          0       
    Conv2D-210      [[1, 1024, 14, 14]]    [1, 256, 14, 14]       262,144    
  BatchNorm2D-84     [[1, 256, 14, 14]]    [1, 256, 14, 14]        1,024     
      ReLU-27       [[1, 1024, 14, 14]]   [1, 1024, 14, 14]          0       
    Conv2D-213       [[1, 256, 14, 14]]    [1, 92, 14, 14]        211,968    
    Conv2D-214       [[1, 256, 14, 14]]    [1, 11, 14, 14]        25,344     
    Conv2D-215       [[1, 256, 14, 14]]    [1, 11, 14, 14]        25,344     
    Conv2D-216       [[1, 256, 14, 14]]    [1, 17, 14, 14]        39,168     
    Conv2D-217       [[1, 256, 14, 14]]    [1, 15, 14, 14]        34,560     
    Conv2D-218       [[1, 256, 14, 14]]    [1, 19, 14, 14]        43,776     
    Conv2D-219       [[1, 256, 14, 14]]     [1, 1, 14, 14]         2,304     
    Conv2D-220       [[1, 256, 14, 14]]     [1, 7, 14, 14]        16,128     
    Conv2D-221       [[1, 256, 14, 14]]    [1, 20, 14, 14]        46,080     
    Conv2D-222       [[1, 256, 14, 14]]     [1, 5, 14, 14]        11,520     
    Conv2D-223       [[1, 256, 14, 14]]     [1, 3, 14, 14]         6,912     
    Conv2D-224       [[1, 256, 14, 14]]     [1, 8, 14, 14]        18,432     
    Conv2D-225       [[1, 256, 14, 14]]    [1, 12, 14, 14]        27,648     
    Conv2D-226       [[1, 256, 14, 14]]    [1, 10, 14, 14]        23,040     
    Conv2D-227       [[1, 256, 14, 14]]     [1, 5, 14, 14]        11,520     
    Conv2D-228       [[1, 256, 14, 14]]    [1, 20, 14, 14]        46,080     
   IC_Conv2D-10      [[1, 256, 14, 14]]    [1, 256, 14, 14]          0       
  BatchNorm2D-85     [[1, 256, 14, 14]]    [1, 256, 14, 14]        1,024     
    Conv2D-212       [[1, 256, 14, 14]]   [1, 1024, 14, 14]       262,144    
  BatchNorm2D-86    [[1, 1024, 14, 14]]   [1, 1024, 14, 14]        4,096     
BottleneckBlock-26  [[1, 1024, 14, 14]]   [1, 1024, 14, 14]          0       
    Conv2D-229      [[1, 1024, 14, 14]]    [1, 256, 14, 14]       262,144    
  BatchNorm2D-87     [[1, 256, 14, 14]]    [1, 256, 14, 14]        1,024     
      ReLU-28       [[1, 1024, 14, 14]]   [1, 1024, 14, 14]          0       
    Conv2D-232       [[1, 256, 14, 14]]    [1, 88, 14, 14]        202,752    
    Conv2D-233       [[1, 256, 14, 14]]    [1, 29, 14, 14]        66,816     
    Conv2D-234       [[1, 256, 14, 14]]     [1, 8, 14, 14]        18,432     
    Conv2D-235       [[1, 256, 14, 14]]    [1, 19, 14, 14]        43,776     
    Conv2D-236       [[1, 256, 14, 14]]    [1, 18, 14, 14]        41,472     
    Conv2D-237       [[1, 256, 14, 14]]     [1, 8, 14, 14]        18,432     
    Conv2D-238       [[1, 256, 14, 14]]     [1, 6, 14, 14]        13,824     
    Conv2D-239       [[1, 256, 14, 14]]     [1, 7, 14, 14]        16,128     
    Conv2D-240       [[1, 256, 14, 14]]    [1, 12, 14, 14]        27,648     
    Conv2D-241       [[1, 256, 14, 14]]     [1, 2, 14, 14]         4,608     
    Conv2D-242       [[1, 256, 14, 14]]     [1, 2, 14, 14]         4,608     
    Conv2D-243       [[1, 256, 14, 14]]     [1, 5, 14, 14]        11,520     
    Conv2D-244       [[1, 256, 14, 14]]    [1, 13, 14, 14]        29,952     
    Conv2D-245       [[1, 256, 14, 14]]     [1, 8, 14, 14]        18,432     
    Conv2D-246       [[1, 256, 14, 14]]     [1, 4, 14, 14]         9,216     
    Conv2D-247       [[1, 256, 14, 14]]    [1, 27, 14, 14]        62,208     
   IC_Conv2D-11      [[1, 256, 14, 14]]    [1, 256, 14, 14]          0       
  BatchNorm2D-88     [[1, 256, 14, 14]]    [1, 256, 14, 14]        1,024     
    Conv2D-231       [[1, 256, 14, 14]]   [1, 1024, 14, 14]       262,144    
  BatchNorm2D-89    [[1, 1024, 14, 14]]   [1, 1024, 14, 14]        4,096     
BottleneckBlock-27  [[1, 1024, 14, 14]]   [1, 1024, 14, 14]          0       
    Conv2D-248      [[1, 1024, 14, 14]]    [1, 256, 14, 14]       262,144    
  BatchNorm2D-90     [[1, 256, 14, 14]]    [1, 256, 14, 14]        1,024     
      ReLU-29       [[1, 1024, 14, 14]]   [1, 1024, 14, 14]          0       
    Conv2D-251       [[1, 256, 14, 14]]    [1, 111, 14, 14]       255,744    
    Conv2D-252       [[1, 256, 14, 14]]    [1, 14, 14, 14]        32,256     
    Conv2D-253       [[1, 256, 14, 14]]     [1, 8, 14, 14]        18,432     
    Conv2D-254       [[1, 256, 14, 14]]    [1, 16, 14, 14]        36,864     
    Conv2D-255       [[1, 256, 14, 14]]    [1, 15, 14, 14]        34,560     
    Conv2D-256       [[1, 256, 14, 14]]    [1, 11, 14, 14]        25,344     
    Conv2D-257       [[1, 256, 14, 14]]     [1, 6, 14, 14]        13,824     
    Conv2D-258       [[1, 256, 14, 14]]     [1, 9, 14, 14]        20,736     
    Conv2D-259       [[1, 256, 14, 14]]    [1, 13, 14, 14]        29,952     
    Conv2D-260       [[1, 256, 14, 14]]     [1, 2, 14, 14]         4,608     
    Conv2D-261       [[1, 256, 14, 14]]     [1, 6, 14, 14]        13,824     
    Conv2D-262       [[1, 256, 14, 14]]     [1, 9, 14, 14]        20,736     
    Conv2D-263       [[1, 256, 14, 14]]    [1, 14, 14, 14]        32,256     
    Conv2D-264       [[1, 256, 14, 14]]     [1, 7, 14, 14]        16,128     
    Conv2D-265       [[1, 256, 14, 14]]     [1, 3, 14, 14]         6,912     
    Conv2D-266       [[1, 256, 14, 14]]    [1, 12, 14, 14]        27,648     
   IC_Conv2D-12      [[1, 256, 14, 14]]    [1, 256, 14, 14]          0       
  BatchNorm2D-91     [[1, 256, 14, 14]]    [1, 256, 14, 14]        1,024     
    Conv2D-250       [[1, 256, 14, 14]]   [1, 1024, 14, 14]       262,144    
  BatchNorm2D-92    [[1, 1024, 14, 14]]   [1, 1024, 14, 14]        4,096     
BottleneckBlock-28  [[1, 1024, 14, 14]]   [1, 1024, 14, 14]          0       
    Conv2D-267      [[1, 1024, 14, 14]]    [1, 256, 14, 14]       262,144    
  BatchNorm2D-93     [[1, 256, 14, 14]]    [1, 256, 14, 14]        1,024     
      ReLU-30       [[1, 1024, 14, 14]]   [1, 1024, 14, 14]          0       
    Conv2D-270       [[1, 256, 14, 14]]    [1, 105, 14, 14]       241,920    
    Conv2D-271       [[1, 256, 14, 14]]    [1, 21, 14, 14]        48,384     
    Conv2D-272       [[1, 256, 14, 14]]     [1, 6, 14, 14]        13,824     
    Conv2D-273       [[1, 256, 14, 14]]    [1, 22, 14, 14]        50,688     
    Conv2D-274       [[1, 256, 14, 14]]    [1, 16, 14, 14]        36,864     
    Conv2D-275       [[1, 256, 14, 14]]     [1, 7, 14, 14]        16,128     
    Conv2D-276       [[1, 256, 14, 14]]     [1, 5, 14, 14]        11,520     
    Conv2D-277       [[1, 256, 14, 14]]     [1, 7, 14, 14]        16,128     
    Conv2D-278       [[1, 256, 14, 14]]    [1, 11, 14, 14]        25,344     
    Conv2D-279       [[1, 256, 14, 14]]     [1, 3, 14, 14]         6,912     
    Conv2D-280       [[1, 256, 14, 14]]     [1, 2, 14, 14]         4,608     
    Conv2D-281       [[1, 256, 14, 14]]     [1, 7, 14, 14]        16,128     
    Conv2D-282       [[1, 256, 14, 14]]    [1, 25, 14, 14]        57,600     
    Conv2D-283       [[1, 256, 14, 14]]     [1, 2, 14, 14]         4,608     
    Conv2D-284       [[1, 256, 14, 14]]     [1, 6, 14, 14]        13,824     
    Conv2D-285       [[1, 256, 14, 14]]    [1, 11, 14, 14]        25,344     
   IC_Conv2D-13      [[1, 256, 14, 14]]    [1, 256, 14, 14]          0       
  BatchNorm2D-94     [[1, 256, 14, 14]]    [1, 256, 14, 14]        1,024     
    Conv2D-269       [[1, 256, 14, 14]]   [1, 1024, 14, 14]       262,144    
  BatchNorm2D-95    [[1, 1024, 14, 14]]   [1, 1024, 14, 14]        4,096     
BottleneckBlock-29  [[1, 1024, 14, 14]]   [1, 1024, 14, 14]          0       
    Conv2D-287      [[1, 1024, 14, 14]]    [1, 512, 14, 14]       524,288    
  BatchNorm2D-97     [[1, 512, 14, 14]]    [1, 512, 14, 14]        2,048     
      ReLU-31        [[1, 2048, 7, 7]]     [1, 2048, 7, 7]           0       
    Conv2D-290       [[1, 512, 14, 14]]     [1, 134, 7, 7]        617,472    
    Conv2D-291       [[1, 512, 14, 14]]     [1, 53, 7, 7]         244,224    
    Conv2D-292       [[1, 512, 14, 14]]     [1, 32, 7, 7]         147,456    
    Conv2D-293       [[1, 512, 14, 14]]     [1, 23, 7, 7]         105,984    
    Conv2D-294       [[1, 512, 14, 14]]     [1, 66, 7, 7]         304,128    
    Conv2D-295       [[1, 512, 14, 14]]     [1, 31, 7, 7]         142,848    
    Conv2D-296       [[1, 512, 14, 14]]     [1, 15, 7, 7]         69,120     
    Conv2D-297       [[1, 512, 14, 14]]     [1, 23, 7, 7]         105,984    
    Conv2D-298       [[1, 512, 14, 14]]     [1, 30, 7, 7]         138,240    
    Conv2D-299       [[1, 512, 14, 14]]     [1, 20, 7, 7]         92,160     
    Conv2D-300       [[1, 512, 14, 14]]      [1, 7, 7, 7]         32,256     
    Conv2D-301       [[1, 512, 14, 14]]     [1, 10, 7, 7]         46,080     
    Conv2D-302       [[1, 512, 14, 14]]     [1, 33, 7, 7]         152,064    
    Conv2D-303       [[1, 512, 14, 14]]     [1, 12, 7, 7]         55,296     
    Conv2D-304       [[1, 512, 14, 14]]     [1, 10, 7, 7]         46,080     
    Conv2D-305       [[1, 512, 14, 14]]     [1, 13, 7, 7]         59,904     
   IC_Conv2D-14      [[1, 512, 14, 14]]     [1, 512, 7, 7]           0       
  BatchNorm2D-98      [[1, 512, 7, 7]]      [1, 512, 7, 7]         2,048     
    Conv2D-289        [[1, 512, 7, 7]]     [1, 2048, 7, 7]       1,048,576   
  BatchNorm2D-99     [[1, 2048, 7, 7]]     [1, 2048, 7, 7]         8,192     
    Conv2D-286      [[1, 1024, 14, 14]]    [1, 2048, 7, 7]       2,097,152   
  BatchNorm2D-96     [[1, 2048, 7, 7]]     [1, 2048, 7, 7]         8,192     
BottleneckBlock-30  [[1, 1024, 14, 14]]    [1, 2048, 7, 7]           0       
    Conv2D-306       [[1, 2048, 7, 7]]      [1, 512, 7, 7]       1,048,576   
  BatchNorm2D-100     [[1, 512, 7, 7]]      [1, 512, 7, 7]         2,048     
      ReLU-32        [[1, 2048, 7, 7]]     [1, 2048, 7, 7]           0       
    Conv2D-309        [[1, 512, 7, 7]]      [1, 143, 7, 7]        658,944    
    Conv2D-310        [[1, 512, 7, 7]]      [1, 39, 7, 7]         179,712    
    Conv2D-311        [[1, 512, 7, 7]]      [1, 22, 7, 7]         101,376    
    Conv2D-312        [[1, 512, 7, 7]]      [1, 56, 7, 7]         258,048    
    Conv2D-313        [[1, 512, 7, 7]]      [1, 29, 7, 7]         133,632    
    Conv2D-314        [[1, 512, 7, 7]]      [1, 19, 7, 7]         87,552     
    Conv2D-315        [[1, 512, 7, 7]]       [1, 4, 7, 7]         18,432     
    Conv2D-316        [[1, 512, 7, 7]]      [1, 14, 7, 7]         64,512     
    Conv2D-317        [[1, 512, 7, 7]]      [1, 23, 7, 7]         105,984    
    Conv2D-318        [[1, 512, 7, 7]]      [1, 14, 7, 7]         64,512     
    Conv2D-319        [[1, 512, 7, 7]]       [1, 6, 7, 7]         27,648     
    Conv2D-320        [[1, 512, 7, 7]]      [1, 17, 7, 7]         78,336     
    Conv2D-321        [[1, 512, 7, 7]]      [1, 37, 7, 7]         170,496    
    Conv2D-322        [[1, 512, 7, 7]]      [1, 14, 7, 7]         64,512     
    Conv2D-323        [[1, 512, 7, 7]]      [1, 16, 7, 7]         73,728     
    Conv2D-324        [[1, 512, 7, 7]]      [1, 59, 7, 7]         271,872    
   IC_Conv2D-15       [[1, 512, 7, 7]]      [1, 512, 7, 7]           0       
  BatchNorm2D-101     [[1, 512, 7, 7]]      [1, 512, 7, 7]         2,048     
    Conv2D-308        [[1, 512, 7, 7]]     [1, 2048, 7, 7]       1,048,576   
  BatchNorm2D-102    [[1, 2048, 7, 7]]     [1, 2048, 7, 7]         8,192     
BottleneckBlock-31   [[1, 2048, 7, 7]]     [1, 2048, 7, 7]           0       
    Conv2D-325       [[1, 2048, 7, 7]]      [1, 512, 7, 7]       1,048,576   
  BatchNorm2D-103     [[1, 512, 7, 7]]      [1, 512, 7, 7]         2,048     
      ReLU-33        [[1, 2048, 7, 7]]     [1, 2048, 7, 7]           0       
    Conv2D-328        [[1, 512, 7, 7]]      [1, 206, 7, 7]        949,248    
    Conv2D-329        [[1, 512, 7, 7]]      [1, 32, 7, 7]         147,456    
    Conv2D-330        [[1, 512, 7, 7]]      [1, 15, 7, 7]         69,120     
    Conv2D-331        [[1, 512, 7, 7]]      [1, 63, 7, 7]         290,304    
    Conv2D-332        [[1, 512, 7, 7]]      [1, 46, 7, 7]         211,968    
    Conv2D-333        [[1, 512, 7, 7]]      [1, 36, 7, 7]         165,888    
    Conv2D-334        [[1, 512, 7, 7]]       [1, 3, 7, 7]         13,824     
    Conv2D-335        [[1, 512, 7, 7]]       [1, 9, 7, 7]         41,472     
    Conv2D-336        [[1, 512, 7, 7]]      [1, 17, 7, 7]         78,336     
    Conv2D-337        [[1, 512, 7, 7]]       [1, 5, 7, 7]         23,040     
    Conv2D-338        [[1, 512, 7, 7]]       [1, 3, 7, 7]         13,824     
    Conv2D-339        [[1, 512, 7, 7]]       [1, 8, 7, 7]         36,864     
    Conv2D-340        [[1, 512, 7, 7]]      [1, 30, 7, 7]         138,240    
    Conv2D-341        [[1, 512, 7, 7]]      [1, 11, 7, 7]         50,688     
    Conv2D-342        [[1, 512, 7, 7]]       [1, 4, 7, 7]         18,432     
    Conv2D-343        [[1, 512, 7, 7]]      [1, 24, 7, 7]         110,592    
   IC_Conv2D-16       [[1, 512, 7, 7]]      [1, 512, 7, 7]           0       
  BatchNorm2D-104     [[1, 512, 7, 7]]      [1, 512, 7, 7]         2,048     
    Conv2D-327        [[1, 512, 7, 7]]     [1, 2048, 7, 7]       1,048,576   
  BatchNorm2D-105    [[1, 2048, 7, 7]]     [1, 2048, 7, 7]         8,192     
BottleneckBlock-32   [[1, 2048, 7, 7]]     [1, 2048, 7, 7]           0       
AdaptiveAvgPool2D-1  [[1, 2048, 7, 7]]     [1, 2048, 1, 1]           0       
     Linear-1           [[1, 2048]]           [1, 1000]          2,049,000   
===============================================================================
Total params: 25,610,152
Trainable params: 25,503,912
Non-trainable params: 106,240
-------------------------------------------------------------------------------
Input size (MB): 0.57
Forward/backward pass size (MB): 272.01
Params size (MB): 97.69
Estimated Total Size (MB): 370.28
-------------------------------------------------------------------------------

<class 'paddle.nn.layer.conv.Conv2D'>'s flops has been counted
<class 'paddle.nn.layer.norm.BatchNorm2D'>'s flops has been counted
<class 'paddle.nn.layer.activation.ReLU'>'s flops has been counted
Cannot find suitable count function for <class 'paddle.nn.layer.pooling.MaxPool2D'>. Treat it as zero FLOPs.
<class 'paddle.nn.layer.pooling.AdaptiveAvgPool2D'>'s flops has been counted
<class 'paddle.nn.layer.common.Linear'>'s flops has been counted
Total Flops: 4111514624     Total Params: 25610152
[1, 1000]
登录后复制
       
/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/paddle/fluid/dygraph/math_op_patch.py:238: UserWarning: The dtype of left and right variables are not the same, left dtype is VarType.FP32, but right dtype is VarType.INT32, the right dtype will convert to VarType.FP32
  format(lhs_dtype, rhs_dtype, lhs_dtype))
登录后复制
       

模型精度验证

解压数据集

In [6]
# 解压数据集!mkdir ~/data/ILSVRC2012
!tar -xf ~/data/data68594/ILSVRC2012_img_val.tar -C ~/data/ILSVRC2012
登录后复制
   

模型验证

In [8]
import osimport cv2import numpy as npimport paddleimport paddle.vision.transforms as Tfrom PIL import Image# 构建数据集class ILSVRC2012(paddle.io.Dataset):
    def __init__(self, root, label_list, transform, backend='pil'):
        self.transform = transform
        self.root = root
        self.label_list = label_list
        self.backend = backend
        self.load_datas()    def load_datas(self):
        self.imgs = []
        self.labels = []        with open(self.label_list, 'r') as f:            for line in f:
                img, label = line[:-1].split(' ')
                self.imgs.append(os.path.join(self.root, img))
                self.labels.append(int(label))    def __getitem__(self, idx):
        label = self.labels[idx]
        image = self.imgs[idx]        if self.backend=='cv2':
            image = cv2.imread(image)        else:
            image = Image.open(image).convert('RGB')
        image = self.transform(image)        return image.astype('float32'), np.array(label).astype('int64')    def __len__(self):
        return len(self.imgs)


val_transforms = T.Compose([
    T.Resize(256),
    T.CenterCrop(224),
    T.Normalize(
        mean=[123.675, 116.28, 103.53],
        std=[58.395, 57.12, 57.375],
        to_rgb=True,
        data_format='HWC'
    ),
    T.ToTensor(),
])

model = paddle.Model(ic_resnet_50_k9(pretrained=True))
model.prepare(metrics=paddle.metric.Accuracy(topk=(1, 5)))# 配置数据集val_dataset = ILSVRC2012('data/ILSVRC2012', transform=val_transforms, label_list='data/data68594/val_list.txt', backend='cv2')# 模型验证model.evaluate(val_dataset, batch_size=128)
登录后复制
       
{'acc_top1': 0.77162, 'acc_top5': 0.9348}
登录后复制
       

以上就是IC-CONV:使用高效空洞搜索的 Inception 卷积的详细内容,更多请关注php中文网其它相关文章!

相关标签:
最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号