跳转到主要内容

可复制的微规划人工智能,为fAIr维护的分支

项目描述

可复制的微规划人工智能(ramp)

我们团队致力于将数据价值链的控制权交给人道主义者。可复制的微规划人工智能(ramp)项目正在开发一个开源的深度学习模型,使用卫星图像准确数字化低收入和中等收入国家的建筑,并使国内用户能够为其感兴趣的地区构建自己的深度学习模型。

此代码库提供基于Tensorflow和Python地理空间工具集的Python机器学习和数据处理工具,用于使用深度学习从高分辨率卫星图像预测建筑模型。

ramp在线文档网站包含我们使命、ramp项目、代码库和相关(非常大的)开源图像芯片和标签geojson文件数据集的完整文档。

以下截图展示了ramp项目组使用此代码库生成的预测建筑多边形和真实多边形的示例,包括真实多边形(红色多边形为预测,绿色多边形为人工标注员提供的训练标签)。

圣文森特AOI

St Vincent AOI

缅甸AOI

Myanmar AOI

加纳AOI

Ghana AOI

ramp才刚刚开始。


关于代码库

您可能想使用此代码库做的事情包括

  1. 运行脚本,包括生产脚本和数据准备工具。
  2. 使用Jupyter笔记本。
  3. 使用广泛的ramp开源标注数据集。
  4. 使用您的数据训练模型。
  5. 修改底层代码以满足您的需求。

梯形代码库使用了众多标准使用的Python库,一些专门用于图像和地理空间处理的库,以及Tensorflow库用于训练和运行深度神经网络。在创建一个所有这些库都已安装并能良好协同工作的计算环境时,可能会非常困难。

因此,我们还提供了构建Docker镜像的说明(基于具有GPU功能的Tensorflow 2.8 Docker镜像和Jupyter笔记本),该镜像包含ramp的所有库和依赖项。上述所有四个任务都可以在基于此镜像的Docker容器中执行。

对于最后三个任务,我们推荐使用微软的开放源代码代码编辑器vscode。此代码编辑器可以轻松连接到正在运行的ramp Docker容器,并可以运行Jupyter笔记本,包括用于训练ramp模型的笔记本。


项目结构

请注意,ramp项目目前包含了一个名为Solaris项目的分支,该项目目前没有在积极开发。在这个分支中包含了一些错误修复和修改,而一些对Solaris代码的更广泛修改已被移入ramp库。

ramp-staging
├── colab
│   └── README.md
│   └── jupyter_lab_on_colab.ipynb
│   └── train_ramp_model_on_colab.ipynb
├── data
├── docker
│   └── pipped-requirements.txt
├── Dockerfile
├── Dockerfile.dev
├── docs
│   ├── How_I_set_up_my_training_data.md
│   ├── how_to_debug_ramp_in_vscode.md
│   ├── How_to_run_production_and_evaluation.md
│   ├── list-of-ramp-scripts.md
│   └── using_the_ramp_training_configuration_file.md
|   └── images
├── experiments
│   ├── dhaka_nw
│   ├── ghana
│   ├── gimmosss
│   ├── himmosss 
├── notebooks
│   ├── augmentation_demo.ipynb
│   ├── Data_generator_demo.ipynb
│   ├── Duplicate_image_check.ipynb
│   ├── Independent_labelers_comparison_test.ipynb
│   ├── Train_ramp_model.ipynb
│   ├── Truncated_signed_distance_transform_example.ipynb
│   └── View_predictions.ipynb
│   ├── images
│   ├── sample-data
├── ramp
│   ├── __init__.py
│   ├── data_mgmt
│   │   ├── chip_label_pairs.py
│   │   ├── clr_callback.py
│   │   ├── data_generator.py
│   │   ├── display_data.py
│   │   ├── __init__.py
│   ├── models
│   │   ├── effunet_1.py
│   │   ├── __init__.py
│   │   ├── model_1_chollet_unet.py
│   ├── training
│   │   ├── augmentation_constructors.py
│   │   ├── callback_constructors.py
│   │   ├── __init__.py
│   │   ├── loss_constructors.py
│   │   ├── metric_constructors.py
│   │   ├── model_constructors.py
│   │   ├── optimizer_constructors.py
│   └── utils
│       ├── chip_utils.py
│       ├── eval_utils.py
│       ├── file_utils.py
│       ├── geo_utils.py
│       ├── imgproc_utils.py
│       ├── img_utils.py
│       ├── __init__.py
│       ├── label_utils.py
│       ├── log_fields.py
│       ├── lrfinder.py
│       ├── mask_to_vec_utils.py
│       ├── misc_ramp_utils.py
│       ├── model_utils.py
│       ├── multimask_utils.py
│       ├── ramp_exceptions.py
│       └── sdt_mask_utils.py
├── README.md
├── scripts
│   ├── add_area_to_labels.py
│   ├── binary_masks_from_polygons.py
│   ├── calculate_accuracy_iou.py
│   ├── find_learningrate.py
│   ├── get_chip_statistics.py
│   ├── get_dataset_loss_statistics.py
│   ├── get_labels_from_masks.py
│   ├── get_model_predictions.py
│   ├── make_train_val_split_lists.py
│   ├── move_chips_from_csv.py
│   ├── multi_masks_from_polygons.py
│   ├── polygonize_masks.py
│   ├── polygonize_multimasks.py
│   ├── remove_slivers.py
│   ├── sdt_masks_from_polygons.py
│   ├── tile_datasets.py
│   └── train_ramp.py
├── setup.py
├── shell-scripts
│   ├── create_aggregate_trainingset.bash
│   ├── create_masks_for_datasets.bash
│   ├── create_test_split_for_datasets.bash
│   ├── create_trainval_split_for_datasets.bash
│   ├── get_iou_metrics_for_datasets.bash
│   ├── get_iou_metrics_for_models.bash
│   ├── nvidia-check.sh
│   ├── run_production_on_datasets.bash
│   ├── run_production_on_single_dataset.bash
│   ├── write_predicted_masks_for_datasets.bash
│   └── write_truth_labels_for_datasets.bash
└── solaris

