PaddleX
PaddleX copied to clipboard
同一个模型及图片,预测出来会有不同的结果
#加载模型
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未落在目标
麻烦提供下paddle、paddlex版本号 还有模型信息
我也出现了这种问题
使用的paddlex 2.1.0
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 这个问题我已经解决了,你看看在定义验证集的时候,是不是加了数据增强,比如水平垂直翻转,然后生成的模型里就会默认predict的时候也会翻转,就造成了两种结果跳来跳去
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 Predict的时候,除了归一化(Normalize)和Resize,其他增强都不能加,加了你的结果就是跳变的
我问一下,您预测单张时是用的RGB吗
@GuoQuanhao RGB也会有,灰阶度图也会有