ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

第8组 Alpha (2/3)

2021-11-27 20:31:55  阅读:227  来源: 互联网

标签:kernel padding stride Alpha 256 Conv2d size


第8组 Alpha (2/3)

1.过去完成了哪些任务

完成了模型的准备工作、初步分工和和初步训练;训练结果达到了论文中的精度,准确率初步达标

数据集

我们将使用 Pascal Visual Object Classes (VOC) 2007年和2012年的数据集,这一份数据集中包含有20种不同物体,每一个物体都被以下三个属性描述

  • 盒子坐标
  • 标签
{'aeroplane', 'bicycle', 'bird', 'boat', 'bottle', 'bus', 'car', 'cat', 'chair', 'cow', 'diningtable', 'dog', 'horse', 'motorbike', 'person', 'pottedplant', 'sheep', 'sofa', 'train', 'tvmonitor'}
  • 识别难度(0表示不困难,1表示困难)

输出

采用 Multibox 技术,包含两个任务

  • 回归,检测到目标的盒子坐标
  • 分类,将检测到的目标归类

模型

本项目实施 Single Shot Detector (SSD) 方法,卷积操作如下

  • 迁移学习,使用 VGG-16 作为基础网络
  • ILSVRC 分类任务上预训练,Pytorch 中可获取
  • 修改
    • 输入 size(300, 300)
    • 第三 pooling 层使用 ceiling 函数而不是 floor 函数
    • 第五 pooling 层使用 (3, 3) 卷积核和 1 步幅
    • 去掉 fc8,将 fc6fc7 改为 conv6conv7

训练结果

参数

{'epoch': 231, 'model': SSD300(
  (base): VGGBase(
    (conv1_1): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
    (conv1_2): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
    (pool1): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    (conv2_1): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
    (conv2_2): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
    (pool2): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    (conv3_1): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
    (conv3_2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
    (conv3_3): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
    (pool3): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=True)
    (conv4_1): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
    (conv4_2): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
    (conv4_3): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
    (pool4): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    (conv5_1): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
    (conv5_2): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
    (conv5_3): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
    (pool5): MaxPool2d(kernel_size=3, stride=1, padding=1, dilation=1, ceil_mode=False)
    (conv6): Conv2d(512, 1024, kernel_size=(3, 3), stride=(1, 1), padding=(6, 6), dilation=(6, 6))
    (conv7): Conv2d(1024, 1024, kernel_size=(1, 1), stride=(1, 1))
  )
  (aux_convs): AuxiliaryConvolutions(
    (conv8_1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1))
    (conv8_2): Conv2d(256, 512, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1))
    (conv9_1): Conv2d(512, 128, kernel_size=(1, 1), stride=(1, 1))
    (conv9_2): Conv2d(128, 256, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1))
    (conv10_1): Conv2d(256, 128, kernel_size=(1, 1), stride=(1, 1))
    (conv10_2): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1))
    (conv11_1): Conv2d(256, 128, kernel_size=(1, 1), stride=(1, 1))
    (conv11_2): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1))
  )
  (pred_convs): PredictionConvolutions(
    (loc_conv4_3): Conv2d(512, 16, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
    (loc_conv7): Conv2d(1024, 24, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
    (loc_conv8_2): Conv2d(512, 24, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
    (loc_conv9_2): Conv2d(256, 24, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
    (loc_conv10_2): Conv2d(256, 16, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
    (loc_conv11_2): Conv2d(256, 16, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
    (cl_conv4_3): Conv2d(512, 84, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
    (cl_conv7): Conv2d(1024, 126, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
    (cl_conv8_2): Conv2d(512, 126, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
    (cl_conv9_2): Conv2d(256, 126, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
    (cl_conv10_2): Conv2d(256, 84, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
    (cl_conv11_2): Conv2d(256, 84, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
  )
), 'optimizer': SGD (
Parameter Group 0
    dampening: 0
    lr: 2e-05
    momentum: 0.9
    nesterov: False
    weight_decay: 0.0005

Parameter Group 1
    dampening: 0
    lr: 1e-05
    momentum: 0.9
    nesterov: False
    weight_decay: 0.0005
)}

精度

{'aeroplane': 0.784830629825592,
 'bicycle': 0.8301308751106262,
 'bird': 0.7785976529121399,
 'boat': 0.7153279781341553,
 'bottle': 0.4816097021102905,
 'bus': 0.86469566822052,
 'car': 0.8681696653366089,
 'cat': 0.8875483870506287,
 'chair': 0.5919950008392334,
 'cow': 0.8332351446151733,
 'diningtable': 0.7646348476409912,
 'dog': 0.8511528968811035,
 'horse': 0.8756575584411621,
 'motorbike': 0.8565510511398315,
 'person': 0.7953250408172607,
 'pottedplant': 0.5440034866333008,
 'sheep': 0.7881692051887512,
 'sofa': 0.7863275408744812,
 'train': 0.8692547678947449,
 'tvmonitor': 0.7590073943138123}

Mean Average Precision (mAP): 0.776

训练231轮后,达到和原论文相同的精度

测试随机图片

img

2. 小组分工

成员 工作
蹇浩航 应用设计,后端
赵泽昊 模型调试与优化,应用的封装
郭升 小程序前端
丁浩喆 小程序前端
郭英来 小程序后端

3. 燃尽图

img

4. 例会照片

img

5. 剩余任务&困难

  • 对应用进行封装
  • 前端和后端的设计
  • 考虑用户体验并进行优化
  • 对新知识的学习目前进度较慢

6. 收获和疑问

  • 对各自分工的知识方面加深了理解,提高动手能力
  • 集体学习有助于合作

标签:kernel,padding,stride,Alpha,256,Conv2d,size
来源: https://www.cnblogs.com/maskros/p/15612974.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有