卫星和航空图像深度学习的开源框架
rastervision的Python项目详细描述
光栅视觉是一个开源的python框架,用于在卫星、空中和其他大型图像集(包括倾斜无人机图像)上构建计算机视觉模型。
- 它允许用户(不需要成为深入学习的专家!)快速且可重复地配置执行机器学习工作流的实验,包括:分析训练数据、创建训练芯片、训练模型、创建预测、评估模型,以及捆绑模型文件和配置以便于部署。
- 内置了对芯片分类、对象检测和使用tensorflow的语义分割的支持。
- 实验可以在cpu和gpu上执行,内置支持使用AWS Batch在云中运行。
- 该框架可扩展到新的数据源、任务(如对象检测)、后端(如tf对象检测api)和云提供商。
- 有一个QGIS plugin用于在地图上查看实验结果。
有关详细信息,请参见documentation。
设置
有几种设置光栅视觉的方法:
- 要从头构建Docker映像,克隆此repo后,运行
docker/build
,并使用docker/run
运行容器。 - Docker图片发布到quay.io。
raster-vision
图像的标记决定它是什么类型的图像:- 标签是用来运行cpu容器的。
gpu-*
标记用于运行gpu容器。- 我们在每次合并到
master
时发布一个新标记,该标记使用提交散列的前7个字符进行标记。要使用最新版本,请拉latest
后缀,例如raster-vision:gpu-latest
。git标记也被发布,github标记名作为docker标记后缀。
- 可以使用
pip install rastervision
直接安装光栅视觉。但是,它的一些依赖项必须手动安装。
有关详细说明,请参见Setup docs。
示例
了解光栅视觉功能的最佳方法是查看如何配置和运行实验的示例。使用fluent builder模式配置实验,使配置易于读取、重用和维护。
# tiny_spacenet.pyimportrastervisionasrvclassTinySpacenetExperimentSet(rv.ExperimentSet):defexp_main(self):base_uri=('https://s3.amazonaws.com/azavea-research-public-data/''raster-vision/examples/spacenet')train_image_uri='{}/RGB-PanSharpen_AOI_2_Vegas_img205.tif'.format(base_uri)train_label_uri='{}/buildings_AOI_2_Vegas_img205.geojson'.format(base_uri)val_image_uri='{}/RGB-PanSharpen_AOI_2_Vegas_img25.tif'.format(base_uri)val_label_uri='{}/buildings_AOI_2_Vegas_img25.geojson'.format(base_uri)channel_order=[0,1,2]background_class_id=2# ------------- TASK -------------task=rv.TaskConfig.builder(rv.SEMANTIC_SEGMENTATION) \ .with_chip_size(300) \ .with_chip_options(chips_per_scene=50) \ .with_classes({'building':(1,'red')}) \ .build()# ------------- BACKEND -------------backend=rv.BackendConfig.builder(rv.TF_DEEPLAB) \ .with_task(task) \ .with_debug(True) \ .with_batch_size(1) \ .with_num_steps(1) \ .with_model_defaults(rv.MOBILENET_V2) \ .build()# ------------- TRAINING -------------train_raster_source=rv.RasterSourceConfig.builder(rv.RASTERIO_SOURCE) \ .with_uri(train_image_uri) \ .with_channel_order(channel_order) \ .with_stats_transformer() \ .build()train_label_raster_source=rv.RasterSourceConfig.builder(rv.RASTERIZED_SOURCE) \ .with_vector_source(train_label_uri) \ .with_rasterizer_options(background_class_id) \ .build()train_label_source=rv.LabelSourceConfig.builder(rv.SEMANTIC_SEGMENTATION) \ .with_raster_source(train_label_raster_source) \ .build()train_scene=rv.SceneConfig.builder() \ .with_task(task) \ .with_id('train_scene') \ .with_raster_source(train_raster_source) \ .with_label_source(train_label_source) \ .build()# ------------- VALIDATION -------------val_raster_source=rv.RasterSourceConfig.builder(rv.RASTERIO_SOURCE) \ .with_uri(val_image_uri) \ .with_channel_order(channel_order) \ .with_stats_transformer() \ .build()val_label_raster_source=rv.RasterSourceConfig.builder(rv.RASTERIZED_SOURCE) \ .with_vector_source(val_label_uri) \ .with_rasterizer_options(background_class_id) \ .build()val_label_source=rv.LabelSourceConfig.builder(rv.SEMANTIC_SEGMENTATION) \ .with_raster_source(val_label_raster_source) \ .build()val_scene=rv.SceneConfig.builder() \ .with_task(task) \ .with_id('val_scene') \ .with_raster_source(val_raster_source) \ .with_label_source(val_label_source) \ .build()# ------------- DATASET -------------dataset=rv.DatasetConfig.builder() \ .with_train_scene(train_scene) \ .with_validation_scene(val_scene) \ .build()# ------------- EXPERIMENT -------------experiment=rv.ExperimentConfig.builder() \ .with_id('tiny-spacenet-experiment') \ .with_root_uri('/opt/data/rv') \ .with_task(task) \ .with_backend(backend) \ .with_dataset(dataset) \ .with_stats_analyzer() \ .build()returnexperimentif__name__=='__main__':rv.main()
光栅视觉使用类似unittest的方法来执行实验。例如,如果以上是在tiny_spacenet.py
中定义的,使用正确的设置,您可以使用:
> rastervision run local -p tiny_spacenet.py
有关运行此示例的更完整描述,请参见Quickstart。
资源
- Raster Vision Documentation
- raster-vision-examples:在开放数据集上运行rv的示例库
- raster-vision-aws:使用gpu设置aws批处理的部署代码
- raster-vision-qgis:在地图上可视化实验结果的qgis插件
联系和支持
您可以找到更多信息并与开发人员交谈(让我们知道您在做什么!)时间:
贡献
我们很乐意接受捐款!最好和维修人员联系 关于更大的功能或设计更改在开始工作之前, 因为它将使接受更改的过程更加顺利。
为光栅视觉提供代码的每个人都将被要求在 azavea cla,它基于apache cla。
下载Raster Vision Individual Contributor License Agreement的副本 或者Raster Vision Corporate Contributor License Agreement
打印出cla并签名,或者使用允许放置签名图像的pdf软件。
通过以下方式之一将CLAS发送到Azavea:
- 扫描文档并通过电子邮件发送到cla@azavea.com
- 邮寄硬拷贝至: 美国宾夕法尼亚州费城春花园街990号5楼Azavea,邮编19107