玩 Yolo-V3,得到了 bounding box 然后想把它们绘制到图片上,网络的输入时 608 * 608 的,但是测试图片是 602 * 452 的,PIL转tensor好说,直接transforms.Resize([608, 608])
,但是我要绘制的时候也要转换,就有了下面的操作。
output = model.encodePredict(prediction=predict)
image.resize(size=(608, 608))
print(image.size)
draw = ImageDraw.Draw(image)
for b in output:
for i in b:
draw.rectangle([int(i[0]), int(i[1]), int(i[2]), int(i[3])], outline=(0, 0, 255), width=3)
image.show()
明显偏移了很多,而且控制台输出:
根本没有改变,然后我冥冥之中就猜到,这家伙估计跟 PyTorch 差不多,不是 inplace 操作,修改code:
image = image.resize(size=(608, 608))
print(image.size)
draw = ImageDraw.Draw(image)
for b in output:
for i in b:
draw.rectangle([int(i[0]), int(i[1]), int(i[2]), int(i[3])], outline=(0, 0, 255), width=3)
image.show()
其实就是下面这句改了:
image = image.resize(size=(608, 608))
没问题了。