遥感图像实例分割

Zero-shot Instance Segmentation of Remote Sensing Images

本代码基于以下材料:

这段代码用来带领大家实现实例分割。以下代码首先采用Zero-shot的方式,即在不训练的情况下,利用现有的checkpoint,实现实例分割。

接下来,大家采用给定数据集,对模型进行训练,提高模型的效果

有问题联系助教刘泽平

研究准备

步骤1:下载代码并解压

[ ]:
# 下载代码并解压
!pip install -U --no-cache-dir gdown --pre
!gdown --id 15VcT-ORrcnxgc4K0HSOHrV_2KAX8sect --output "code.zip"
!unzip code.zip
Requirement already satisfied: gdown in /usr/local/lib/python3.10/dist-packages (4.7.3)
Collecting gdown
  Downloading gdown-5.1.0-py3-none-any.whl (17 kB)
Requirement already satisfied: beautifulsoup4 in /usr/local/lib/python3.10/dist-packages (from gdown) (4.12.3)
Requirement already satisfied: filelock in /usr/local/lib/python3.10/dist-packages (from gdown) (3.13.1)
Requirement already satisfied: requests[socks] in /usr/local/lib/python3.10/dist-packages (from gdown) (2.31.0)
Requirement already satisfied: tqdm in /usr/local/lib/python3.10/dist-packages (from gdown) (4.66.2)
Requirement already satisfied: soupsieve>1.2 in /usr/local/lib/python3.10/dist-packages (from beautifulsoup4->gdown) (2.5)
Requirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib/python3.10/dist-packages (from requests[socks]->gdown) (3.3.2)
Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.10/dist-packages (from requests[socks]->gdown) (3.6)
Requirement already satisfied: urllib3<3,>=1.21.1 in /usr/local/lib/python3.10/dist-packages (from requests[socks]->gdown) (2.0.7)
Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.10/dist-packages (from requests[socks]->gdown) (2024.2.2)
Requirement already satisfied: PySocks!=1.5.7,>=1.5.6 in /usr/local/lib/python3.10/dist-packages (from requests[socks]->gdown) (1.7.1)
Installing collected packages: gdown
  Attempting uninstall: gdown
    Found existing installation: gdown 4.7.3
    Uninstalling gdown-4.7.3:
      Successfully uninstalled gdown-4.7.3
