首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R-CNN:寻找FC可重新分类的回购

R-CNN:寻找FC可重新分类的回购
EN

Stack Overflow用户
提问于 2017-11-04 17:26:16
回答 1查看 269关注 0票数 1

为了我的兴趣,我正在研究不同的目标检测算法。主要参考资料是Andrej Kar这话的幻灯片 on object 幻灯片在这里 幻灯片在这里

我想从一些参考开始,特别是允许我直接测试我的数据上提到的一些网络(主要包括车载的汽车和自行车比赛摄像机)。

不幸的是,我已经使用了一些预先训练过的网络 (从JunshengFu one中提取的回购叉,它使Yolo稍微适应了我的用例),,但是分类的准确性很低,我想是因为没有太多的赛车训练实例,比如F1。

出于这个原因,我想对这些网络进行再培训,在这里我发现了最重要的问题:

正确地培训一些网络需要硬件(强大的GPU)或我没有的时间,所以我想知道我是否可以重新培训网络的一部分,特别是分类网络和,如果已经有任何允许的回购。

提前谢谢你

EN

回答 1

Stack Overflow用户

发布于 2017-11-05 16:32:02

这就是所谓的网络微调或转移学习.基本上,您可以为您找到的任何网络(当然有类似的问题域)这样做,然后根据您拥有的数据量,您可以微调整个网络,或者冻结一些层,只对最后的层进行培训。对于您的情况,您可能需要冻结整个网络,除了最后一个完全连接的层(实际上您将用新的层替换,满足您的类数),这些层执行分类。我不知道你使用的是哪个库,但是tensorflow有官方的转移学习教程。不过,还不太清楚。

更多的用户友好的教程,您可以在这里找到一些爱好者:教程。在这里,您也可以找到一个代码存储库。您需要的一个更正是,作者对整个网络执行微调,而如果您想冻结某些层,则需要获得可训练变量的列表,并删除要冻结的变量,并将结果列表传递给优化器(因此,他忽略已删除的vars),如下所示:

代码语言:javascript
复制
all_vars = tf.get_collection(tf.GraphKeys.TRAINABLE_VARIABLES,scope='InceptionResnetV2')
to_train = all_vars[-6:] // you better specify them by name explicitely, but this still will work
optimizer = tf.train.AdamOptimizer(lr=0.0001)
train_op = slim.learning.create_train_op(total_loss,optimizer, variables_to_train=to_train)

此外,tensorflow有一个所谓的模型动物园(一群受过训练的模型,你可以用来做你的目的和转移学习)。你可以找到它,这里

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

https://stackoverflow.com/questions/47113465

复制
相关文章

相似问题

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