PaddleX icon indicating copy to clipboard operation
PaddleX copied to clipboard

同一个模型及图片,预测出来会有不同的结果

Open CashBai opened this issue 2 years ago • 9 comments

#加载模型
model = pdx.load_model('/home/aistudio/work/Project/P0001/T0002/best_model/')
print(model.predict(img_file = '/home/aistudio/' + 'work/Datasets/D0001/JPEGImages/2021-06-16-10_05_10.jpg'))
print('\r\n')
print(model.predict(img_file = '/home/aistudio/' + 'work/Datasets/D0001/JPEGImages/2021-06-16-10_05_10.jpg'))

[{'category_id': 0, 'category': 'Bubble', 'bbox': [778.1098022460938, 276.94537353515625, 46.76513671875, 62.3902587890625], 'score': 0.9573819041252136}, {'category_id': 0, 'category': 'Bubble', 'bbox': [952.3347778320312, 138.30538940429688, 49.5888671875, 31.9259033203125], 'score': 0.03667362406849861}, {'category_id': 0, 'category': 'Bubble', 'bbox': [776.48046875, 264.70611572265625, 52.344970703125, 81.2935791015625], 'score': 0.03119547665119171}, {'category_id': 0, 'category': 'Bubble', 'bbox': [714.8909301757812, 299.0055847167969, 157.863037109375, 13.70306396484375], 'score': 0.024594170972704887}]

[{'category_id': 0, 'category': 'Bubble', 'bbox': [440.8840637207031, 277.1864318847656, 45.90289306640625, 61.636962890625], 'score': 0.9574265480041504}, {'category_id': 0, 'category': 'Bubble', 'bbox': [393.38616943359375, 298.5380859375, 141.35693359375, 13.687255859375], 'score': 0.022723374888300896}, {'category_id': 0, 'category': 'Bubble', 'bbox': [440.9756164550781, 270.5292663574219, 53.34442138671875, 72.30865478515625], 'score': 0.019564088433980942}]

print输出的结果如上,两种结果出现的概率各50%,其中一个结果标注到图片上观察是正确的,另一种结果标注到图像上后,发现结果是不正确的,bbox未落在目标

CashBai avatar Dec 24 '21 08:12 CashBai

麻烦提供下paddle、paddlex版本号 还有模型信息

FlyingQianMM avatar Dec 27 '21 03:12 FlyingQianMM

我也出现了这种问题

GuoQuanhao avatar Feb 24 '22 07:02 GuoQuanhao

使用的paddlex 2.1.0

GuoQuanhao avatar Feb 24 '22 08:02 GuoQuanhao

import paddlex as pdx

model = pdx.load_model('VOC/output/faster_rcnn_r50_fpn_epoch1/best_model') img_path = '00656.jpg' result = model.predict(img_path) pdx.det.visualize(img_path, result, save_dir='./') print(len(result))

链接:https://pan.baidu.com/s/1o6IrljZIUtw3ohE2VYM_Iw 提取码:wd3v --来自百度网盘超级会员V4的分享

GuoQuanhao avatar Feb 24 '22 08:02 GuoQuanhao

@GuoQuanhao 这个问题我已经解决了,你看看在定义验证集的时候,是不是加了数据增强,比如水平垂直翻转,然后生成的模型里就会默认predict的时候也会翻转,就造成了两种结果跳来跳去

CashBai avatar Feb 24 '22 08:02 CashBai

import paddlex as pdx

model = pdx.load_model('VOC/output/faster_rcnn_r50_fpn_epoch1/best_model')
img_path = 'test_dataset/00656.jpg'
predict_transforms = []
for idx, op in enumerate(model.test_transforms.transforms):
    if(op.__class__.__name__ == 'Normalize'):
        predict_transforms.append(model.test_transforms.transforms[idx])
model.test_transforms.transforms = predict_transforms
result = model.predict(img_path)
pdx.det.visualize(img_path, result, save_dir='./')
print(len(result))

我增加如下代码解决,默认的test_transforms会导入所有的增强方案

GuoQuanhao avatar Feb 24 '22 08:02 GuoQuanhao

@GuoQuanhao Predict的时候,除了归一化(Normalize)和Resize,其他增强都不能加,加了你的结果就是跳变的

CashBai avatar Feb 24 '22 08:02 CashBai

我问一下,您预测单张时是用的RGB吗

GuoQuanhao avatar Feb 24 '22 09:02 GuoQuanhao

@GuoQuanhao RGB也会有,灰阶度图也会有

CashBai avatar Feb 25 '22 02:02 CashBai