我已尝试过tensorflow中的SSD和YOLO实现。现在我想重新训练我自己的数据集中的任何一个,比如交通信号。除了pascal voc之外,我如何重新训练ssd以获取数据?任何人都可以帮忙吗?我正在使用https://github.com/balancap/SSD-Tensorflow
中的tensorflow实现答案 0 :(得分:2)
不是特定于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回购与SSD-Tensorflow的作者相同,但部分代码库已过时。 答案 1 :(得分:0)
从已训练的模型中删除完全连接的图层,并添加自己完全连接的图层,以便学习分类。
基本上,你有类似的东西:
Image -> Conv1 -> Pool1 -> Conv2 -> Pool2 -> ... -> ConvN -> FC1 -> FC2 -> Softmax
第一部分,Conv和Pool图层提取图像功能。分类部分发生在最后FC -> FC -> Softmax
。要根据此训练模型训练您自己的分类器,您将自己的完全连接层连接到最后一个卷积层,将卷积层设置为不可训练,然后在数据集上训练网络。
说,你想添加3个完全连接的图层和输出图层,它将变成这样:
Image -> Conv1 -> Pool1 -> ... -> ConvN - FC1 -> FC2 -> Softmax
\
MyFC1 -> MyFC2 -> MyFC3 -> MySoftmax
您的分类输出将为MySoftmax
,其中包含您拥有的课程数量。