我想用 ChainerCV 训练一个 Faster R-CNN。作为第一个测试,我主要复制了提供的示例,我只更改了数据集对应的行以使用我的自定义数据集。我检查了我的数据集是否通过本教程中描述的所有操作功能齐全。如果我在不更改的情况下运行脚本,一切正常,但是如果我更改batch_size,则会出现错误。我尝试将shared_mem从 100 MB 增加到 1000 MB,但错误并没有消失。设置batch_size=2时出错:Exception in main training loop: all the input array dimensions except for the concatenation axis must match exactlyTraceback (most recent call last): File "/home/cv/anaconda3/envs/chainer/lib/python3.6/site-packages/chainer/training/trainer.py", line 315, in run update() File "/home/cv/anaconda3/envs/chainer/lib/python3.6/site-packages/chainer/training/updaters/standard_updater.py", line 165, in update self.update_core() File "/home/cv/anaconda3/envs/chainer/lib/python3.6/site-packages/chainer/training/updaters/standard_updater.py", line 171, in update_core in_arrays = self.converter(batch, self.device) File "/home/cv/anaconda3/envs/chainer/lib/python3.6/site-packages/chainer/dataset/convert.py", line 134, in concat_examples [example[i] for example in batch], padding[i]))) File "/home/cv/anaconda3/envs/chainer/lib/python3.6/site-packages/chainer/dataset/convert.py", line 164, in _concat_arrays return xp.concatenate([array[None] for array in arrays])Will finalize trainer extensions and updater before reraising the exception.Traceback (most recent call last): File "/home/cv/ChainerCV/faster_rcnn/train.py", line 131, in <module> main() File "/home/cv/ChainerCV/faster_rcnn/train.py", line 126, in main trainer.run() File "/home/cv/anaconda3/envs/chainer/lib/python3.6/site-packages/chainer/training/trainer.py", line 329, in run six.reraise(*sys.exc_info()) File "/home/cv/anaconda3/envs/chainer/lib/python3.6/site-packages/six.py", line 693, in reraise
3 回答
慕尼黑5688855
TA贡献1848条经验 获得超2个赞
当前的 Faster-RCNN 实现不支持多批次训练,但您可以像下面的代码一样重写它以支持它。 https://github.com/knorth55/chainer-light-head-rcnn/blob/master/light_head_rcnn/links/model/light_head_rcnn_train_chain.py
另一种选择是在 ChainerCV 中使用 Faster-RCNN 和 FPN。最新版本的 ChainerCV 具有 Faster-RCNN 和 FPN,支持多批次训练。 https://github.com/chainer/chainercv/blob/master/examples/fpn/train_multi.py
猛跑小猪
TA贡献1858条经验 获得超8个赞
self.converter
假设第一个参数batch
由具有相同形状的输入组成。例如,如果您使用图像数据集,则所有图像都应该具有 (C, H, W) 的形状。
那么,你能检查一下你的数据集返回相同形状的图像吗?如果你的数据集有各种形状的图像,那么使用TransformDataset
像https://github.com/chainer/chainercv/blob/df63b74ef20f9d8c830e266881e577dd05c17442/examples/faster_rcnn/train.py#L86怎么样?
添加回答
举报
0/150
提交
取消