首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何为我们自己的数据集重新训练SSD对象检测模型?

如何为我们自己的数据集重新训练SSD对象检测模型?
EN

Stack Overflow用户
提问于 2017-04-19 18:58:49
回答 2查看 5.7K关注 0票数 4

我已经在tensorflow中尝试了SSD和YOLO实现。现在我想为我自己的数据集重新训练其中的任何一个,比如交通信号。除了pascal voc,我如何为数据重新训练ssd?有人能帮上忙吗?我使用的是来自https://github.com/balancap/SSD-Tensorflow的tensorflow实现

EN

回答 2

Stack Overflow用户

发布于 2017-04-29 01:27:38

不特定于实现,对于SSD,

  • 由于所有层都是卷积的,您需要更改在预测层中应用的滤波器的数量,因为(根据第4页中的论文)输出是作为要预测的类别数量的函数给出的:即,对于网络中的任何预测层,对于m*n特征映射,我们预计分类和本地化的(c + 4)kmn输出/预测;c是您试图预测的类数,k是该特征映射中使用的锚点/默认框的数量,mn是特征映射的2个维度。
  • 您可能需要根据论文《

》中给出的公式更改锚点/默认框的比例

特定于SSD-Tensorflow,

  • 您需要确保输入格式与tf.contrib.slim提供的接口相匹配。SSD-Tensorflow目前仅支持Pascal VOC格式。我一直在调整它以接受其他数据集时遇到了困难。您可以查看https://github.com/balancap/SDC-Vehicle-Detection/的示例KITTI接口。SDC-Vehicle-Detection repo与SSD-Tensorflow由同一作者编写,尽管部分代码库已经过时。
票数 2
EN

Stack Overflow用户

发布于 2017-04-20 16:20:02

您从训练的模型中删除完全连接的层,然后添加您自己的将学习分类的完全连接的层。

基本上,你有这样的东西:

代码语言:javascript
复制
Image -> Conv1 -> Pool1 -> Conv2 -> Pool2 -> ... -> ConvN -> FC1 -> FC2 -> Softmax

第一部分,卷积层和池层提取图像特征。分类部分发生在最后一个FC -> FC -> Softmax中。要基于此训练模型训练您自己的分类器,请将您自己的完全连接的层连接到最后一个卷积层,将卷积层设置为不可训练,然后在数据集上训练网络。

比方说,你想要添加3个完全连接的层和输出层,它将变成这样:

代码语言:javascript
复制
Image -> Conv1 -> Pool1 -> ... -> ConvN - FC1 -> FC2 -> Softmax
                                        \
                                          MyFC1 -> MyFC2 -> MyFC3 -> MySoftmax

您的分类输出将是MySoftmax,它将包含您拥有的类数。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43493806

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档