Successfully installed gdown-5.1.0
/usr/local/lib/python3.10/dist-packages/gdown/__main__.py:132: FutureWarning: Option `--id` was deprecated in version 4.3.1 and will be removed in 5.0. You don't need to pass it anymore to use a file ID.
  warnings.warn(
Downloading...
From (original): https://drive.google.com/uc?id=15VcT-ORrcnxgc4K0HSOHrV_2KAX8sect
From (redirected): https://drive.google.com/uc?id=15VcT-ORrcnxgc4K0HSOHrV_2KAX8sect&confirm=t&uuid=ea7d086e-bb3b-4f93-ae22-f3bf827a86c0
To: /content/code.zip
100% 851M/851M [00:14<00:00, 59.1MB/s]
Archive:  code.zip
   creating: Polygonization-by-Frame-Field-Learning-master/
  inflating: Polygonization-by-Frame-Field-Learning-master/.gitmodules
   creating: Polygonization-by-Frame-Field-Learning-master/.idea/
  inflating: Polygonization-by-Frame-Field-Learning-master/.idea/.gitignore
  inflating: Polygonization-by-Frame-Field-Learning-master/.idea/deployment.xml
   creating: Polygonization-by-Frame-Field-Learning-master/.idea/inspectionProfiles/
  inflating: Polygonization-by-Frame-Field-Learning-master/.idea/inspectionProfiles/profiles_settings.xml
  inflating: Polygonization-by-Frame-Field-Learning-master/.idea/inspectionProfiles/Project_Default.xml
  inflating: Polygonization-by-Frame-Field-Learning-master/.idea/modules.xml
  inflating: Polygonization-by-Frame-Field-Learning-master/.idea/Polygonization-by-Frame-Field-Learning-master.iml
  inflating: Polygonization-by-Frame-Field-Learning-master/.idea/workspace.xml
  inflating: Polygonization-by-Frame-Field-Learning-master/backbone.py
  inflating: Polygonization-by-Frame-Field-Learning-master/child_processes.py
   creating: Polygonization-by-Frame-Field-Learning-master/configs/
  inflating: Polygonization-by-Frame-Field-Learning-master/configs/backbone_params.deeplab101.json
  inflating: Polygonization-by-Frame-Field-Learning-master/configs/backbone_params.deeplab50.json
  inflating: Polygonization-by-Frame-Field-Learning-master/configs/backbone_params.fcn101.json
  inflating: Polygonization-by-Frame-Field-Learning-master/configs/backbone_params.fcn50.json
  inflating: Polygonization-by-Frame-Field-Learning-master/configs/backbone_params.ictnet.json
  inflating: Polygonization-by-Frame-Field-Learning-master/configs/backbone_params.unet16.json
  inflating: Polygonization-by-Frame-Field-Learning-master/configs/backbone_params.unet_resnet101.json
  inflating: Polygonization-by-Frame-Field-Learning-master/configs/config.defaults.inria_dataset_osm_aligned.json
  inflating: Polygonization-by-Frame-Field-Learning-master/configs/config.defaults.inria_dataset_osm_mask_only.json
  inflating: Polygonization-by-Frame-Field-Learning-master/configs/config.defaults.inria_dataset_polygonized.json
  inflating: Polygonization-by-Frame-Field-Learning-master/configs/config.defaults.inria_dataset_polygonized_256.json
  inflating: Polygonization-by-Frame-Field-Learning-master/configs/config.defaults.json
  inflating: Polygonization-by-Frame-Field-Learning-master/configs/config.defaults.luxcarta_dataset.json
  inflating: Polygonization-by-Frame-Field-Learning-master/configs/config.defaults.mapping_dataset.json
  inflating: Polygonization-by-Frame-Field-Learning-master/configs/config.defaults.xview2_dataset.json
  inflating: Polygonization-by-Frame-Field-Learning-master/configs/config.inria_dataset_osm_aligned.unet_resnet101_pretrained.field_off.json
  inflating: Polygonization-by-Frame-Field-Learning-master/configs/config.inria_dataset_osm_aligned.unet_resnet101_pretrained.json
  inflating: Polygonization-by-Frame-Field-Learning-master/configs/config.inria_dataset_osm_mask_only.unet16.json
  inflating: Polygonization-by-Frame-Field-Learning-master/configs/config.inria_dataset_polygonized.ictnet.leaderboard.json
  inflating: Polygonization-by-Frame-Field-Learning-master/configs/config.inria_dataset_polygonized.ictnet.rmsprop.leaderboard.field_off.json
  inflating: Polygonization-by-Frame-Field-Learning-master/configs/config.inria_dataset_polygonized.ictnet.rmsprop.leaderboard.json
  inflating: Polygonization-by-Frame-Field-Learning-master/configs/config.inria_dataset_polygonized.unet_resnet101.leaderboard.json
  inflating: Polygonization-by-Frame-Field-Learning-master/configs/config.inria_dataset_polygonized.unet_resnet101_pretrained.field_off.json
  inflating: Polygonization-by-Frame-Field-Learning-master/configs/config.inria_dataset_polygonized.unet_resnet101_pretrained.json
  inflating: Polygonization-by-Frame-Field-Learning-master/configs/config.inria_dataset_polygonized.unet_resnet101_pretrained.leaderboard.field_off.json
  inflating: Polygonization-by-Frame-Field-Learning-master/configs/config.inria_dataset_polygonized.unet_resnet101_pretrained.leaderboard.json
  inflating: Polygonization-by-Frame-Field-Learning-master/configs/config.inria_dataset_polygonized_small.unet_resnet101_pretrained.json
  inflating: Polygonization-by-Frame-Field-Learning-master/configs/config.inria_dataset_polygonized_small.unet_resnet101_pretrained.no_aug.json
  inflating: Polygonization-by-Frame-Field-Learning-master/configs/config.inria_dataset_small.unet16.json
  inflating: Polygonization-by-Frame-Field-Learning-master/configs/config.luxcarta_dataset.unet16.field_off.json
  inflating: Polygonization-by-Frame-Field-Learning-master/configs/config.luxcarta_dataset.unet16.json
  inflating: Polygonization-by-Frame-Field-Learning-master/configs/config.mapping_dataset.asip.json
  inflating: Polygonization-by-Frame-Field-Learning-master/configs/config.mapping_dataset.deeplab101.field_off.json
  inflating: Polygonization-by-Frame-Field-Learning-master/configs/config.mapping_dataset.deeplab101.field_off.train_val.json
  inflating: Polygonization-by-Frame-Field-Learning-master/configs/config.mapping_dataset.deeplab101.json
  inflating: Polygonization-by-Frame-Field-Learning-master/configs/config.mapping_dataset.deeplab101.train_val.json
  inflating: Polygonization-by-Frame-Field-Learning-master/configs/config.mapping_dataset.fcn101.json
  inflating: Polygonization-by-Frame-Field-Learning-master/configs/config.mapping_dataset.fcn50.json
  inflating: Polygonization-by-Frame-Field-Learning-master/configs/config.mapping_dataset.open_solution.json
  inflating: Polygonization-by-Frame-Field-Learning-master/configs/config.mapping_dataset.open_solution_full.json
  inflating: Polygonization-by-Frame-Field-Learning-master/configs/config.mapping_dataset.polymapper.json
  inflating: Polygonization-by-Frame-Field-Learning-master/configs/config.mapping_dataset.unet16.coupling_losses_0.4.json
  inflating: Polygonization-by-Frame-Field-Learning-master/configs/config.mapping_dataset.unet16.coupling_losses_off.json
  inflating: Polygonization-by-Frame-Field-Learning-master/configs/config.mapping_dataset.unet16.coupling_losses_off.train_val.json
  inflating: Polygonization-by-Frame-Field-Learning-master/configs/config.mapping_dataset.unet16.field_off.json
  inflating: Polygonization-by-Frame-Field-Learning-master/configs/config.mapping_dataset.unet16.field_off.train_val.json
  inflating: Polygonization-by-Frame-Field-Learning-master/configs/config.mapping_dataset.unet16.json
  inflating: Polygonization-by-Frame-Field-Learning-master/configs/config.mapping_dataset.unet16.train_val.json
  inflating: Polygonization-by-Frame-Field-Learning-master/configs/config.mapping_dataset.unet_resnet101.json
  inflating: Polygonization-by-Frame-Field-Learning-master/configs/config.mapping_dataset.unet_resnet101_pretrained.align90_off.train_val.json
  inflating: Polygonization-by-Frame-Field-Learning-master/configs/config.mapping_dataset.unet_resnet101_pretrained.edge_int_off.train_val.json
  inflating: Polygonization-by-Frame-Field-Learning-master/configs/config.mapping_dataset.unet_resnet101_pretrained.field_off.json
  inflating: Polygonization-by-Frame-Field-Learning-master/configs/config.mapping_dataset.unet_resnet101_pretrained.field_off.train_val.json
  inflating: Polygonization-by-Frame-Field-Learning-master/configs/config.mapping_dataset.unet_resnet101_pretrained.json
  inflating: Polygonization-by-Frame-Field-Learning-master/configs/config.mapping_dataset.unet_resnet101_pretrained.seg_framefield_off.train_val.json
  inflating: Polygonization-by-Frame-Field-Learning-master/configs/config.mapping_dataset.unet_resnet101_pretrained.smooth_off.train_val.json
  inflating: Polygonization-by-Frame-Field-Learning-master/configs/config.mapping_dataset.unet_resnet101_pretrained.train_val.json
  inflating: Polygonization-by-Frame-Field-Learning-master/configs/config.mapping_dataset.zorzi.json
  inflating: Polygonization-by-Frame-Field-Learning-master/configs/config.mapping_dataset_small.deeplab101.json
  inflating: Polygonization-by-Frame-Field-Learning-master/configs/config.mapping_dataset_small.unet16.json
  inflating: Polygonization-by-Frame-Field-Learning-master/configs/config.mapping_dataset_small.unet_resnet101.json
  inflating: Polygonization-by-Frame-Field-Learning-master/configs/config.mapping_dataset_small.unet_resnet101_pretrained.json
  inflating: Polygonization-by-Frame-Field-Learning-master/configs/config.segbuildings_dataset.deeplab101.dev.json
  inflating: Polygonization-by-Frame-Field-Learning-master/configs/config.segbuildings_dataset.deeplab50.dev.json
  inflating: Polygonization-by-Frame-Field-Learning-master/configs/config.segbuildings_dataset.dev.json
  inflating: Polygonization-by-Frame-Field-Learning-master/configs/config.segbuildings_dataset.unet16.json
  inflating: Polygonization-by-Frame-Field-Learning-master/configs/config.segbuildings_dataset.unet_resnet.dev.json
  inflating: Polygonization-by-Frame-Field-Learning-master/configs/config.xview2_dataset.unet_resnet101_pretrained.json
  inflating: Polygonization-by-Frame-Field-Learning-master/configs/config.xview2_dataset_small.unet_resnet101_pretrained.json
  inflating: Polygonization-by-Frame-Field-Learning-master/configs/dataset_params.inria_dataset.json
  inflating: Polygonization-by-Frame-Field-Learning-master/configs/dataset_params.inria_dataset_ori_gt.json
  inflating: Polygonization-by-Frame-Field-Learning-master/configs/dataset_params.inria_dataset_osm_aligned.json
  inflating: Polygonization-by-Frame-Field-Learning-master/configs/dataset_params.inria_dataset_osm_mask_only.json
  inflating: Polygonization-by-Frame-Field-Learning-master/configs/dataset_params.inria_dataset_polygonized.json
  inflating: Polygonization-by-Frame-Field-Learning-master/configs/dataset_params.inria_dataset_polygonized_256.json
  inflating: Polygonization-by-Frame-Field-Learning-master/configs/dataset_params.luxcarta_dataset.json
  inflating: Polygonization-by-Frame-Field-Learning-master/configs/dataset_params.mapping_dataset.json
  inflating: Polygonization-by-Frame-Field-Learning-master/configs/dataset_params.xview2_dataset.json
  inflating: Polygonization-by-Frame-Field-Learning-master/configs/eval_params.defaults.json
  inflating: Polygonization-by-Frame-Field-Learning-master/configs/eval_params.inria_dataset.json
  inflating: Polygonization-by-Frame-Field-Learning-master/configs/eval_params.luxcarta_dataset.json
  inflating: Polygonization-by-Frame-Field-Learning-master/configs/eval_params.mapping_dataset.json
  inflating: Polygonization-by-Frame-Field-Learning-master/configs/eval_params.segbuildings_dataset.json
  inflating: Polygonization-by-Frame-Field-Learning-master/configs/eval_params.xview2_dataset.json
  inflating: Polygonization-by-Frame-Field-Learning-master/configs/loss_params.json
  inflating: Polygonization-by-Frame-Field-Learning-master/configs/optim_params.json
  inflating: Polygonization-by-Frame-Field-Learning-master/configs/polygonize_params.json
  inflating: Polygonization-by-Frame-Field-Learning-master/configs/README.md
   creating: Polygonization-by-Frame-Field-Learning-master/data/
  inflating: Polygonization-by-Frame-Field-Learning-master/data/austin1.tif
  inflating: Polygonization-by-Frame-Field-Learning-master/data/austin1.tif.ovr
  inflating: Polygonization-by-Frame-Field-Learning-master/data/austin1_WGS84.tfw
  inflating: Polygonization-by-Frame-Field-Learning-master/data/austin1_WGS84.tif
  inflating: Polygonization-by-Frame-Field-Learning-master/data/austin1_WGS84.tif.aux.xml
  inflating: Polygonization-by-Frame-Field-Learning-master/data/austin1_WGS84.tif.ovr
  inflating: Polygonization-by-Frame-Field-Learning-master/data/austin1_WGS84.tif.xml
  inflating: Polygonization-by-Frame-Field-Learning-master/dataset_folds.py
   creating: Polygonization-by-Frame-Field-Learning-master/docker/
  inflating: Polygonization-by-Frame-Field-Learning-master/docker/build.sh
  inflating: Polygonization-by-Frame-Field-Learning-master/docker/Dockerfile
  inflating: Polygonization-by-Frame-Field-Learning-master/docker/README.md
  inflating: Polygonization-by-Frame-Field-Learning-master/docker/start_jupyter.sh
  inflating: Polygonization-by-Frame-Field-Learning-master/docker_requirements.txt
  inflating: Polygonization-by-Frame-Field-Learning-master/environment.yml
  inflating: Polygonization-by-Frame-Field-Learning-master/eval_coco.py
   creating: Polygonization-by-Frame-Field-Learning-master/frame_field_learning/
  inflating: Polygonization-by-Frame-Field-Learning-master/frame_field_learning/data_transforms.py
  inflating: Polygonization-by-Frame-Field-Learning-master/frame_field_learning/evaluate.py
  inflating: Polygonization-by-Frame-Field-Learning-master/frame_field_learning/evaluator.py
  inflating: Polygonization-by-Frame-Field-Learning-master/frame_field_learning/frame_field_utils.py
  inflating: Polygonization-by-Frame-Field-Learning-master/frame_field_learning/ictnet.py
  inflating: Polygonization-by-Frame-Field-Learning-master/frame_field_learning/inference.py
  inflating: Polygonization-by-Frame-Field-Learning-master/frame_field_learning/inference_from_filepath.py
  inflating: Polygonization-by-Frame-Field-Learning-master/frame_field_learning/local_utils.py
  inflating: Polygonization-by-Frame-Field-Learning-master/frame_field_learning/losses.py
  inflating: Polygonization-by-Frame-Field-Learning-master/frame_field_learning/measures.py
  inflating: Polygonization-by-Frame-Field-Learning-master/frame_field_learning/model.py
  inflating: Polygonization-by-Frame-Field-Learning-master/frame_field_learning/plot_utils.py
  inflating: Polygonization-by-Frame-Field-Learning-master/frame_field_learning/polygonize.py
  inflating: Polygonization-by-Frame-Field-Learning-master/frame_field_learning/polygonize_acm.py
  inflating: Polygonization-by-Frame-Field-Learning-master/frame_field_learning/polygonize_asm.py
  inflating: Polygonization-by-Frame-Field-Learning-master/frame_field_learning/polygonize_simple.py
  inflating: Polygonization-by-Frame-Field-Learning-master/frame_field_learning/polygonize_utils.py
  inflating: Polygonization-by-Frame-Field-Learning-master/frame_field_learning/README.md
   creating: Polygonization-by-Frame-Field-Learning-master/frame_field_learning/runs/
   creating: Polygonization-by-Frame-Field-Learning-master/frame_field_learning/runs/inria_dataset_polygonized.unet_resnet101_pretrained.leaderboard _ 2020-06-02 07_57_31/
  inflating: Polygonization-by-Frame-Field-Learning-master/frame_field_learning/runs/inria_dataset_polygonized.unet_resnet101_pretrained.leaderboard _ 2020-06-02 07_57_31/args.json
   creating: Polygonization-by-Frame-Field-Learning-master/frame_field_learning/runs/inria_dataset_polygonized.unet_resnet101_pretrained.leaderboard _ 2020-06-02 07_57_31/checkpoints/
  inflating: Polygonization-by-Frame-Field-Learning-master/frame_field_learning/runs/inria_dataset_polygonized.unet_resnet101_pretrained.leaderboard _ 2020-06-02 07_57_31/checkpoints/checkpoint.best_val.epoch_000234.tar
  inflating: Polygonization-by-Frame-Field-Learning-master/frame_field_learning/runs/inria_dataset_polygonized.unet_resnet101_pretrained.leaderboard _ 2020-06-02 07_57_31/config.json
  inflating: Polygonization-by-Frame-Field-Learning-master/frame_field_learning/save_utils.py
  inflating: Polygonization-by-Frame-Field-Learning-master/frame_field_learning/train.py
  inflating: Polygonization-by-Frame-Field-Learning-master/frame_field_learning/trainer.py
  inflating: Polygonization-by-Frame-Field-Learning-master/frame_field_learning/tta_utils.py
  inflating: Polygonization-by-Frame-Field-Learning-master/frame_field_learning/unet.py
  inflating: Polygonization-by-Frame-Field-Learning-master/frame_field_learning/unet_resnet.py
   creating: Polygonization-by-Frame-Field-Learning-master/images/
  inflating: Polygonization-by-Frame-Field-Learning-master/images/frame_field_sample.png
  inflating: Polygonization-by-Frame-Field-Learning-master/images/model_training.png
  inflating: Polygonization-by-Frame-Field-Learning-master/images/schematic_polygonization.png
  inflating: Polygonization-by-Frame-Field-Learning-master/LICENSE.txt
   creating: Polygonization-by-Frame-Field-Learning-master/lydorn_utils/
  inflating: Polygonization-by-Frame-Field-Learning-master/lydorn_utils/async_utils.py
  inflating: Polygonization-by-Frame-Field-Learning-master/lydorn_utils/geo_utils.py
  inflating: Polygonization-by-Frame-Field-Learning-master/lydorn_utils/image_utils.py
  inflating: Polygonization-by-Frame-Field-Learning-master/lydorn_utils/math_utils.py
  inflating: Polygonization-by-Frame-Field-Learning-master/lydorn_utils/ogr2ogr.py
  inflating: Polygonization-by-Frame-Field-Learning-master/lydorn_utils/polygon_utils.py
  inflating: Polygonization-by-Frame-Field-Learning-master/lydorn_utils/print_utils.py
  inflating: Polygonization-by-Frame-Field-Learning-master/lydorn_utils/python_utils.py
  inflating: Polygonization-by-Frame-Field-Learning-master/lydorn_utils/run_utils.py
 extracting: Polygonization-by-Frame-Field-Learning-master/lydorn_utils/__init__.py
  inflating: Polygonization-by-Frame-Field-Learning-master/main.py
   creating: Polygonization-by-Frame-Field-Learning-master/paper/
  inflating: Polygonization-by-Frame-Field-Learning-master/paper/convert_stats_to_latex.py
  inflating: Polygonization-by-Frame-Field-Learning-master/paper/plot_complexity_fidelity.py
  inflating: Polygonization-by-Frame-Field-Learning-master/paper/plot_contour_angle_hist.py
  inflating: Polygonization-by-Frame-Field-Learning-master/paper/plot_contour_metrics.py
  inflating: Polygonization-by-Frame-Field-Learning-master/paper/README.md
  inflating: Polygonization-by-Frame-Field-Learning-master/paper/rounded_corners.py
  inflating: Polygonization-by-Frame-Field-Learning-master/paper/show_result_image.py
  inflating: Polygonization-by-Frame-Field-Learning-master/paper/vectorization_ambiguities.py
  inflating: Polygonization-by-Frame-Field-Learning-master/README.md
  inflating: Polygonization-by-Frame-Field-Learning-master/requirements.txt
   creating: Polygonization-by-Frame-Field-Learning-master/scripts/
  inflating: Polygonization-by-Frame-Field-Learning-master/scripts/clean_coco.py
  inflating: Polygonization-by-Frame-Field-Learning-master/scripts/convert_seg_single_channel.py
  inflating: Polygonization-by-Frame-Field-Learning-master/scripts/eval_shapefiles.py
  inflating: Polygonization-by-Frame-Field-Learning-master/scripts/masks_to_json.py
  inflating: Polygonization-by-Frame-Field-Learning-master/scripts/plot_framefield.py
  inflating: Polygonization-by-Frame-Field-Learning-master/scripts/ply_to_json.py
  inflating: Polygonization-by-Frame-Field-Learning-master/scripts/polygonize_coco.py
  inflating: Polygonization-by-Frame-Field-Learning-master/scripts/polygonize_mask.py
  inflating: Polygonization-by-Frame-Field-Learning-master/scripts/README.md
  inflating: Polygonization-by-Frame-Field-Learning-master/scripts/shp_to_json.py
  inflating: Polygonization-by-Frame-Field-Learning-master/scripts/txt_to_json.py
  inflating: Polygonization-by-Frame-Field-Learning-master/setup.py
  inflating: Polygonization-by-Frame-Field-Learning-master/setup.sh
   creating: Polygonization-by-Frame-Field-Learning-master/singularity/
  inflating: Polygonization-by-Frame-Field-Learning-master/singularity/README.md
  inflating: Polygonization-by-Frame-Field-Learning-master/singularity/Singularity
  inflating: Polygonization-by-Frame-Field-Learning-master/singularity.sh
  inflating: Polygonization-by-Frame-Field-Learning-master/SUBMODULES.md
   creating: Polygonization-by-Frame-Field-Learning-master/torch_lydorn/
   creating: Polygonization-by-Frame-Field-Learning-master/torch_lydorn/kornia/
   creating: Polygonization-by-Frame-Field-Learning-master/torch_lydorn/kornia/augmentation/
  inflating: Polygonization-by-Frame-Field-Learning-master/torch_lydorn/kornia/augmentation/augmentations.py
 extracting: Polygonization-by-Frame-Field-Learning-master/torch_lydorn/kornia/augmentation/__init__.py
   creating: Polygonization-by-Frame-Field-Learning-master/torch_lydorn/kornia/filters/
  inflating: Polygonization-by-Frame-Field-Learning-master/torch_lydorn/kornia/filters/kernels.py
  inflating: Polygonization-by-Frame-Field-Learning-master/torch_lydorn/kornia/filters/sobel.py
  inflating: Polygonization-by-Frame-Field-Learning-master/torch_lydorn/kornia/filters/__init__.py
   creating: Polygonization-by-Frame-Field-Learning-master/torch_lydorn/kornia/geometry/
   creating: Polygonization-by-Frame-Field-Learning-master/torch_lydorn/kornia/geometry/transform/
  inflating: Polygonization-by-Frame-Field-Learning-master/torch_lydorn/kornia/geometry/transform/imgwarp.py
 extracting: Polygonization-by-Frame-Field-Learning-master/torch_lydorn/kornia/geometry/transform/__init__.py
 extracting: Polygonization-by-Frame-Field-Learning-master/torch_lydorn/kornia/geometry/__init__.py
  inflating: Polygonization-by-Frame-Field-Learning-master/torch_lydorn/kornia/__init__.py
   creating: Polygonization-by-Frame-Field-Learning-master/torch_lydorn/torch/
   creating: Polygonization-by-Frame-Field-Learning-master/torch_lydorn/torch/nn/
  inflating: Polygonization-by-Frame-Field-Learning-master/torch_lydorn/torch/nn/functionnal.py
   creating: Polygonization-by-Frame-Field-Learning-master/torch_lydorn/torch/utils/
  inflating: Polygonization-by-Frame-Field-Learning-master/torch_lydorn/torch/utils/complex.py
   creating: Polygonization-by-Frame-Field-Learning-master/torch_lydorn/torch/utils/data/
  inflating: Polygonization-by-Frame-Field-Learning-master/torch_lydorn/torch/utils/data/dataset.py
  inflating: Polygonization-by-Frame-Field-Learning-master/torch_lydorn/torch/utils/data/makedirs.py
  inflating: Polygonization-by-Frame-Field-Learning-master/torch_lydorn/torch/utils/data/__init__.py
   creating: Polygonization-by-Frame-Field-Learning-master/torch_lydorn/torchvision/
   creating: Polygonization-by-Frame-Field-Learning-master/torch_lydorn/torchvision/datasets/
  inflating: Polygonization-by-Frame-Field-Learning-master/torch_lydorn/torchvision/datasets/config.luxcarta_dataset.json
  inflating: Polygonization-by-Frame-Field-Learning-master/torch_lydorn/torchvision/datasets/inria_aerial.py
  inflating: Polygonization-by-Frame-Field-Learning-master/torch_lydorn/torchvision/datasets/luxcarta_buildings.py
  inflating: Polygonization-by-Frame-Field-Learning-master/torch_lydorn/torchvision/datasets/mapping_challenge.py
  inflating: Polygonization-by-Frame-Field-Learning-master/torch_lydorn/torchvision/datasets/open_cities_competition.py
  inflating: Polygonization-by-Frame-Field-Learning-master/torch_lydorn/torchvision/datasets/utils.py
  inflating: Polygonization-by-Frame-Field-Learning-master/torch_lydorn/torchvision/datasets/xview2_dataset.py
  inflating: Polygonization-by-Frame-Field-Learning-master/torch_lydorn/torchvision/datasets/__init__.py
   creating: Polygonization-by-Frame-Field-Learning-master/torch_lydorn/torchvision/transforms/
  inflating: Polygonization-by-Frame-Field-Learning-master/torch_lydorn/torchvision/transforms/angle_field_init.py
  inflating: Polygonization-by-Frame-Field-Learning-master/torch_lydorn/torchvision/transforms/approximate_polygon.py
  inflating: Polygonization-by-Frame-Field-Learning-master/torch_lydorn/torchvision/transforms/filter_empty_polygons.py
  inflating: Polygonization-by-Frame-Field-Learning-master/torch_lydorn/torchvision/transforms/filter_poly_vertex_count.py
  inflating: Polygonization-by-Frame-Field-Learning-master/torch_lydorn/torchvision/transforms/functional.py
  inflating: Polygonization-by-Frame-Field-Learning-master/torch_lydorn/torchvision/transforms/keep_keys.py
  inflating: Polygonization-by-Frame-Field-Learning-master/torch_lydorn/torchvision/transforms/map.py
  inflating: Polygonization-by-Frame-Field-Learning-master/torch_lydorn/torchvision/transforms/rasterize.py
  inflating: Polygonization-by-Frame-Field-Learning-master/torch_lydorn/torchvision/transforms/remove_doubles.py
  inflating: Polygonization-by-Frame-Field-Learning-master/torch_lydorn/torchvision/transforms/remove_keys.py
  inflating: Polygonization-by-Frame-Field-Learning-master/torch_lydorn/torchvision/transforms/sample_uniform.py
  inflating: Polygonization-by-Frame-Field-Learning-master/torch_lydorn/torchvision/transforms/tensorpoly.py
  inflating: Polygonization-by-Frame-Field-Learning-master/torch_lydorn/torchvision/transforms/tensorskeleton.py
  inflating: Polygonization-by-Frame-Field-Learning-master/torch_lydorn/torchvision/transforms/to_patches.py
  inflating: Polygonization-by-Frame-Field-Learning-master/torch_lydorn/torchvision/transforms/transforms.py
  inflating: Polygonization-by-Frame-Field-Learning-master/torch_lydorn/torchvision/transforms/transform_by_key.py
  inflating: Polygonization-by-Frame-Field-Learning-master/torch_lydorn/torchvision/transforms/__init__.py
 extracting: Polygonization-by-Frame-Field-Learning-master/torch_lydorn/torchvision/__init__.py
 extracting: Polygonization-by-Frame-Field-Learning-master/torch_lydorn/__init__.py

步骤2:切换到代码目录

[ ]:
cd /content/Polygonization-by-Frame-Field-Learning-master
/content/Polygonization-by-Frame-Field-Learning-master

步骤3:配置环境

[ ]:
!pip install fastapi
!pip install kaleido
!pip install python-multipart
!pip install uvicorn
!pip install imagecodecs
!pip install -r requirements.txt
import torch
!pip install torch-scatter -f https://data.pyg.org/whl/torch-{torch.__version__}.html
!pip install torch-sparse -f https://data.pyg.org/whl/torch-{torch.__version__}.html
!pip install torch-cluster -f https://data.pyg.org/whl/torch-{torch.__version__}.html
!pip install git+https://github.com/pyg-team/pytorch_geometric.git
Collecting fastapi
  Downloading fastapi-0.110.0-py3-none-any.whl (92 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 92.1/92.1 kB 3.6 MB/s eta 0:00:00
Requirement already satisfied: pydantic!=1.8,!=1.8.1,!=2.0.0,!=2.0.1,!=2.1.0,<3.0.0,>=1.7.4 in /usr/local/lib/python3.10/dist-packages (from fastapi) (2.6.4)
Collecting starlette<0.37.0,>=0.36.3 (from fastapi)
  Downloading starlette-0.36.3-py3-none-any.whl (71 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 71.5/71.5 kB 7.6 MB/s eta 0:00:00
Requirement already satisfied: typing-extensions>=4.8.0 in /usr/local/lib/python3.10/dist-packages (from fastapi) (4.10.0)
Requirement already satisfied: annotated-types>=0.4.0 in /usr/local/lib/python3.10/dist-packages (from pydantic!=1.8,!=1.8.1,!=2.0.0,!=2.0.1,!=2.1.0,<3.0.0,>=1.7.4->fastapi) (0.6.0)
Requirement already satisfied: pydantic-core==2.16.3 in /usr/local/lib/python3.10/dist-packages (from pydantic!=1.8,!=1.8.1,!=2.0.0,!=2.0.1,!=2.1.0,<3.0.0,>=1.7.4->fastapi) (2.16.3)
Requirement already satisfied: anyio<5,>=3.4.0 in /usr/local/lib/python3.10/dist-packages (from starlette<0.37.0,>=0.36.3->fastapi) (3.7.1)
Requirement already satisfied: idna>=2.8 in /usr/local/lib/python3.10/dist-packages (from anyio<5,>=3.4.0->starlette<0.37.0,>=0.36.3->fastapi) (3.6)
Requirement already satisfied: sniffio>=1.1 in /usr/local/lib/python3.10/dist-packages (from anyio<5,>=3.4.0->starlette<0.37.0,>=0.36.3->fastapi) (1.3.1)
Requirement already satisfied: exceptiongroup in /usr/local/lib/python3.10/dist-packages (from anyio<5,>=3.4.0->starlette<0.37.0,>=0.36.3->fastapi) (1.2.0)
Installing collected packages: starlette, fastapi
Successfully installed fastapi-0.110.0 starlette-0.36.3
Collecting kaleido
  Downloading kaleido-0.2.1-py2.py3-none-manylinux1_x86_64.whl (79.9 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 79.9/79.9 MB 9.9 MB/s eta 0:00:00
Installing collected packages: kaleido
Successfully installed kaleido-0.2.1
Collecting python-multipart
  Downloading python_multipart-0.0.9-py3-none-any.whl (22 kB)
Installing collected packages: python-multipart
Successfully installed python-multipart-0.0.9
Collecting uvicorn
  Downloading uvicorn-0.29.0-py3-none-any.whl (60 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 60.8/60.8 kB 3.0 MB/s eta 0:00:00
Requirement already satisfied: click>=7.0 in /usr/local/lib/python3.10/dist-packages (from uvicorn) (8.1.7)
Collecting h11>=0.8 (from uvicorn)
  Downloading h11-0.14.0-py3-none-any.whl (58 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 58.3/58.3 kB 5.9 MB/s eta 0:00:00
Requirement already satisfied: typing-extensions>=4.0 in /usr/local/lib/python3.10/dist-packages (from uvicorn) (4.10.0)
Installing collected packages: h11, uvicorn
Successfully installed h11-0.14.0 uvicorn-0.29.0
Collecting imagecodecs
  Downloading imagecodecs-2024.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (39.6 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 39.6/39.6 MB 21.6 MB/s eta 0:00:00
Requirement already satisfied: numpy in /usr/local/lib/python3.10/dist-packages (from imagecodecs) (1.25.2)
Installing collected packages: imagecodecs
Successfully installed imagecodecs-2024.1.1
Collecting descartes (from -r requirements.txt (line 1))
  Downloading descartes-1.1.0-py3-none-any.whl (5.8 kB)
Collecting geojson (from -r requirements.txt (line 2))
  Downloading geojson-3.1.0-py3-none-any.whl (15 kB)
Collecting jsmin (from -r requirements.txt (line 3))
  Downloading jsmin-3.0.1.tar.gz (13 kB)
  Preparing metadata (setup.py) ... done
Collecting kornia (from -r requirements.txt (line 4))
  Downloading kornia-0.7.2-py2.py3-none-any.whl (825 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 825.4/825.4 kB 31.2 MB/s eta 0:00:00
Collecting multiprocess (from -r requirements.txt (line 5))
  Downloading multiprocess-0.70.16-py310-none-any.whl (134 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 134.8/134.8 kB 19.1 MB/s eta 0:00:00
Collecting overpy (from -r requirements.txt (line 6))
  Downloading overpy-0.7-py3-none-any.whl (14 kB)
Collecting rasterio (from -r requirements.txt (line 7))
  Downloading rasterio-1.3.9-cp310-cp310-manylinux2014_x86_64.whl (20.6 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 20.6/20.6 MB 42.1 MB/s eta 0:00:00
Requirement already satisfied: scikit-image in /usr/local/lib/python3.10/dist-packages (from -r requirements.txt (line 8)) (0.19.3)
Requirement already satisfied: scikit-learn in /usr/local/lib/python3.10/dist-packages (from -r requirements.txt (line 9)) (1.2.2)
Collecting shapely==1.8.0 (from -r requirements.txt (line 10))
  Downloading Shapely-1.8.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.2 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.2/1.2 MB 50.6 MB/s eta 0:00:00
Collecting skan (from -r requirements.txt (line 11))
  Downloading skan-0.11.1-py3-none-any.whl (1.5 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.5/1.5 MB 67.3 MB/s eta 0:00:00
Requirement already satisfied: matplotlib in /usr/local/lib/python3.10/dist-packages (from descartes->-r requirements.txt (line 1)) (3.7.1)
Collecting kornia-rs>=0.1.0 (from kornia->-r requirements.txt (line 4))
  Downloading kornia_rs-0.1.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.4 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.4/2.4 MB 61.2 MB/s eta 0:00:00
Requirement already satisfied: packaging in /usr/local/lib/python3.10/dist-packages (from kornia->-r requirements.txt (line 4)) (24.0)
Requirement already satisfied: torch>=1.9.1 in /usr/local/lib/python3.10/dist-packages (from kornia->-r requirements.txt (line 4)) (2.2.1+cu121)
Collecting dill>=0.3.8 (from multiprocess->-r requirements.txt (line 5))
  Downloading dill-0.3.8-py3-none-any.whl (116 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 116.3/116.3 kB 15.6 MB/s eta 0:00:00
Collecting affine (from rasterio->-r requirements.txt (line 7))
  Downloading affine-2.4.0-py3-none-any.whl (15 kB)
Requirement already satisfied: attrs in /usr/local/lib/python3.10/dist-packages (from rasterio->-r requirements.txt (line 7)) (23.2.0)
Requirement already satisfied: certifi in /usr/local/lib/python3.10/dist-packages (from rasterio->-r requirements.txt (line 7)) (2024.2.2)
Requirement already satisfied: click>=4.0 in /usr/local/lib/python3.10/dist-packages (from rasterio->-r requirements.txt (line 7)) (8.1.7)
Requirement already satisfied: cligj>=0.5 in /usr/local/lib/python3.10/dist-packages (from rasterio->-r requirements.txt (line 7)) (0.7.2)
Requirement already satisfied: numpy in /usr/local/lib/python3.10/dist-packages (from rasterio->-r requirements.txt (line 7)) (1.25.2)
Collecting snuggs>=1.4.1 (from rasterio->-r requirements.txt (line 7))
  Downloading snuggs-1.4.7-py3-none-any.whl (5.4 kB)
Requirement already satisfied: click-plugins in /usr/local/lib/python3.10/dist-packages (from rasterio->-r requirements.txt (line 7)) (1.1.1)
Requirement already satisfied: setuptools in /usr/local/lib/python3.10/dist-packages (from rasterio->-r requirements.txt (line 7)) (67.7.2)
Requirement already satisfied: scipy>=1.4.1 in /usr/local/lib/python3.10/dist-packages (from scikit-image->-r requirements.txt (line 8)) (1.11.4)
Requirement already satisfied: networkx>=2.2 in /usr/local/lib/python3.10/dist-packages (from scikit-image->-r requirements.txt (line 8)) (3.2.1)
Requirement already satisfied: pillow!=7.1.0,!=7.1.1,!=8.3.0,>=6.1.0 in /usr/local/lib/python3.10/dist-packages (from scikit-image->-r requirements.txt (line 8)) (9.4.0)
Requirement already satisfied: imageio>=2.4.1 in /usr/local/lib/python3.10/dist-packages (from scikit-image->-r requirements.txt (line 8)) (2.31.6)
Requirement already satisfied: tifffile>=2019.7.26 in /usr/local/lib/python3.10/dist-packages (from scikit-image->-r requirements.txt (line 8)) (2024.2.12)
Requirement already satisfied: PyWavelets>=1.1.1 in /usr/local/lib/python3.10/dist-packages (from scikit-image->-r requirements.txt (line 8)) (1.5.0)
Requirement already satisfied: joblib>=1.1.1 in /usr/local/lib/python3.10/dist-packages (from scikit-learn->-r requirements.txt (line 9)) (1.3.2)
Requirement already satisfied: threadpoolctl>=2.0.0 in /usr/local/lib/python3.10/dist-packages (from scikit-learn->-r requirements.txt (line 9)) (3.3.0)
Requirement already satisfied: numba>=0.53 in /usr/local/lib/python3.10/dist-packages (from skan->-r requirements.txt (line 11)) (0.58.1)
Collecting pandas>=2.0.2 (from skan->-r requirements.txt (line 11))
  Downloading pandas-2.2.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (13.0 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 13.0/13.0 MB 48.5 MB/s eta 0:00:00
Requirement already satisfied: openpyxl>=2.6 in /usr/local/lib/python3.10/dist-packages (from skan->-r requirements.txt (line 11)) (3.1.2)
Requirement already satisfied: toolz>=0.10.0 in /usr/local/lib/python3.10/dist-packages (from skan->-r requirements.txt (line 11)) (0.12.1)
Requirement already satisfied: tqdm>=4.57.0 in /usr/local/lib/python3.10/dist-packages (from skan->-r requirements.txt (line 11)) (4.66.2)
Requirement already satisfied: contourpy>=1.0.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib->descartes->-r requirements.txt (line 1)) (1.2.0)
Requirement already satisfied: cycler>=0.10 in /usr/local/lib/python3.10/dist-packages (from matplotlib->descartes->-r requirements.txt (line 1)) (0.12.1)
Requirement already satisfied: fonttools>=4.22.0 in /usr/local/lib/python3.10/dist-packages (from matplotlib->descartes->-r requirements.txt (line 1)) (4.50.0)
Requirement already satisfied: kiwisolver>=1.0.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib->descartes->-r requirements.txt (line 1)) (1.4.5)
Requirement already satisfied: pyparsing>=2.3.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib->descartes->-r requirements.txt (line 1)) (3.1.2)
Requirement already satisfied: python-dateutil>=2.7 in /usr/local/lib/python3.10/dist-packages (from matplotlib->descartes->-r requirements.txt (line 1)) (2.8.2)
Requirement already satisfied: llvmlite<0.42,>=0.41.0dev0 in /usr/local/lib/python3.10/dist-packages (from numba>=0.53->skan->-r requirements.txt (line 11)) (0.41.1)
Requirement already satisfied: et-xmlfile in /usr/local/lib/python3.10/dist-packages (from openpyxl>=2.6->skan->-r requirements.txt (line 11)) (1.1.0)
Requirement already satisfied: pytz>=2020.1 in /usr/local/lib/python3.10/dist-packages (from pandas>=2.0.2->skan->-r requirements.txt (line 11)) (2023.4)
Collecting tzdata>=2022.7 (from pandas>=2.0.2->skan->-r requirements.txt (line 11))
  Downloading tzdata-2024.1-py2.py3-none-any.whl (345 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 345.4/345.4 kB 31.4 MB/s eta 0:00:00
Requirement already satisfied: filelock in /usr/local/lib/python3.10/dist-packages (from torch>=1.9.1->kornia->-r requirements.txt (line 4)) (3.13.1)
Requirement already satisfied: typing-extensions>=4.8.0 in /usr/local/lib/python3.10/dist-packages (from torch>=1.9.1->kornia->-r requirements.txt (line 4)) (4.10.0)
Requirement already satisfied: sympy in /usr/local/lib/python3.10/dist-packages (from torch>=1.9.1->kornia->-r requirements.txt (line 4)) (1.12)
Requirement already satisfied: jinja2 in /usr/local/lib/python3.10/dist-packages (from torch>=1.9.1->kornia->-r requirements.txt (line 4)) (3.1.3)
Requirement already satisfied: fsspec in /usr/local/lib/python3.10/dist-packages (from torch>=1.9.1->kornia->-r requirements.txt (line 4)) (2023.6.0)
Collecting nvidia-cuda-nvrtc-cu12==12.1.105 (from torch>=1.9.1->kornia->-r requirements.txt (line 4))
  Downloading nvidia_cuda_nvrtc_cu12-12.1.105-py3-none-manylinux1_x86_64.whl (23.7 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 23.7/23.7 MB 16.9 MB/s eta 0:00:00
Collecting nvidia-cuda-runtime-cu12==12.1.105 (from torch>=1.9.1->kornia->-r requirements.txt (line 4))
  Downloading nvidia_cuda_runtime_cu12-12.1.105-py3-none-manylinux1_x86_64.whl (823 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 823.6/823.6 kB 62.7 MB/s eta 0:00:00
Collecting nvidia-cuda-cupti-cu12==12.1.105 (from torch>=1.9.1->kornia->-r requirements.txt (line 4))
  Downloading nvidia_cuda_cupti_cu12-12.1.105-py3-none-manylinux1_x86_64.whl (14.1 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 14.1/14.1 MB 95.2 MB/s eta 0:00:00
Collecting nvidia-cudnn-cu12==8.9.2.26 (from torch>=1.9.1->kornia->-r requirements.txt (line 4))
  Downloading nvidia_cudnn_cu12-8.9.2.26-py3-none-manylinux1_x86_64.whl (731.7 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 731.7/731.7 MB 1.6 MB/s eta 0:00:00
Collecting nvidia-cublas-cu12==12.1.3.1 (from torch>=1.9.1->kornia->-r requirements.txt (line 4))
  Downloading nvidia_cublas_cu12-12.1.3.1-py3-none-manylinux1_x86_64.whl (410.6 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 410.6/410.6 MB 3.2 MB/s eta 0:00:00
Collecting nvidia-cufft-cu12==11.0.2.54 (from torch>=1.9.1->kornia->-r requirements.txt (line 4))
  Downloading nvidia_cufft_cu12-11.0.2.54-py3-none-manylinux1_x86_64.whl (121.6 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 121.6/121.6 MB 8.4 MB/s eta 0:00:00
Collecting nvidia-curand-cu12==10.3.2.106 (from torch>=1.9.1->kornia->-r requirements.txt (line 4))
  Downloading nvidia_curand_cu12-10.3.2.106-py3-none-manylinux1_x86_64.whl (56.5 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 56.5/56.5 MB 15.2 MB/s eta 0:00:00
Collecting nvidia-cusolver-cu12==11.4.5.107 (from torch>=1.9.1->kornia->-r requirements.txt (line 4))
  Downloading nvidia_cusolver_cu12-11.4.5.107-py3-none-manylinux1_x86_64.whl (124.2 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 124.2/124.2 MB 8.5 MB/s eta 0:00:00
Collecting nvidia-cusparse-cu12==12.1.0.106 (from torch>=1.9.1->kornia->-r requirements.txt (line 4))
  Downloading nvidia_cusparse_cu12-12.1.0.106-py3-none-manylinux1_x86_64.whl (196.0 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 196.0/196.0 MB 6.6 MB/s eta 0:00:00
Collecting nvidia-nccl-cu12==2.19.3 (from torch>=1.9.1->kornia->-r requirements.txt (line 4))
  Downloading nvidia_nccl_cu12-2.19.3-py3-none-manylinux1_x86_64.whl (166.0 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 166.0/166.0 MB 3.6 MB/s eta 0:00:00
Collecting nvidia-nvtx-cu12==12.1.105 (from torch>=1.9.1->kornia->-r requirements.txt (line 4))
  Downloading nvidia_nvtx_cu12-12.1.105-py3-none-manylinux1_x86_64.whl (99 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 99.1/99.1 kB 14.1 MB/s eta 0:00:00
Requirement already satisfied: triton==2.2.0 in /usr/local/lib/python3.10/dist-packages (from torch>=1.9.1->kornia->-r requirements.txt (line 4)) (2.2.0)
Collecting nvidia-nvjitlink-cu12 (from nvidia-cusolver-cu12==11.4.5.107->torch>=1.9.1->kornia->-r requirements.txt (line 4))
  Downloading nvidia_nvjitlink_cu12-12.4.99-py3-none-manylinux2014_x86_64.whl (21.1 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 21.1/21.1 MB 75.5 MB/s eta 0:00:00
Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.10/dist-packages (from python-dateutil>=2.7->matplotlib->descartes->-r requirements.txt (line 1)) (1.16.0)
Requirement already satisfied: MarkupSafe>=2.0 in /usr/local/lib/python3.10/dist-packages (from jinja2->torch>=1.9.1->kornia->-r requirements.txt (line 4)) (2.1.5)
Requirement already satisfied: mpmath>=0.19 in /usr/local/lib/python3.10/dist-packages (from sympy->torch>=1.9.1->kornia->-r requirements.txt (line 4)) (1.3.0)
Building wheels for collected packages: jsmin
  Building wheel for jsmin (setup.py) ... done
  Created wheel for jsmin: filename=jsmin-3.0.1-py3-none-any.whl size=13765 sha256=e105feba1c8563a3712d95dd84a93ddb2b466214e58b46bc5f62563840a3d787
  Stored in directory: /root/.cache/pip/wheels/9a/eb/65/4a07a200d454fb40cbd51a2deee3c5d26285321e3bbbe627a5
Successfully built jsmin
Installing collected packages: jsmin, tzdata, snuggs, shapely, overpy, nvidia-nvtx-cu12, nvidia-nvjitlink-cu12, nvidia-nccl-cu12, nvidia-curand-cu12, nvidia-cufft-cu12, nvidia-cuda-runtime-cu12, nvidia-cuda-nvrtc-cu12, nvidia-cuda-cupti-cu12, nvidia-cublas-cu12, kornia-rs, geojson, dill, affine, rasterio, pandas, nvidia-cusparse-cu12, nvidia-cudnn-cu12, multiprocess, skan, nvidia-cusolver-cu12, descartes, kornia
  Attempting uninstall: shapely
    Found existing installation: shapely 2.0.3
    Uninstalling shapely-2.0.3:
      Successfully uninstalled shapely-2.0.3
  Attempting uninstall: pandas
    Found existing installation: pandas 1.5.3
    Uninstalling pandas-1.5.3:
      Successfully uninstalled pandas-1.5.3
ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.
bigframes 0.26.0 requires pandas<2.1.4,>=1.5.0, but you have pandas 2.2.1 which is incompatible.
google-colab 1.0.0 requires pandas==1.5.3, but you have pandas 2.2.1 which is incompatible.
Successfully installed affine-2.4.0 descartes-1.1.0 dill-0.3.8 geojson-3.1.0 jsmin-3.0.1 kornia-0.7.2 kornia-rs-0.1.2 multiprocess-0.70.16 nvidia-cublas-cu12-12.1.3.1 nvidia-cuda-cupti-cu12-12.1.105 nvidia-cuda-nvrtc-cu12-12.1.105 nvidia-cuda-runtime-cu12-12.1.105 nvidia-cudnn-cu12-8.9.2.26 nvidia-cufft-cu12-11.0.2.54 nvidia-curand-cu12-10.3.2.106 nvidia-cusolver-cu12-11.4.5.107 nvidia-cusparse-cu12-12.1.0.106 nvidia-nccl-cu12-2.19.3 nvidia-nvjitlink-cu12-12.4.99 nvidia-nvtx-cu12-12.1.105 overpy-0.7 pandas-2.2.1 rasterio-1.3.9 shapely-1.8.0 skan-0.11.1 snuggs-1.4.7 tzdata-2024.1
Looking in links: https://data.pyg.org/whl/torch-2.2.1+cu121.html
Collecting torch-scatter
  Downloading https://data.pyg.org/whl/torch-2.2.0%2Bcu121/torch_scatter-2.1.2%2Bpt22cu121-cp310-cp310-linux_x86_64.whl (10.9 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 10.9/10.9 MB 94.6 MB/s eta 0:00:00
Installing collected packages: torch-scatter
Successfully installed torch-scatter-2.1.2+pt22cu121
Looking in links: https://data.pyg.org/whl/torch-2.2.1+cu121.html
Collecting torch-sparse
  Downloading https://data.pyg.org/whl/torch-2.2.0%2Bcu121/torch_sparse-0.6.18%2Bpt22cu121-cp310-cp310-linux_x86_64.whl (5.0 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 5.0/5.0 MB 51.6 MB/s eta 0:00:00
Requirement already satisfied: scipy in /usr/local/lib/python3.10/dist-packages (from torch-sparse) (1.11.4)
Requirement already satisfied: numpy<1.28.0,>=1.21.6 in /usr/local/lib/python3.10/dist-packages (from scipy->torch-sparse) (1.25.2)
Installing collected packages: torch-sparse
Successfully installed torch-sparse-0.6.18+pt22cu121
Looking in links: https://data.pyg.org/whl/torch-2.2.1+cu121.html
Collecting torch-cluster
  Downloading https://data.pyg.org/whl/torch-2.2.0%2Bcu121/torch_cluster-1.6.3%2Bpt22cu121-cp310-cp310-linux_x86_64.whl (3.4 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 3.4/3.4 MB 56.4 MB/s eta 0:00:00
Requirement already satisfied: scipy in /usr/local/lib/python3.10/dist-packages (from torch-cluster) (1.11.4)
Requirement already satisfied: numpy<1.28.0,>=1.21.6 in /usr/local/lib/python3.10/dist-packages (from scipy->torch-cluster) (1.25.2)
Installing collected packages: torch-cluster
Successfully installed torch-cluster-1.6.3+pt22cu121
Collecting git+https://github.com/pyg-team/pytorch_geometric.git
  Cloning https://github.com/pyg-team/pytorch_geometric.git to /tmp/pip-req-build-1gu17no3
  Running command git clone --filter=blob:none --quiet https://github.com/pyg-team/pytorch_geometric.git /tmp/pip-req-build-1gu17no3
  Resolved https://github.com/pyg-team/pytorch_geometric.git to commit 27367b4b0f6f5866d064d2d629375d6d8a0351c4
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Preparing metadata (pyproject.toml) ... done
Requirement already satisfied: aiohttp in /usr/local/lib/python3.10/dist-packages (from torch_geometric==2.6.0) (3.9.3)
Requirement already satisfied: fsspec in /usr/local/lib/python3.10/dist-packages (from torch_geometric==2.6.0) (2023.6.0)
Requirement already satisfied: jinja2 in /usr/local/lib/python3.10/dist-packages (from torch_geometric==2.6.0) (3.1.3)
Requirement already satisfied: numpy in /usr/local/lib/python3.10/dist-packages (from torch_geometric==2.6.0) (1.25.2)
Requirement already satisfied: psutil>=5.8.0 in /usr/local/lib/python3.10/dist-packages (from torch_geometric==2.6.0) (5.9.5)
Requirement already satisfied: pyparsing in /usr/local/lib/python3.10/dist-packages (from torch_geometric==2.6.0) (3.1.2)
Requirement already satisfied: requests in /usr/local/lib/python3.10/dist-packages (from torch_geometric==2.6.0) (2.31.0)
Requirement already satisfied: scikit-learn in /usr/local/lib/python3.10/dist-packages (from torch_geometric==2.6.0) (1.2.2)
Requirement already satisfied: scipy in /usr/local/lib/python3.10/dist-packages (from torch_geometric==2.6.0) (1.11.4)
Requirement already satisfied: tqdm in /usr/local/lib/python3.10/dist-packages (from torch_geometric==2.6.0) (4.66.2)
Requirement already satisfied: aiosignal>=1.1.2 in /usr/local/lib/python3.10/dist-packages (from aiohttp->torch_geometric==2.6.0) (1.3.1)
Requirement already satisfied: attrs>=17.3.0 in /usr/local/lib/python3.10/dist-packages (from aiohttp->torch_geometric==2.6.0) (23.2.0)
Requirement already satisfied: frozenlist>=1.1.1 in /usr/local/lib/python3.10/dist-packages (from aiohttp->torch_geometric==2.6.0) (1.4.1)
Requirement already satisfied: multidict<7.0,>=4.5 in /usr/local/lib/python3.10/dist-packages (from aiohttp->torch_geometric==2.6.0) (6.0.5)
Requirement already satisfied: yarl<2.0,>=1.0 in /usr/local/lib/python3.10/dist-packages (from aiohttp->torch_geometric==2.6.0) (1.9.4)
Requirement already satisfied: async-timeout<5.0,>=4.0 in /usr/local/lib/python3.10/dist-packages (from aiohttp->torch_geometric==2.6.0) (4.0.3)
Requirement already satisfied: MarkupSafe>=2.0 in /usr/local/lib/python3.10/dist-packages (from jinja2->torch_geometric==2.6.0) (2.1.5)
Requirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib/python3.10/dist-packages (from requests->torch_geometric==2.6.0) (3.3.2)
Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.10/dist-packages (from requests->torch_geometric==2.6.0) (3.6)
Requirement already satisfied: urllib3<3,>=1.21.1 in /usr/local/lib/python3.10/dist-packages (from requests->torch_geometric==2.6.0) (2.0.7)
Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.10/dist-packages (from requests->torch_geometric==2.6.0) (2024.2.2)
Requirement already satisfied: joblib>=1.1.1 in /usr/local/lib/python3.10/dist-packages (from scikit-learn->torch_geometric==2.6.0) (1.3.2)
Requirement already satisfied: threadpoolctl>=2.0.0 in /usr/local/lib/python3.10/dist-packages (from scikit-learn->torch_geometric==2.6.0) (3.3.0)
Building wheels for collected packages: torch_geometric
  Building wheel for torch_geometric (pyproject.toml) ... done
  Created wheel for torch_geometric: filename=torch_geometric-2.6.0-py3-none-any.whl size=1101012 sha256=541413bc5682d48ae3e1f1c97ca6b08ac3dce96833f98f8c5c6a0a1bbc50dee7
  Stored in directory: /tmp/pip-ephem-wheel-cache-xfpmesvd/wheels/d3/78/eb/9e26525b948d19533f1688fb6c209cec8a0ba793d39b49ae8f
Successfully built torch_geometric
Installing collected packages: torch_geometric
Successfully installed torch_geometric-2.6.0
[ ]:
!mv /content/Polygonization-by-Frame-Field-Learning-master/frame_field_learning/runs/inria_dataset_polygonized.unet_resnet101_pretrained.leaderboard\ _\ 2020-06-02\ 07_57_31 /content/Polygonization-by-Frame-Field-Learning-master/frame_field_learning/runs/inria_dataset_polygonized.unet_resnet101_pretrained.leaderboard\ \|\ 2020-06-02\ 07\:57\:31

进行实验

步骤4:运行代码

格式为 **!python main.py –run_name inria_dataset_polygonized.unet_resnet101_pretrained.leaderboard –in_filepath **

我们提供了实例图像,来自Inria数据集的Austin区域的影像

如果想修改模型的输入影像,修改即可

[ ]:
!python main.py --run_name inria_dataset_polygonized.unet_resnet101_pretrained.leaderboard --in_filepath /content/Polygonization-by-Frame-Field-Learning-master/data/austin1_WGS84.tif
/usr/local/lib/python3.10/dist-packages/torchvision/models/_utils.py:208: UserWarning: The parameter 'pretrained' is deprecated since 0.13 and may be removed in the future, please use 'weights' instead.
  warnings.warn(
/usr/local/lib/python3.10/dist-packages/torchvision/models/_utils.py:223: UserWarning: Arguments other than a weight enum or `None` for 'weights' are deprecated since 0.13 and may be removed in the future. The current behavior is equivalent to passing `weights=ResNet101_Weights.IMAGENET1K_V1`. You can also use `weights=ResNet101_Weights.DEFAULT` to get the most up-to-date weights.
  warnings.warn(msg)
Downloading: "https://download.pytorch.org/models/resnet101-63fe2227.pth" to models/hub/checkpoints/resnet101-63fe2227.pth
100% 171M/171M [00:02<00:00, 69.8MB/s]
Loading model...
Loading best val checkpoint: /content/Polygonization-by-Frame-Field-Learning-master/frame_field_learning/runs/inria_dataset_polygonized.unet_resnet101_pretrained.leaderboard | 2020-06-02 07:57:31/checkpoints/checkpoint.best_val.epoch_000234.tar
Infer images:   0% 0/1 [00:04<?, ?it/s, status=Inference]
Running model on patches:   0% 0/42 [00:00<?, ?it/s]
Running model on patches:   2% 1/42 [00:00<00:38,  1.07it/s]
Running model on patches:   7% 3/42 [00:01<00:14,  2.71it/s]
Running model on patches:  10% 4/42 [00:01<00:13,  2.82it/s]
Running model on patches:  12% 5/42 [00:01<00:12,  2.89it/s]
Running model on patches:  14% 6/42 [00:02<00:12,  2.95it/s]
Running model on patches:  17% 7/42 [00:02<00:11,  3.00it/s]
Running model on patches:  19% 8/42 [00:02<00:11,  3.02it/s]
Running model on patches:  21% 9/42 [00:03<00:10,  3.03it/s]
Running model on patches:  24% 10/42 [00:03<00:10,  3.04it/s]
Running model on patches:  26% 11/42 [00:03<00:10,  3.04it/s]
Running model on patches:  29% 12/42 [00:04<00:09,  3.05it/s]
Running model on patches:  31% 13/42 [00:04<00:09,  3.05it/s]
Running model on patches:  33% 14/42 [00:04<00:09,  3.07it/s]
Running model on patches:  36% 15/42 [00:05<00:08,  3.07it/s]
Running model on patches:  38% 16/42 [00:05<00:08,  3.07it/s]
Running model on patches:  40% 17/42 [00:05<00:08,  3.06it/s]
Running model on patches:  43% 18/42 [00:06<00:07,  3.07it/s]
Running model on patches:  45% 19/42 [00:06<00:07,  3.07it/s]
Running model on patches:  48% 20/42 [00:06<00:07,  3.07it/s]
Running model on patches:  50% 21/42 [00:07<00:06,  3.03it/s]
Running model on patches:  52% 22/42 [00:07<00:06,  3.04it/s]
Running model on patches:  55% 23/42 [00:07<00:06,  3.07it/s]
Running model on patches:  57% 24/42 [00:08<00:05,  3.07it/s]
Running model on patches:  60% 25/42 [00:08<00:05,  3.07it/s]
Running model on patches:  62% 26/42 [00:08<00:05,  3.07it/s]
Running model on patches:  64% 27/42 [00:09<00:04,  3.04it/s]
Running model on patches:  67% 28/42 [00:09<00:04,  3.02it/s]
Running model on patches:  69% 29/42 [00:09<00:04,  3.04it/s]
Running model on patches:  71% 30/42 [00:10<00:03,  3.08it/s]
Running model on patches:  74% 31/42 [00:10<00:03,  3.06it/s]
Running model on patches:  76% 32/42 [00:10<00:03,  3.06it/s]
Running model on patches:  79% 33/42 [00:11<00:02,  3.04it/s]
Running model on patches:  81% 34/42 [00:11<00:02,  3.05it/s]
Running model on patches:  83% 35/42 [00:11<00:02,  3.04it/s]
Running model on patches:  86% 36/42 [00:12<00:01,  3.05it/s]
Running model on patches:  88% 37/42 [00:12<00:01,  3.05it/s]
Running model on patches:  90% 38/42 [00:12<00:01,  3.05it/s]
Running model on patches:  93% 39/42 [00:13<00:00,  3.05it/s]
Running model on patches:  95% 40/42 [00:13<00:00,  3.05it/s]
Running model on patches:  98% 41/42 [00:13<00:00,  3.05it/s]
Running model on patches: 100% 42/42 [00:14<00:00,  3.04it/s]
                                                             /content/Polygonization-by-Frame-Field-Learning-master/frame_field_learning/polygonize_simple.py:103: ShapelyDeprecationWarning: Iteration over multi-part geometries is deprecated and will be removed in Shapely 2.0. Use the `geoms` property to access the constituent parts of a multi-part geometry.
  polygons = list(polygons)
/content/Polygonization-by-Frame-Field-Learning-master/frame_field_learning/polygonize_simple.py:103: ShapelyDeprecationWarning: __len__ for multi-part geometries is deprecated and will be removed in Shapely 2.0. Check the length of the `geoms` property instead to get the  number of parts of a multi-part geometry.
  polygons = list(polygons)
/usr/local/lib/python3.10/dist-packages/torch/optim/lr_scheduler.py:156: UserWarning: The epoch parameter in `scheduler.step()` was not necessary and is being deprecated where possible. Please use `scheduler.step()` to step the scheduler. During the deprecation, if epoch is different from None, the closed form is used instead of the new chainable form, where available. Please open an issue if you are unable to replicate your use case: https://github.com/pytorch/pytorch/issues/new/choose.
  warnings.warn(EPOCH_DEPRECATION_WARNING, UserWarning)
/content/Polygonization-by-Frame-Field-Learning-master/frame_field_learning/polygonize_acm.py:299: ShapelyDeprecationWarning: Iteration over multi-part geometries is deprecated and will be removed in Shapely 2.0. Use the `geoms` property to access the constituent parts of a multi-part geometry.
  polygons = list(polygons)
/content/Polygonization-by-Frame-Field-Learning-master/frame_field_learning/polygonize_acm.py:299: ShapelyDeprecationWarning: __len__ for multi-part geometries is deprecated and will be removed in Shapely 2.0. Check the length of the `geoms` property instead to get the  number of parts of a multi-part geometry.
  polygons = list(polygons)
Infer images:   0% 0/1 [01:00<?, ?it/s, status=Saving output]/usr/local/lib/python3.10/dist-packages/descartes/patch.py:62: ShapelyDeprecationWarning: The array interface is deprecated and will no longer work in Shapely 2.0. Convert the '.coords' to a numpy array instead.
  vertices = concatenate([
/usr/local/lib/python3.10/dist-packages/descartes/patch.py:64: ShapelyDeprecationWarning: The array interface is deprecated and will no longer work in Shapely 2.0. Convert the '.coords' to a numpy array instead.
  [asarray(r)[:, :2] for r in t.interiors])
Infer images: 100% 1/1 [03:53<00:00, 233.91s/it, status=Saving output]

看看结果怎么样

[ ]:
import rasterio
from rasterio.plot import show
import matplotlib.pyplot as plt
# 首先看一下输入模型的影像
rgb_tif_path = '/content/Polygonization-by-Frame-Field-Learning-master/data/austin1_WGS84.tif'

# 打开 RGB TIFF 文件
with rasterio.open(rgb_tif_path) as src:
    # 读取 RGB TIFF 文件中的数据
    rgb_data = src.read()
    # 显示 RGB 图像
    show(rgb_data)
../../_images/2ndPart_Homework.2_Zero_shot_Instance_Segmentation_of_Remote_Sensing_Images_14_0.png
[ ]:
import geopandas as gpd
import matplotlib.pyplot as plt

# 接下来看一下模型的输出(shapefile)
shapefile_path = '/content/Polygonization-by-Frame-Field-Learning-master/data/poly_shapefile.acm.tol_1/austin1_WGS84.shp'
gdf = gpd.read_file(shapefile_path)

# 可视化矢量文件
gdf.plot(aspect='equal')
plt.title('Shapefile Visualization')
plt.show()
../../_images/2ndPart_Homework.2_Zero_shot_Instance_Segmentation_of_Remote_Sensing_Images_15_0.png
[ ]:
import shutil
from google.colab import files

# 接下来,我们把航拍影像,和对应的矢量文件下载下来,可以用导入到arcmap中进行观察

def zip_and_download(folder_path):
    shutil.make_archive('/content/downloaded_folder', 'zip', folder_path)
    shutil.move('/content/downloaded_folder.zip', '/content/downloaded_folder.zip')
    download_link = '/content/downloaded_folder.zip'
    files.download(download_link)

zip_and_download("/content/Polygonization-by-Frame-Field-Learning-master/data/poly_shapefile.acm.tol_1")
files.download("/content/Polygonization-by-Frame-Field-Learning-master/data/austin1_WGS84.tif")

Austin其他区域建筑物识别

学习代码,并根据本次实习中提供的其他区域影像,尝试得到对应的识别结果

这个压缩包内提供了新的影像,可以直接使用

[ ]:
# 下载Austin其他区域影像
!gdown --id 1EoLJc-a7VlhnTYUybes8aRr_91p6g8MO --output "additional_data_new.zip" # 如果手动下载了压缩包并上传到文件里,请注释掉这行代码

!unzip additional_data_new.zip
[ ]:
# 你来完成

使用自己的遥感图像,并进行建筑物识别

相比于本次实习提供的影像的识别结果,你自己的遥感图像的识别结果是更好,还是更坏,请思考为什么

输入影像必须满足以下要求:

  1. 图像只有三个波段 (例如RGB波段)

  2. 图像宽高大于1024*1024

  3. jpg,tif,png格式

  4. 带有坐标系(推荐)

运行结束后,会在自己上传的图像的相同路径下,看到poly_shapefile.acm.tol_1 文件夹,这个文件夹下是输入图像对应的识别结果(shapefile格式)

[ ]:
# 你来完成

有什么办法可以改进识别结果吗

如何改进识别结果?一种更好的办法是采用微调,或重新训练的方式,即收集一定的影像-标签对,来让模型对新数据进行参数优化

有关怎么对本文使用的模型进行微调,请阅读该模型的技术手册 https://github.com/Lydorn/Polygonization-by-Frame-Field-Learning

[ ]:
# 你来完成

你需要做什么

基本要求

  • 弄明白这些代码都在干什么

中等要求

  • 在Austin其他区域进行建筑物轮廓识别

  • 在自己收集的影像上,进行建筑物轮廓识别

终极要求

  • 通过对现有模型微调,或重新训练的方式,改进预测结果