我想知道Pytorch的{{3}}库
数据扩充应该在火车数据集中还是在测试数据集中?
我至少应将几张图像放入测试数据集中(我已经使用了测试数据集中2%的图像)
我有21个班级(21人脸),并且具有(vggface2数据集)带有评估模式,这足以用于训练和测试数据集吗?
如何可视化测试数据集中的图像以显示面部是否匹配 我试过了,但是会出现这个错误:
TypeError:图像数据的形状无效(3、160、160)
图像的形状为:(10,3,160,160)
dataiter = iter(test_loader)
images, labels = dataiter.next()
# get predictions
preds = np.squeeze(net(images).data.max(1, keepdim=True)[1].numpy())
images = images.numpy()
# plot the images in the batch, along with predicted and true labels
fig = plt.figure(figsize=(25, 4))
for idx in np.arange(batch_size):
ax = fig.add_subplot(2, batch_size/2, idx+1, xticks=[], yticks=[])
ax.imshow(np.squeeze(images[idx]), cmap='gray')
ax.set_title("{} ({})".format(classes[preds[idx]], classes[labels[idx]]),
color=("green" if preds[idx]==labels[idx] else "red"))
cap = cv.VideoCapture(0)
while True:
ret, frame = cap.read()
frame = cv.resize(frame, None, fx=0.5, fy=0.5, interpolation=cv2.INTER_AREA)
image = predict_draw_bounding_box(frame)
cv.imshow('Output', image)
c = cv.waitKey(1)
if c == 27:
break
cap.release()
cv.destroyAllWindows()
但是我不知道要实现predict_draw_bounding_box
函数吗?
谢谢您的建议
答案 0 :(得分:2)
有很多问题;您可能应该将这些问题分解为多个问题。无论如何,我都会尝试回答一些。
数据扩充通常应在火车数据集上进行 只要。典型的扩充包括随机轮播,调整大小的农作物, 水平翻转,抠图等。所有这些仅在火车上进行。
除此之外,我只能想起频道
归一化是您通常同时应用于两者的唯一增强
培训和测试集。您按通道计算x-x_mean/sigma
用于数据集中的所有图像。
测试数据集中图像的百分比完全是经验值,取决于您实际拥有的图像数量。对于具有百万张图像的超大型数据集,可以使用2%之类的小百分比。但是,如果您的图像数量在上万,上千甚至更少,那么最好将测试集保持在20%左右。
无法理解您的问题。
您的图像的形状为(3,160,160)。这是pytorch的nn.Module系统使用的通道优先语法,但是在matplotlib中绘制RGB图像要求通道具有最后一个维度,即(160,160,3)。如果images
是一批形状为(10,3,160,160)的图像,请执行以下操作:
...
images = images.numpy()
images = images.swapaxes(1,2).swapaxes(2,3)
...
这会将其重塑为(10,160,160,3),而不会损害轴的顺序。
不知道。