Tensorflow 在训练过程中改变空间输入维度

Tensorflow 在训练过程中改变空间输入维度,tensorflow,Tensorflow,我正在tensorflow 2.3.0中训练一个yolov4(完全卷积) 我想在训练期间改变网络的空间输入形状,进一步调整权重以适应不同的尺度 这可能吗 编辑: 我知道darknet的存在,但它受到我在回购协议中使用和实现的一些非常具体的扩充的影响,这就是我明确要求tensorflow的原因 更确切地说我想做什么 我想在yxx1xc上训练几个批次,然后将输入大小更改为yxx2xc,然后再次训练几个批次,以此类推。这是不可能的。在过去,人们针对不同的规模训练了几个网络,但目前最先进的方法是以金字塔

我正在tensorflow 2.3.0中训练一个yolov4(完全卷积)

我想在训练期间改变网络的空间输入形状,进一步调整权重以适应不同的尺度

这可能吗

编辑: 我知道darknet的存在,但它受到我在回购协议中使用和实现的一些非常具体的扩充的影响,这就是我明确要求tensorflow的原因

更确切地说我想做什么


我想在
yxx1xc
上训练几个批次,然后将输入大小更改为
yxx2xc
,然后再次训练几个批次,以此类推。

这是不可能的。在过去,人们针对不同的规模训练了几个网络,但目前最先进的方法是以金字塔为特征

另一个很好的选择是使用扩展卷积,它可以学习具有不同距离的像素之间的长距离依赖关系。您可以连接它们的输出,然后模型将了解哪种距离对于哪种情况是重要的


这是不可能的。在过去,人们针对不同的规模训练了几个网络,但目前最先进的方法是以金字塔为特征

另一个很好的选择是使用扩展卷积,它可以学习具有不同距离的像素之间的长距离依赖关系。您可以连接它们的输出,然后模型将了解哪种距离对于哪种情况是重要的


重要的是要提到您正在使用的TensorFlow存储库。你绝对可以做到这一点。其思想是在单个批次中保持固定的空间输入维度

但更好的方法是使用AlexeyAB的darknet存储库:

只需设置,
random=1
[第1149行]。它将随机训练不同空间维度的网络


您可以做的一件事是,使用随机=1集的AlexeyAB repo开始您的训练,然后将训练好的权重文件带到tensorflow进行微调。

重要的是要提到您正在使用的tensorflow存储库。你绝对可以做到这一点。其思想是在单个批次中保持固定的空间输入维度

但更好的方法是使用AlexeyAB的darknet存储库:

只需设置,
random=1
[第1149行]。它将随机训练不同空间维度的网络


您可以做的一件事是,使用随机=1集的AlexeyAB repo开始训练,然后将训练后的权重文件带到tensorflow进行微调。

我编辑我的问题,我使用tensorflow 2.3.0。是的,我会像在黑暗中一样,保持10-20批的分辨率,然后调整网络大小。我在培训期间使用了一些非常具体的复制粘贴增强,在C语言中实现它们对我来说太重了,因此我选择了yolov4 tensorflow repo。您是否可以解释一下如何在tf2中实现这一点?我编辑了我的问题,我使用的是tensorflow 2.3.0。是的,我会像在黑暗中一样,保持10-20批的分辨率,然后调整网络大小。我在培训期间使用了一些非常具体的复制粘贴增强,在C语言中实现它们对我来说太重了,因此我选择了yolov4 tensorflow repo。您能否介绍一下如何在tf2中实现这一点?yolov4已经使用了功能金字塔,在运行时仍然调整网络的大小在某种程度上与增加图像的规模相同,但以更自然的方式。VOLOv2(或者说v3真的记不起来了)正如@Zabir Al-Nazil在YOLOv4 darknet中所说的,这是可能的,我希望在TF2中也能做到这一点。YOLOv4已经使用了功能金字塔,但在运行时调整网络的大小与增加图像的规模有些相同,但更自然。VOLOv2(或者说v3真的记不起来了),正如@Zabir Al-Nazil在YOLOv4 darknet中所说的,这是可能的,我希望在tf2中也有同样的结果