【发布时间】:2019-04-25 18:36:17
【问题描述】:
我正在遵循 tensorflow 对象检测 api 说明并尝试使用 我自己的具有 50 个类的数据集来训练 现有的对象检测模型(“faster_rcnn_resnet101_coco”) 。
所以根据我自己的数据集,我创建了
- TFRecord(分别用于训练、评估和测试)
- labelmap.pbtxt
接下来,我编辑 model.config 只为 model-faster_rcnn-num_classes(90 -> 50(我的类数自己的数据集),train_config-batch_size(1 -> 10),train_config-num_steps(200000 -> 100),train_input_reader-tf_record_input_reader-input_path(到TFRecord所在的路径)和train_input_reader-label_map_path(到labelmap.pbtxt所在的路径)。
最后,我运行命令
python train.py \
--logtostderr \
--pipeline_config_path="PATH WHERE CONFIG FILE RESIDES" \
--train_dir="PATH WHERE MODEL DIRECTORY RESIDES"
我遇到了以下错误:
InvalidArgumentError(参见上文的追溯):ConcatOp:维度 输入应该匹配:shape[0] = [1,890,600,3] vs. shape[1] = [1,766,600,3] [[节点:concat_1 = ConcatV2[N=10,T=DT_FLOAT, Tidx=DT_INT32, _device="/job:localhost/replica:0/task:0/cpu:0"](预处理器/sub, Preprocessor_1/sub, Preprocessor_2/sub, Preprocessor_3/sub, 预处理器_4/sub、预处理器_5/sub、预处理器_6/sub、 预处理器_7/sub、预处理器_8/sub、预处理器_9/sub、 concat_1/axis)]]
看起来像输入图像的尺寸,所以可能是未调整原始图像数据的大小。
但据我所知,模型会自动调整输入图像的大小以进行训练(不是吗?)
然后我被这个问题困住了。
如果有解决方案,我会很感激你的回答。 谢谢。
更新
当我updated my batch_size field from 10 to one(original one)时,好像train without any problem... 但我不明白为什么...
【问题讨论】:
-
查看 repo 的配置文件,根据更快的 rcnn 论文,批量大小为 1。更大的批大小会消耗过多的内存。
-
@Jie.Zhou 这是我的“model.config”文件:pastebin.com/4An9HsPK 正如我上面所说的,一些东西已经改变了
-
我认为代码可能是为单个 one 图像作为输入编写的,因此如果将批量大小更改为大于 1 的 int,则会因某些内部错误而引发错误
-
你的意思是说来自 tensorflow 的“代码”,而不是我自己写的,是为单个图像编写的,因为 Faster-R-CNN 的论文将批次处理为单个图像?
-
这正是我的意思
标签: python tensorflow object-detection