machine-learning - PyTorch Detecto 模型:张量在预训练模型的预测中不兼容
问题描述
尝试训练一个非常简单的模型并使用以下 pytorch 检测器代码进行图像预测:
from detecto import core, utils, visualize
dataset = core.Dataset('images/')
model = core.Model(['rect'])
model.fit(dataset)
modelName = 'model_weights_simpleRect.pth'
model.save(modelName)
image = utils.read_image('simple_image_to_test.jpg')
predictions = model.predict(image)
这导致以下输出:
Epoch 1 of 10
Begin iterating over training dataset
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 20/20 [00:12<00:00, 1.56it/s]
Epoch 2 of 10
Begin iterating over training dataset
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 20/20 [00:11<00:00, 1.80it/s]
Epoch 3 of 10
Begin iterating over training dataset
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 20/20 [00:11<00:00, 1.80it/s]
Epoch 4 of 10
Begin iterating over training dataset
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 20/20 [00:11<00:00, 1.79it/s]
Epoch 5 of 10
Begin iterating over training dataset
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 20/20 [00:11<00:00, 1.79it/s]
Epoch 6 of 10
Begin iterating over training dataset
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 20/20 [00:11<00:00, 1.80it/s]
Epoch 7 of 10
Begin iterating over training dataset
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 20/20 [00:11<00:00, 1.78it/s]
Epoch 8 of 10
Begin iterating over training dataset
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 20/20 [00:11<00:00, 1.80it/s]
Epoch 9 of 10
Begin iterating over training dataset
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 20/20 [00:11<00:00, 1.78it/s]
Epoch 10 of 10
Begin iterating over training dataset
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 20/20 [00:11<00:00, 1.80it/s]
Traceback (most recent call last):
File "train_simpleRect_and_predict.py", line 15, in <module>
predictions = model.predict(image)
File "/home/std/anaconda3/envs/dri/lib/python3.7/site-packages/detecto/core.py", line 338, in predict
preds = self._get_raw_predictions(images)
File "/home/std/anaconda3/envs/dri/lib/python3.7/site-packages/detecto/core.py", line 294, in _get_raw_predictions
preds = self._model(images)
File "/home/std/anaconda3/envs/dri/lib/python3.7/site-packages/torch/nn/modules/module.py", line 541, in __call__
result = self.forward(*input, **kwargs)
File "/home/std/anaconda3/envs/dri/lib/python3.7/site-packages/torchvision/models/detection/generalized_rcnn.py", line 52, in forward
detections, detector_losses = self.roi_heads(features, proposals, images.image_sizes, targets)
File "/home/std/anaconda3/envs/dri/lib/python3.7/site-packages/torch/nn/modules/module.py", line 541, in __call__
result = self.forward(*input, **kwargs)
File "/home/std/anaconda3/envs/dri/lib/python3.7/site-packages/torchvision/models/detection/roi_heads.py", line 550, in forward
boxes, scores, labels = self.postprocess_detections(class_logits, box_regression, proposals, image_shapes)
File "/home/std/anaconda3/envs/dri/lib/python3.7/site-packages/torchvision/models/detection/roi_heads.py", line 474, in postprocess_detections
pred_boxes = self.box_coder.decode(box_regression, proposals)
File "/home/std/anaconda3/envs/dri/lib/python3.7/site-packages/torchvision/models/detection/_utils.py", line 168, in decode
rel_codes.reshape(sum(boxes_per_image), -1), concat_boxes
RuntimeError: cannot reshape tensor of 0 elements into shape [0, -1] because the unspecified dimension size -1 can be any value and is ambiguous
如何获得有关模型尺寸的更详细信息,模型中张量不兼容的确切位置以及如何解决?
添加。信息:我对其他数据使用了相同的代码并且它有效。
谢谢!
解决方案
问题是 xml 描述文件中的图像尺寸错误,对应于每个图像。
我修复了 xml 文件,并且错误不再发生。
推荐阅读
- node.js - 由于 SSH 会话结束而退出的应用程序在 Node.js 中发出什么事件?(需要清理GPIO)
- java - 使用反射方法设置 EditText 光标颜色
- python-3.x - 如何为多个子图绘制两个交替的 x 比例和两个交替的 y 比例?
- python - 大平面平行板电容器内的简单摆
- matlab - MatLab 循环显示来自向量和字符串数组的信息
- python-2.7 - 查找到树中任何节点的距离
- laravel - 通过 JWTAuth 设置用户rainlab 上次登录时间戳
- modx - 块不保存自闭合标签。有什么办法解决吗?
- css - 绝对定位元素扩展父元素
- regex - How can I remove the email in the end of the url