SSD-Tensorflow训练模型——ssd_512_vgg

本文详细介绍如何将SSD 300 VGG模型扩展到SSD 512 VGG,并从头开始训练新模型的过程。包括修改训练类别、调整图像尺寸、更新训练脚本等步骤。

使用的基础网络结构为ssd_512_vgg

1. 首先修改ssd_vgg_512.py的训练类别


2.修改train_ssd_network.py的model_name

   修改为ssd_512_vgg

 

3. 修改nets/np_methods.py

    修改:将300改为512, 将类别改为自己数据的类别(+背景)

4. 修改preprocessing/ssd_vgg_preprocessing.py

    修改:将300改为512

5. 修改训练语句

    其他验证测试语句中的模型名称也要修改

    # 注释掉CHECKPOINT_PATH,不提供初始化模型,让模型自己随机初始化权重,从头训练  
    # 删除checkpoint_exclude_scopes和trainable_scopes,因为是从头开始训练  
    # CHECKPOINT_PATH=./log_files/log_finetune/train_voc0712_20170712_1741_VGG16/model.ckpt-253287  
      
    python3 ../train_ssd_network.py \  
        --train_dir=${TRAIN_DIR} \   #训练生成模型的存放路径  
        --dataset_dir=${DATASET_DIR} \  #数据存放路径  
        --dataset_name=pascalvoc_2007 \ #数据名的前缀  
        --dataset_split_name=train \  
        --model_name=ssd_512_vgg \  #加载的模型的名字      //修改为模型的名字
        #--checkpoint_path=${CHECKPOINT_PATH} \ #所加载模型的路径,这里注释掉  
        --checkpoint_model_scope=vgg_16 \   #所加载模型里面的作用域名  
        --save_summaries_secs=60 \  #每60s保存一下日志  
        --save_interval_secs=600 \  #每600s保存一下模型  
        --weight_decay=0.0005 \     #正则化的权值衰减的系数  
        --optimizer=adam \          #选取的最优化函数  
        --learning_rate=0.00001 \   #学习率  
        --learning_rate_decay_factor=0.94 \ #学习率的衰减因子  
        

6. 修改ssd_notbook.ipynb

   a  将文件中数字“300”改为“512”

   b  将import sys  

          sys.path.append('../')

       提前,改为如下图



7. 其他修改参考

http://blog.youkuaiyun.com/liuyan20062010/article/details/78905517

### VGG-SSD 模型使用说明 VGG-SSD 是一种基于卷积神经网络的目标检测框架,其中基础网络采用的是 VGG 架构。以下是关于如何加载预训练权重、初始化模型以及进行目标检测的具体方法。 #### 1. 下载并加载预训练权重 为了快速启动项目,通常会先下载官方发布的预训练权重文件 `VGG_ILSVRC_16_layers_fc_reduced.caffemodel` 并将其转换为 PyTorch 或 TensorFlow 的格式以便于后续操作[^1]。如果需要进一步微调,则可以在该基础上继续优化。 #### 2. 初始化 SSD 模型 下面展示了一个简单的 Python 实现方式来定义和实例化一个带有 VGG 主干网路 (backbone) 和分类回归头部结构 (`DetectionHead`) 的单阶段对象探测器——即 SSD: ```python import torch.nn as nn class DetectionHead(nn.Module): def __init__(self, num_classes): super(DetectionHead, self).__init__() # 这里简化处理,默认设置一些层用于预测边界框坐标与类别概率分布向量长度等于num_class加背景标签数量之和... def create_vgg_backbone(): pass # 此处省略具体实现细节... # 定义SSD类继承自nn.Module基类 class SSD(nn.Module): def __init__(self, backbone, num_classes): super(SSD, self).__init__() self.backbone = backbone # 基础特征提取部分 self.detection_head = DetectionHead(num_classes) def forward(self, x): features = self.backbone(x) predictions = self.detection_head(features) return predictions if __name__ == '__main__': backbone = create_vgg_backbone() ssd_model = SSD(backbone=backbone, num_classes=21) ``` 上述代码片段展示了如何构建一个基本版本的 SSD 模型架构,并通过指定输入张量尺寸完成正向传播过程模拟计算输出结果形式[^2]。 #### 3. 环境配置与数据准备 在实际部署过程中还需要注意以下几点事项: - **确认 GPU 可用性**: 使用如下命令验证当前环境中是否存在可用 CUDA 设备支持加速运算性能提升效果显著。 ```bash import torch print(torch.cuda.is_available()) ``` - **创建必要的列表文件**: 执行脚本生成标注信息路径索引表便于后续读取解析图像样本集内容。可能遇到错误提示需手动编辑相应 shell 脚本更改默认根目录地址指向本地存储位置[^4]. - **定制化修改参数**: - 更改 voc_classes.txt 文件中的类别名称匹配个人需求场景下的物体种类描述; - 更新 train.py 中 NUM_CLASSES 参数值使之反映新设定好的总类别数目大小关系一致保持同步更新状态良好运作无误发生意外情况中断程序执行流程正常结束整个学习周期循环迭代直至收敛达到预期精度水平为止[^5]. ### 总结 综上所述,VGG-SSD 结合了强大的视觉表示能力和高效实时性的优势特点成为众多计算机视觉领域应用广泛接受认可的技术方案之一.
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值