我已经在tensorflow中尝试了SSD和YOLO实现。现在我想为我自己的数据集重新训练其中的任何一个,比如交通信号。除了pascal voc,我如何为数据重新训练ssd?有人能帮上忙吗?我使用的是来自https://github.com/balancap/SSD-Tensorflow的tensorflow实现
发布于 2017-04-29 01:27:38
不特定于实现,对于SSD,
m*n特征映射,我们预计分类和本地化的(c + 4)kmn输出/预测;c是您试图预测的类数,k是该特征映射中使用的锚点/默认框的数量,m和n是特征映射的2个维度。》中给出的公式更改锚点/默认框的比例
特定于SSD-Tensorflow,
tf.contrib.slim提供的接口相匹配。SSD-Tensorflow目前仅支持Pascal VOC格式。我一直在调整它以接受其他数据集时遇到了困难。您可以查看https://github.com/balancap/SDC-Vehicle-Detection/的示例KITTI接口。SDC-Vehicle-Detection repo与SSD-Tensorflow由同一作者编写,尽管部分代码库已经过时。发布于 2017-04-20 16:20:02
您从训练的模型中删除完全连接的层,然后添加您自己的将学习分类的完全连接的层。
基本上,你有这样的东西:
Image -> Conv1 -> Pool1 -> Conv2 -> Pool2 -> ... -> ConvN -> FC1 -> FC2 -> Softmax第一部分,卷积层和池层提取图像特征。分类部分发生在最后一个FC -> FC -> Softmax中。要基于此训练模型训练您自己的分类器,请将您自己的完全连接的层连接到最后一个卷积层,将卷积层设置为不可训练,然后在数据集上训练网络。
比方说,你想要添加3个完全连接的层和输出层,它将变成这样:
Image -> Conv1 -> Pool1 -> ... -> ConvN - FC1 -> FC2 -> Softmax
\
MyFC1 -> MyFC2 -> MyFC3 -> MySoftmax您的分类输出将是MySoftmax,它将包含您拥有的类数。
https://stackoverflow.com/questions/43493806
复制相似问题