visualize.md 5.3 KB
Newer Older
J
jiangjiajun 已提交
1 2 3 4 5
# 可视化-visualize
PaddleX提供了一系列模型预测和结果分析的可视化函数。

## 目标检测/实例分割预测结果可视化
```
F
FlyingQianMM 已提交
6
paddlex.det.visualize(image, result, threshold=0.5, save_dir='./')
J
jiangjiajun 已提交
7 8 9 10 11 12 13
```
将目标检测/实例分割模型预测得到的Box框和Mask在原图上进行可视化

### 参数
> * **image** (str): 原图文件路径。  
> * **result** (str): 模型预测结果。
> * **threshold**(float): score阈值,将Box置信度低于该阈值的框过滤不进行可视化。默认0.5
F
FlyingQianMM 已提交
14
> * **save_dir**(str): 可视化结果保存路径。若为None,则表示不保存,该函数将可视化的结果以np.ndarray的形式返回;若设为目录路径,则将可视化结果保存至该目录下。默认值为'./'。
J
jiangjiajun 已提交
15 16

### 使用示例
F
FlyingQianMM 已提交
17
> 点击下载如下示例中的[模型](https://bj.bcebos.com/paddlex/models/xiaoduxiong_epoch_12.tar.gz)和[测试图片](https://bj.bcebos.com/paddlex/datasets/xiaoduxiong.jpeg)
J
jiangjiajun 已提交
18 19
```
import paddlex as pdx
F
FlyingQianMM 已提交
20 21 22 23
model = pdx.load_model('xiaoduxiong_epoch_12')
result = model.predict('xiaoduxiong.jpeg')
pdx.det.visualize('xiaoduxiong.jpeg', result, save_dir='./')
# 预测结果保存在./visualize_xiaoduxiong.jpeg
J
jiangjiajun 已提交
24 25
```

F
FlyingQianMM 已提交
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
## 目标检测/实例分割准确率-召回率可视化
```
paddlex.det.draw_pr_curve(eval_details_file=None, gt=None, pred_bbox=None, pred_mask=None, iou_thresh=0.5, save_dir='./')
```
将目标检测/实例分割模型评估结果中各个类别的准确率和召回率的对应关系进行可视化,同时可视化召回率和置信度阈值的对应关系。

### 参数
> * **eval_details_file** (str): 模型评估结果的保存路径,包含真值信息和预测结果。默认值为None。
> * **gt** (list): 数据集的真值信息。默认值为None。
> * **pred_bbox** (list): 模型在数据集上的预测框。默认值为None。
> * **pred_mask** (list): 模型在数据集上的预测mask。默认值为None。
> * **iou_thresh** (float): 判断预测框或预测mask为真阳时的IoU阈值。默认值为0.5。
> * **save_dir** (str): 可视化结果保存路径。默认值为'./'。

**注意:**`eval_details_file`的优先级更高,只要`eval_details_file`不为None,就会从`eval_details_file`提取真值信息和预测结果做分析。当`eval_details_file`为None时,则用`gt``pred_mask``pred_mask`做分析。

### 使用示例
F
FlyingQianMM 已提交
43 44 45 46 47 48 49 50 51 52
点击下载如下示例中的[模型]()和[数据集](https://bj.bcebos.com/paddlex/datasets/insect_det.tar.gz)

> 方式一:分析训练过程中保存的模型文件夹中的评估结果文件`eval_details.json`,例如[模型]()中的`eval_details.json`。
```
import paddlex as pdx
eval_details_file = 'insect_epoch_/eval_details.json'
pdx.det.draw_pr_curve(eval_details_file, save_dir='./insect')
```
> 方式二:分析模型评估函数返回的评估结果。

F
FlyingQianMM 已提交
53 54 55 56 57 58 59 60
```
import os
# 选择使用0号卡
os.environ['CUDA_VISIBLE_DEVICES'] = '0'

from paddlex.det import transforms
import paddlex as pdx

F
FlyingQianMM 已提交
61
model = pdx.load_model('xiaoduxiong_epoch_12')
F
FlyingQianMM 已提交
62 63 64
eval_dataset = pdx.datasets.CocoDetection(
    data_dir='xiaoduxiong_ins_det/JPEGImages',
    ann_file='xiaoduxiong_ins_det/val.json',
F
FlyingQianMM 已提交
65 66
    transforms=model.eval_transforms)
metrics, evaluate_details = model.evaluate(eval_dataset, batch_size=8, return_details=True)
F
FlyingQianMM 已提交
67 68
gt = evaluate_details['gt']
bbox = evaluate_details['bbox']
F
FlyingQianMM 已提交
69
pdx.det.draw_pr_curve(gt=gt, pred_bbox=bbox, save_dir='./insect')
F
FlyingQianMM 已提交
70 71 72 73 74
```

预测框的各个类别的准确率和召回率的对应关系、召回率和置信度阈值的对应关系可视化如下:
![](./images/insect_bbox_pr_curve(iou-0.5).png)

J
jiangjiajun 已提交
75 76
## 语义分割预测结果可视化
```
F
FlyingQianMM 已提交
77
paddlex.seg.visualize(image, result, weight=0.6, save_dir='./')
J
jiangjiajun 已提交
78 79 80 81 82 83
```
将语义分割模型预测得到的Mask在原图上进行可视化

### 参数
> * **image** (str): 原图文件路径。  
> * **result** (str): 模型预测结果。
F
FlyingQianMM 已提交
84 85
> * **weight**(float): mask可视化结果与原图权重因子,weight表示原图的权重。默认0.6。
> * **save_dir**(str): 可视化结果保存路径。若为None,则表示不保存,该函数将可视化的结果以np.ndarray的形式返回;若设为目录路径,则将可视化结果保存至该目录下。默认值为'./'。
J
jiangjiajun 已提交
86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114

### 使用示例
> 点击下载如下示例中的[模型](https://bj.bcebos.com/paddlex/models/cityscape_deeplab.tar.gz)和[测试图片](https://bj.bcebos.com/paddlex/datasets/city.png)
```
import paddlex as pdx
model = pdx.load_model('cityscape_deeplab')
result = model.predict('city.png')
pdx.det.visualize('city.png', result, save_dir='./')
# 预测结果保存在./visualize_city.png
```

## 模型裁剪比例可视化分析
```
paddlex.slim.visualize(model, sensitivities_file)
```
利用此接口,可以分析在不同的`eval_metric_loss`参数下,模型被裁剪的比例情况。可视化结果纵轴为eval_metric_loss参数值,横轴为对应的模型被裁剪的比例

### 参数
>* **model**: 使用PaddleX加载的模型
>* **sensitivities_file**: 模型各参数在验证集上计算得到的参数敏感度信息文件

### 使用示例
> 点击下载示例中的[模型](https://bj.bcebos.com/paddlex/models/vegetables_mobilenet.tar.gz)和[sensitivities_file](https://bj.bcebos.com/paddlex/slim_prune/mobilenetv2.sensitivities)
```
import paddlex as pdx
model = pdx.load_model('vegetables_mobilenet')
pdx.slim.visualize(model, 'mobilenetv2.sensitivities', save_dir='./')
# 可视化结果保存在./sensitivities.png
```