gushoubang 6 месяцев назад
Родитель
Сommit
8cd776c284
1 измененных файлов с 36 добавлено и 33 удалено
  1. 36 33
      change_detect copy.py

+ 36 - 33
change_detect copy.py

@@ -19,40 +19,43 @@ from PIL import Image
 # 下面的语句构建的Predictor对象依赖static_models/目录中存储的部署格式模型,并使用GPU进行推理。
 predictor = Predictor("inference_model_change", use_gpu=True)
 
-# 第二步:调用Predictor的predict()方法执行推理。该方法接受的输入参数如下:
-#     img_file: 对于场景分类、图像复原、目标检测和图像分割任务来说,该参数可为单一图像路径,或是解码后的、排列格式为(H, W, C)
-#         且具有float32类型的图像数据(表示为numpy的ndarray形式),或者是一组图像路径或np.ndarray对象构成的列表;对于变化检测
-#         任务来说,该参数可以为图像路径二元组(分别表示前后两个时相影像路径),或是两幅图像组成的二元组,或者是上述两种二元组
-#         之一构成的列表。
-#     topk: 场景分类模型预测时使用,表示选取模型输出概率大小排名前`topk`的类别作为最终结果。默认值为1。
-#     transforms: 对输入数据应用的数据变换算子。若为None,则使用从`model.yml`中读取的算子。默认值为None。
-#     warmup_iters: 预热轮数,用于评估模型推理以及前后处理速度。若大于1,会预先重复执行`warmup_iters`次推理,而后才开始正式的预测及其速度评估。默认值为0。
-#     repeats: 重复次数,用于评估模型推理以及前后处理速度。若大于1,会执行`repeats`次预测并取时间平均值。默认值为1。
-#
-# 下面的语句传入两幅输入影像的路径
-res = predictor.predict(("E:\\big_model\\tuban\\ceshi\\A\\1001.tif", "E:\\big_model\\tuban\\ceshi\\B\\1001.tif"))
-
-# 第三步:解析predict()方法返回的结果。
-#     对于图像分割和变化检测任务而言,predict()方法返回的结果为一个字典或字典构成的列表。字典中的`label_map`键对应的值为类别标签图,对于二值变化检测
-#     任务而言只有0(不变类)或者1(变化类)两种取值;`score_map`键对应的值为类别概率图,对于二值变化检测任务来说一般包含两个通道,第0个通道表示不发生
-#     变化的概率,第1个通道表示发生变化的概率。如果返回的结果是由字典构成的列表,则列表中的第n项与输入的img_file中的第n项对应。
-#
-# 下面的语句从res中解析二值变化图(binary change map)
-cm = res['label_map']
-# 将标签图(cm)转换为图像格式
-change_map_image = Image.fromarray(np.uint8(cm * 255), 'L')
+def start(image1,image2):
+    # 第二步:调用Predictor的predict()方法执行推理。该方法接受的输入参数如下:
+    #     img_file: 对于场景分类、图像复原、目标检测和图像分割任务来说,该参数可为单一图像路径,或是解码后的、排列格式为(H, W, C)
+    #         且具有float32类型的图像数据(表示为numpy的ndarray形式),或者是一组图像路径或np.ndarray对象构成的列表;对于变化检测
+    #         任务来说,该参数可以为图像路径二元组(分别表示前后两个时相影像路径),或是两幅图像组成的二元组,或者是上述两种二元组
+    #         之一构成的列表。
+    #     topk: 场景分类模型预测时使用,表示选取模型输出概率大小排名前`topk`的类别作为最终结果。默认值为1。
+    #     transforms: 对输入数据应用的数据变换算子。若为None,则使用从`model.yml`中读取的算子。默认值为None。
+    #     warmup_iters: 预热轮数,用于评估模型推理以及前后处理速度。若大于1,会预先重复执行`warmup_iters`次推理,而后才开始正式的预测及其速度评估。默认值为0。
+    #     repeats: 重复次数,用于评估模型推理以及前后处理速度。若大于1,会执行`repeats`次预测并取时间平均值。默认值为1。
+    #
+    # 下面的语句传入两幅输入影像的路径
+    res = predictor.predict((image1, image2)):
 
-# 展示变化图
-plt.imshow(change_map_image, cmap='gray')
-plt.axis('off')  # 不显示坐标轴
-plt.show()
+    # 第三步:解析predict()方法返回的结果。
+    #     对于图像分割和变化检测任务而言,predict()方法返回的结果为一个字典或字典构成的列表。字典中的`label_map`键对应的值为类别标签图,对于二值变化检测
+    #     任务而言只有0(不变类)或者1(变化类)两种取值;`score_map`键对应的值为类别概率图,对于二值变化检测任务来说一般包含两个通道,第0个通道表示不发生
+    #     变化的概率,第1个通道表示发生变化的概率。如果返回的结果是由字典构成的列表,则列表中的第n项与输入的img_file中的第n项对应。
+    #
+    # 下面的语句从res中解析二值变化图(binary change map)
+    cm = res['label_map']
+    # 将标签图(cm)转换为图像格式
+    change_map_image = Image.fromarray(np.uint8(cm * 255), 'L')
 
-# 保存变化图
-change_map_image.save(r"predict/change_map1001.png")
+    # # 展示变化图
+    # plt.imshow(change_map_image, cmap='gray')
+    # plt.axis('off')  # 不显示坐标轴
+    # plt.show()
+    # TODO: 保存变化图
+    savePath = 'predict/change_map1001.png'
+    # 保存变化图
+    change_map_image.save(savePath)
 
-# import paddlers as pdrs
+    # import paddlers as pdrs
 
-# predictor = pdrs.deploy.Predictor('./inference_model')
-# result = predictor.predict(img_file='test.jpg',
-#                            warmup_iters=100,
-#                            repeats=100)
+    # predictor = pdrs.deploy.Predictor('./inference_model')
+    # result = predictor.predict(img_file='test.jpg',
+    #                            warmup_iters=100,
+    #                            repeats=100)
+    return savePath