diff --git a/docs/apis/models/semantic_segmentation.md b/docs/apis/models/semantic_segmentation.md index b46a6273c660a017700c00598515891904fb9dde..84cff9ddeb95571b2f0adaa1e57f6d474d9e6d6f 100755 --- a/docs/apis/models/semantic_segmentation.md +++ b/docs/apis/models/semantic_segmentation.md @@ -138,7 +138,6 @@ overlap_tile_predict(self, img_file, tile_size=[512, 512], pad_size=[64, 64], ba > > > > - **dict**: 包含关键字'label_map'和'score_map', 'label_map'存储预测结果灰度图,像素值表示对应的类别,'score_map'存储各类别的概率,shape=(h, w, num_classes)。 - ## paddlex.seg.UNet ```python diff --git a/docs/change_log.md b/docs/change_log.md index 59a7b78d412272b301368a14defc2adfd8bb6e65..5f3a8232af48ab6e683d19433bc6092a7f7bb5a2 100644 --- a/docs/change_log.md +++ b/docs/change_log.md @@ -2,23 +2,23 @@ **v1.2.0** 2020.09.07 - 模型更新 - > - 新增目标检测模型PPYOLO[详情链接](https://paddlex.readthedocs.io/zh_CN/develop/apis/models/detection.html#paddlex-det-ppyolo) - > - FasterRCNN、MaskRCNN、YOLOv3、DeepLabv3p等模型新增内置COCO数据集预训练模型 - > - 目标检测模型FasterRCNN和MaskRCNN新增backbone HRNet_W18[详情链接](https://paddlex.readthedocs.io/zh_CN/develop/apis/models/detection.html#paddlex-det-fasterrcnn) - > - 语义分割模型DeepLabv3p新增backbone MobileNetV3_large_ssld[详情链接](https://paddlex.readthedocs.io/zh_CN/develop/apis/models/semantic_segmentation.html#paddlex-seg-deeplabv3p) + > - 新增产业最实用目标检测模型PP-YOLO,深入考虑产业应用对精度速度的双重面诉求,COCO数据集精度45.2%,Tesla V100预测速度72.9FPS。[详情链接](https://paddlex.readthedocs.io/zh_CN/develop/apis/models/detection.html#paddlex-det-ppyolo) + > - FasterRCNN、MaskRCNN、YOLOv3、DeepLabv3p等模型新增内置COCO数据集预训练模型,适用于小数据集的微调训练。 + > - 目标检测模型FasterRCNN和MaskRCNN新增backbone HRNet_W18,适用于对细节预测要求较高的应用场景。[详情链接](https://paddlex.readthedocs.io/zh_CN/develop/apis/models/detection.html#paddlex-det-fasterrcnn) + > - 语义分割模型DeepLabv3p新增backbone MobileNetV3_large_ssld,模型体积9.3MB,Cityscapes数据集精度仍保持有73.28%。[详情链接](https://paddlex.readthedocs.io/zh_CN/develop/apis/models/semantic_segmentation.html#paddlex-seg-deeplabv3p) - 模型部署更新 - > - 新增模型通过OpenVINO的部署方案[详情链接](https://paddlex.readthedocs.io/zh_CN/develop/deploy/openvino/index.html) - > - 新增模型在树莓派上的部署方案[详情链接](https://paddlex.readthedocs.io/zh_CN/develop/deploy/raspberry/index.html) - > - 优化PaddleLite Android部署的数据预处理和后处理代码性能 - > - 优化Paddle服务端C++代码部署代码,增加use_mkl等参数,通过mkldnn显著提升模型在CPU上的预测性能 + > - 新增模型通过OpenVINO预测加速的部署方案,CPU上相比mkldnn加速库预测速度提升1.5~2倍左右。[详情链接](https://paddlex.readthedocs.io/zh_CN/develop/deploy/openvino/index.html) + > - 新增模型在树莓派上的部署方案,进一步丰富边缘侧的部署方案。[详情链接](https://paddlex.readthedocs.io/zh_CN/develop/deploy/raspberry/index.html) + > - 优化PaddleLite Android部署的数据预处理和后处理代码性能,预处理速度提升10倍左右,后处理速度提升4倍左右。 + > - 优化Paddle服务端C++代码部署代码,增加use_mkl等参数,CPU上相比未开启mkldnn预测速度提升10~50倍左右。 - 产业案例更新 - > - 新增RGB图像遥感分割案例[详情链接](https://paddlex.readthedocs.io/zh_CN/develop/examples/remote_sensing.html) - > - 新增多通道遥感分割案例[详情链接](https://paddlex.readthedocs.io/zh_CN/develop/examples/multi-channel_remote_sensing/README.html) + > - 新增大尺寸RGB图像遥感分割案例,提供滑动窗口预测接口,不仅能避免显存不足的发生,而且能通过配置重叠程度消除最终预测结果中各窗口拼接处的裂痕感。[详情链接](https://paddlex.readthedocs.io/zh_CN/develop/examples/remote_sensing.html) + > - 新增多通道遥感影像分割案例,打通语义分割任务对任意通道数量的数据分析、模型训练、模型部署全流程。[详情链接](https://paddlex.readthedocs.io/zh_CN/develop/examples/multi-channel_remote_sensing/README.html) - 其它 - > - 新增数据集切分功能,支持通过命令行切分ImageNet、PascalVOC、MSCOCO和语义分割数据集[详情链接](https://paddlex.readthedocs.io/zh_CN/develop/data/format/classification.html#id2) + > - 新增数据集切分功能,支持通过命令行一键切分ImageNet、PascalVOC、MSCOCO和语义分割数据集[详情链接](https://paddlex.readthedocs.io/zh_CN/develop/data/format/classification.html#id2) **v1.1.0** 2020.07.12 diff --git a/examples/remote_sensing/images/visualize_compare.png b/examples/remote_sensing/images/visualize_compare.png new file mode 100644 index 0000000000000000000000000000000000000000..a957a10f302f981523ed704d3a1b84708c5aa357 Binary files /dev/null and b/examples/remote_sensing/images/visualize_compare.png differ diff --git a/paddlex/cv/models/slim/prune_config.py b/paddlex/cv/models/slim/prune_config.py index 6bfe35375f87dfbdbe32b2bdeb6c0bc6cff86706..25ae4efd431e7d75e9b236343e4e5be48977d2d1 100644 --- a/paddlex/cv/models/slim/prune_config.py +++ b/paddlex/cv/models/slim/prune_config.py @@ -308,7 +308,9 @@ def get_prune_params(model): 'conv9_depthwise_weights', 'conv6_expand_weights', 'conv5_se_2_weights', 'conv14_expand_weights', 'conv4_depthwise_weights', 'conv7_expand_weights', - 'conv7_depthwise_weights' + 'conv7_depthwise_weights', 'encoder/aspp0/weights', + 'decoder/merge/weights', 'encoder/image_pool/weights', + 'decoder/weights' ] for param in program.global_block().all_parameters(): if 'weight' not in param.name: diff --git a/paddlex/cv/models/utils/visualize.py b/paddlex/cv/models/utils/visualize.py index 470adba008acddacf6ad77ce02f0bf015c4ece19..e33569ef870a8dbe16dc22edc5447d5c3800968f 100644 --- a/paddlex/cv/models/utils/visualize.py +++ b/paddlex/cv/models/utils/visualize.py @@ -93,7 +93,9 @@ def visualize_segmentation(image, if abs(weight) < 1e-5: vis_result = pseudo_img else: - vis_result = cv2.addWeighted(im, weight, pseudo_img, 1 - weight, 0) + vis_result = cv2.addWeighted(im, weight, + pseudo_img.astype('float32'), 1 - weight, + 0) if save_dir is not None: if not os.path.exists(save_dir): diff --git a/paddlex/deploy.py b/paddlex/deploy.py index b04f46ebf037af0d89e46f3d8e24efdb36a2fb47..cbd78d945c17c923ef840da3c3d4b4f1184f70d5 100644 --- a/paddlex/deploy.py +++ b/paddlex/deploy.py @@ -247,13 +247,16 @@ class Predictor: [output_tensor.copy_to_cpu(), output_tensor_lod]) return output_results - def predict(self, image, topk=1): + def predict(self, image, topk=1, transforms=None): """ 图片预测 Args: image(str|np.ndarray): 图像路径;或者是解码后的排列格式为(H, W, C)且类型为float32且为BGR格式的数组。 - topk(int): 分类预测时使用,表示预测前topk的结果 + topk(int): 分类预测时使用,表示预测前topk的结果。 + transforms (paddlex.cls.transforms): 数据预处理操作。 """ + if transforms is not None: + self.transforms = transforms preprocessed_input = self.preprocess([image]) model_pred = self.raw_predict(preprocessed_input) im_shape = None if 'im_shape' not in preprocessed_input else preprocessed_input[ @@ -269,15 +272,18 @@ class Predictor: return results[0] - def batch_predict(self, image_list, topk=1): + def batch_predict(self, image_list, topk=1, transforms=None): """ 图片预测 Args: image_list(list|tuple): 对列表(或元组)中的图像同时进行预测,列表中的元素可以是图像路径 也可以是解码后的排列格式为(H,W,C)且类型为float32且为BGR格式的数组。 - topk(int): 分类预测时使用,表示预测前topk的结果 + topk(int): 分类预测时使用,表示预测前topk的结果。 + transforms (paddlex.cls.transforms): 数据预处理操作。 """ + if transforms is not None: + self.transforms = transforms preprocessed_input = self.preprocess(image_list, self.thread_pool) model_pred = self.raw_predict(preprocessed_input) im_shape = None if 'im_shape' not in preprocessed_input else preprocessed_input[