Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python R-CNN:寻找分类的FC可重读的回购协议_Python_Image Processing_Deep Learning_Conv Neural Network_Object Detection - Fatal编程技术网

Python R-CNN:寻找分类的FC可重读的回购协议

Python R-CNN:寻找分类的FC可重读的回购协议,python,image-processing,deep-learning,conv-neural-network,object-detection,Python,Image Processing,Deep Learning,Conv Neural Network,Object Detection,为了我的兴趣,我正在研究不同的目标检测算法。 主要参考文献是Andrej Karpath关于物体检测的幻灯片 我想从一些参考资料开始,特别是允许我直接测试我数据中提到的一些网络(主要包括汽车和自行车比赛的车载摄像头) 不幸的是,我已经使用了一些预训练的网络(,其中我稍微调整了Yolo以适应我的用例),但是分类准确度相当差,我猜是因为像F1这样的赛车训练实例不多 因此,我想对网络进行再培训,以下是我发现最多问题的地方: 正确培训某些网络需要硬件(强大的GPU)或时间,因此我想知道是否可以重新培训网

为了我的兴趣,我正在研究不同的目标检测算法。 主要参考文献是Andrej Karpath关于物体检测的幻灯片

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

不幸的是,我已经使用了一些预训练的网络(,其中我稍微调整了Yolo以适应我的用例),但是分类准确度相当差,我猜是因为像F1这样的赛车训练实例不多

因此,我想对网络进行再培训,以下是我发现最多问题的地方:

正确培训某些网络需要硬件(强大的GPU)或时间,因此我想知道是否可以重新培训网络的某些部分,特别是分类网络,以及是否有任何repo已经允许这样做


提前感谢

这就是所谓的网络微调或转移学习。基本上,您可以对发现的任何网络(当然有类似的问题域)执行此操作,然后根据您拥有的数据量,您可以微调整个网络或冻结某些层,只训练最后一层。对于您的情况,您可能需要冻结整个网络,除了最后一个完全连接的层(您将实际用新层替换,以满足您的类数),这些层执行分类。我不知道你们用的是什么库,但tensorflow有官方的。然而,这不是很清楚tbh

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

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有一个所谓的模型动物园(一堆经过训练的模型,你可以用于你的目的和转移学习)。你可以找到它。

这就是所谓的网络微调或转移学习。基本上,您可以对发现的任何网络(当然有类似的问题域)执行此操作,然后根据您拥有的数据量,您可以微调整个网络或冻结某些层,只训练最后一层。对于您的情况,您可能需要冻结整个网络,除了最后一个完全连接的层(您将实际用新层替换,以满足您的类数),这些层执行分类。我不知道你们用的是什么库,但tensorflow有官方的。然而,这不是很清楚tbh

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

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有一个所谓的模型动物园(一堆经过训练的模型,你可以用于你的目的和转移学习)。你可以找到它。

谢谢你的回答,但没有一段是有用的:我知道什么是迁移学习,我已经用一个初始网络(是的,tensorflow)完成了。这里的重点是网络是快速的R-CNN,更快的R-CNN,Yolo和我没有发现任何能够引导我通过重新培训完全连接的网络来进行区域标记的回购协议。无论如何,谢谢你为我的问题提供了更多的背景:)谢谢你的回答,但没有一段是有帮助的:我知道什么是迁移学习,我已经用《盗梦空间》网络(是的,tensorflow)做到了这一点。这里的重点是网络是快速的R-CNN,更快的R-CNN,Yolo和我没有发现任何能够引导我通过重新培训完全连接的网络来进行区域标记的回购协议。谢谢你为我的问题提供了更多的背景:)