我正在尝试使用1个通道的图像而不是3个通道的图像用自己的数据集训练ssd mobilenetv2。
为了读取1个通道图像,我修改了以下脚本:
tf_example_decoder.py
第203行
来自:image = slim_example_decoder.Image(image_key='image/encoded', format_key='image/format', channels=3)
至:
image = slim_example_decoder.Image(image_key='image/encoded', format_key='image/format', channels=1)
第354行
从:
tensor_dict[fields.InputDataFields.image].set_shape([None, None, 3])
至:
tensor_dict[fields.InputDataFields.image].set_shape([None, None, 1])
和
exporter.py
第65行从input_shape = (None, None, None, 3)
到'input_shape =(None,None,None,1)'
第103行从image_tensor = tf.image.decode_image(encoded_image_string_tensor, channels=3)
到image_tensor = tf.image.decode_image(encoded_image_string_tensor, channels=1)
第105行从image_tensor.set_shape((None, None, 3))
到image_tensor.set_shape((None, None, 1))
我使用/ models-master / research / object-detection / legacy / train进行了转换阶段。
我希望生成的文件(model.ckpt-xx.data和model.ckpt-xx.meta)的大小接近原始通道大小生成的文件的1/3。
我的主意错了吗? 我该怎么做才能正确训练我的1通道数据集?
谢谢