[关闭]
@sambodhi 2018-01-15T09:12:33.000000Z 字数 4935 阅读 2820

此处输入图片的描述

Label Maker:将卫星图和街景图生成机器学习数据集的利器

作者|Liu Zhiyong
编辑|Debra Chen

AI前线导语:人工智能技术最近炒得很火,一旦将其大规模用于军事领域,那将是改变规则的技术。美国已经开始利用人工智能技术在海量卫星照片中捕猎中国导弹阵地了。据美国《大众机械》网站报道,密苏里大学团队训练了一个深度学习算法,可在TB级数字图像中检测、识别中国的地对空导弹阵地。据称,人工智能程序不仅能够像人一样准确地找到这些阵地,而且远比人类更快。人工智能将被用来补充人类情报专家,帮助他们从数千平方英里的卫星图像中像大海捞针一样找到所需的目标。

那么我们又如何师夷长技以制夷呢?本文就介绍了如何利用Github的Label Maker项目为机器学习生成卫星地图和街景图的数据集。
更多干货内容请关注微信公众号“AI 前线”,(ID:ai-front)

关于OpenStreetMap

OpenStreetMap(开放街道地图,OSM)是由英国人Steve Coast创立的一个开源地图服务项目,其运营模式类似与维基百科,由志愿者们免费提供地图信息。个人、网站以及公司都可以使用它的地图信息。目前,该地图服务由英国非营利组织OpenStreetMap 基金会负责。

OSM已有超过两百万名注册用户。一如维基百科等网站,OSM网站地图页有“编辑”按钮,亦有记录修订历史。经注册的用户可上传GPS路径,及可编辑地图的向量数据,包括使用OSM网站的编辑器或其他自由地理信息系统软件,如JOSM。

OSM的地图由用户根据手持GPS设备、航空摄影照片、卫星视频、其他自由内容以至单靠用户由于对有关区域的熟悉而具有的本地知识绘制。地图的向量数据以开放数据库授权方式授权。

Label Maker项目简介

而我们也同样也可以用人工智能来将卫星图片和街景图片生成机器学习数据集,这个工具就是Github上的Label Maker项目[1],该项目利用了OpenStreetMap的QA Tile进行数据集的生成。OpenStreetMap QA Tile包含用于分析OpenStreetMap(QSM)的数据,将它们与Tile Reduce一起使用,将OpenStreetMap与其他数据集合在一起,可检测连接问题等错误,或者监视破坏行为,可以对OpenStreetMap数据执行任何基于分片的分析。

Label Maker项目的工具下载OpenStreetMap QA Tile信息和卫星图像分片,并将其保存为.npz[2]文件,以用于机器学习培训。

项目要求

安装

需要注意的是,运行这个库需要tippecanoe作为“同版本依赖(peer-dependency)”,且在运行该命令之前,应该可从你的命令行获得。

配置

在运行任何命令之前,需创建一个config.json文件,指定数据准备过程的输入:

命令行使用

label-maker is most easily used as a command line tool. There are five commands documented below. All commands accept two flags:

label-maker是最容易使用的命令行工具。下面有五个命令,所有的命令都接受两个标志:

示例:

$ label-maker download --dest flood-monitoring-project --config flood.json

下载

下载并解压OSM QA tile:

$ label-maker download
Saving QA tiles to data/ghana.mbtiles
100%     18.6 MiB       1.8 MiB/s            0:00:00 ETA

标记

将OSM数据恢复到所需的缩放级别,创建标签数据(labels.npz),计算类别统计信息,创建可视标签文件,(根据ml_type,可以使用GeoJSON或PNG文件)。需要上一步中的OSM QA tile。

$ label-maker labels
Determining labels for each tile
---
Residential: 638 tiles
Total tiles: 1189
Write out labels to data/labels.npz

预览

Downloads example satellite images for each class. Requires the labels.npz file from the previous step. Accepts an additional flag:
下载每个类的卫星图像的例子。需要上一步的labels.npz文件。接受一个额外的标志:

-n or --number: 为每类创建的实例图像的interger 个数。(缺省:5

$ label-maker preview -n 10
Writing example images to data/examples
Downloading 10 tiles for class Residential

图像

下载训练所需的所有图像分片,需要labels步骤中的labels.npz文件。

$ label-maker images
Downloading 1189 tiles to data/tiles

封包 Package

捆绑卫星图像和标签以创建最终的data.npz文件。需要labels步骤中的labels.npz文件和images步骤中下载的图像分片。

$ label-maker package
Saving packaged file to data/data.npz

使用封包数据

一旦你有一个封包的data.npz文件,你可以使用numpy.load[8]来加载它。作为一个示例,下面是如何将创建的数据提供给Keras[9]模型:

数据,在训练和测试集之间进行调整和分割

npz = np.load('data.npz')
x_train = npz['x_train']
y_train = npz['y_train']
x_test = npz['x_test']
y_test = npz['y_test']

此处定义你的模型,Keras的示范用例:

model = Sequential()
# ...
model.compile(...)

# train
model.fit(x_train, y_train, batch_size=16, epochs=50)
model.evaluate(x_test, y_test, batch_size=16)

要获得更为详细的演练,请查看这个示例页面:Label Maker Examples[10]

致谢

这个库建立在skynet-data[11]的理念之上。如果没有来自OpenStreetMap和Mapbox的出色数据,将无法获得以下许可证:

ref:

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注