如何在Google Colab上运行ramp环境

有关在Colab上开始使用ramp的说明位于此代码库中的colab/README.md文件。

请注意,在Google Colab的免费层上运行可能会非常缓慢且痛苦。如果您经常在Google Colab上运行,我建议升级到Google Pro。如果您将Google Colab用作运行大型ramp训练作业的计算平台,我建议考虑Google Pro Plus。

如何在具有GPU支持的Ubuntu 20.04本地服务器上运行RAMP环境

高级概述

  1. 您需要在具有至少一个启用CUDA的NVIDIA GPU的机器上运行Ubuntu 20.04 Linux。您绝对需要在上面有sudo(root用户)权限。
  2. 安装目前推荐的NVIDIA驱动程序:请参阅此处说明。(情况可能会更糟:幸运的是,您不需要安装CUDA库,因为如果不使用Docker,您就需要安装这些库)。
  3. 安装docker CE,以及NVIDIA容器工具包(请参阅此处说明)。
  4. 创建'docker'组并将自己添加到其中,这样您就可以在不使用sudo的情况下运行docker(请参阅此处说明)。
  5. 根据以下说明使用docker构建ramp基础镜像,rampbase
# run from the ramp-code directory
docker build --tag rampbase .

重要说明:您需要在修改ramp模块代码库(位于ramp-code/ramp)后重新构建rampbase,以确保更改被安装在容器中。运行脚本或笔记本时不是这种情况。

  1. 基于rampbase启动docker容器,并在其中运行bash shell,如下所示
docker run -it --rm --gpus=all -v /home/carolyn/ramp-staging:/tf/ramp-staging -v /home/carolyn/ramp-data:/tf/ramp-data  -p 8888:8888 rampbase bash

如果您想运行一个脚本:在bash shell中运行,使用默认的python解释器,该解释器将加载ramp的所有组件。

请注意,ramp容器中安装了一个Jupyter笔记本服务器,'docker run'命令中的-p 8888:8888部分启用端口转发,这样您就可以在主机机器的浏览器中运行Jupyter笔记本。

如果您想在浏览器或Jupyterlab中运行Jupyter笔记本,使用不带'bash'结尾的相同命令启动您的docker容器。您将在命令输出中获得运行中的Jupyter笔记本服务器链接。

docker run -it --rm --gpus=all -v /home/carolyn/ramp-staging:/tf/ramp-staging -v /home/carolyn/ramp-data:/tf/ramp-data  -p 8888:8888 rampbase

如果您希望在Jupyter笔记本容器中运行bash shell,以便您可以运行脚本以及Jupyter笔记本,您可以使用以下命令将bash shell连接到同一个容器。

首先,运行

docker ps

这将列出您机器上运行的所有Docker容器,类似于Unix ps命令的输出

CONTAINER ID   IMAGE     COMMAND   CREATED       STATUS       PORTS                                       NAMES
209755699cea   rampdev   "bash"    3 hours ago   Up 3 hours   0.0.0.0:8888->8888/tcp, :::8888->8888/tcp   condescending_cerf

您可以使用容器ID或容器名称来使用以下命令连接到它

docker exec -it condescending_cerf bash

这将为您提供运行Jupyter笔记本的同一容器中的bash shell。

有关如何在VScode的桌面版中调试ramp代码、运行Jupyter笔记本的说明,请参阅如何在VScode中调试ramp


关于以您自己的用户身份运行ramp,与以root用户身份运行的区别

请注意,默认情况下,Docker以root用户身份运行容器。如果您想使用VScode连接到容器,您需要以root用户身份运行容器,因为VScode需要在容器中安装其服务器,需要root权限。

这意味着您在Docker会话期间创建的任何文件都将具有root用户所有权。从安全角度来看,这是不希望的,并且当您稍后需要更改或删除在本地机器上创建的文件时,会带来麻烦。(注意,要解决这个问题,请运行以下Linux命令:find . -user root | xargs sudo chown your-username。)

如果您只是要与bash shell交互(例如,运行生产代码或脚本),我建议您以自己的用户身份运行容器,而不是root用户。要做到这一点,添加以下所示的--user 1000:1000开关。

# run from anywhere as yourself (as the non-root user)
docker run -it --rm --gpus=all --user 1000:1000 -v /home/carolyn/ramp-staging:/tf/ramp-staging -v /home/carolyn/ramp-data:/tf/ramp-data -p 8888:8888 rampbase

许可协议

此软件已在Apache 2.0软件许可协议下授权。

项目详情


下载文件

下载适用于您的平台文件。如果您不确定要选择哪个,请了解更多关于安装包的信息。

源分发

ramp-fair-0.1.2.tar.gz (55.0 KB 查看散列)

上传时间

由以下机构支持