• CNN车型分类总结


      最近在做一个CNN车型分类的任务,首先先简要介绍一下这个任务。

      总共30个类,训练集图片为车型图片,类似监控拍摄的车型图片,训练集测试集安6:4分,训练集有22302份数据,测试集有14893份数据。

      首先使用的是VGGNet网络,

    nn.Sequential {
    [input -> (1) -> (2) -> (3) -> (4) -> (5) -> (6) -> (7) -> (8) -> (9) -> (10) -> (11) -> (12) -> (13) -> (14) -> (15) -> (16) -> (17) -> (18) -> (19) -> (20) -> (21) -> (22) -> (23) -> (24) -> (25) -> output]
    (1): nn.DataLayer
    (2): cudnn.SpatialConvolution(3 -> 64, 6x6, 2,2, 2,2)
    (3): cudnn.ReLU
    (4): cudnn.SpatialMaxPooling(2x2, 2,2)
    (5): cudnn.SpatialConvolution(64 -> 128, 5x5, 2,2, 2,2)
    (6): cudnn.ReLU
    (7): cudnn.SpatialMaxPooling(2x2, 1,1)
    (8): cudnn.SpatialConvolution(128 -> 256, 3x3, 2,2, 2,2)
    (9): cudnn.ReLU
    (10): cudnn.SpatialMaxPooling(2x2, 1,1)
    (11): cudnn.SpatialConvolution(256 -> 512, 2x2)
    (12): cudnn.ReLU
    (13): cudnn.SpatialMaxPooling(2x2, 1,1)
    (14): cudnn.SpatialConvolution(512 -> 512, 2x2)
    (15): cudnn.ReLU
    (16): cudnn.SpatialMaxPooling(2x2, 1,1)
    (17): nn.View(12800)
    (18): nn.Linear(12800 -> 4096)
    (19): cudnn.ReLU
    (20): nn.Dropout(0.500000)
    (21): nn.Linear(4096 -> 4096)
    (22): cudnn.ReLU
    (23): nn.Dropout(0.500000)
    (24): nn.Linear(4096 -> 30)
    (25): nn.LogSoftMax
    }

      网络参数如上。五个卷积层,三个全连接层。

      数据预处理:每个图片scale成3*150*150大小。

      实验结果:十余小时90%的正确率。(据之前结果最高到92%)

      微调:使用Imagenet训练处的DataLayer,十余小时正确率达92%。(据之前结果最高到97%)

      注意(源代码中数据预处理与训练过程中有一点不匹配,会导致维度出错的bug,具体错误请自行调试)

      

      然后使用了Residual Learning的方法,使用的模型是ResNet-50。Model详见:http://ethereon.github.io/netscope/#/gist/db945b393d40bfa26006

      使用了之前用ImageNet训练好的ResNet-50的模型进行retrain,将最后的全连接2048-1000的Linear换成了2048-30的Linear。

      训练结果:十余小时94%的TOP1正确率。

      网络结构需参考: BatchNormalization论文。

      ResNet-50网络所需内存达到4000MB左右,需要两个GPU同时运行才能跑。

      结构中所采用的1*1卷积大大减少了网络的参数,首先1*1进行降维,3*3卷积后再使用1*1进行升维。每次维度变化都为4倍。

      数据预处理:输入为3*224*224。

      收敛速度曲线与论文中曲线类似:

                                

  • 相关阅读:
    SGC强制最低128位加密,公钥支持ECC加密算法的SSL证书
    python学习笔记(一)
    eclipse中启动 Eclipse 弹出“Failed to load the JNI shared library jvm.dll”错误
    外键建立失败
    scala函数式编程(一)
    idea环境下建立maven工程并运行scala程序
    scala中option、None、some对象
    Java与mysql数据库编程中遇见“Before start of result set at com.mysql.jdbc.SQLError.createSQLException” 的解决办法
    hive表的存储路径查找以及表的大小
    red hat7 系统可以ping通ip地址但是不能ping通域名
  • 原文地址:https://www.cnblogs.com/cyq041804/p/5761499.html
Copyright © 2020-2023  润新知