查看原文
其他

TensorFlow Lite 将涉足太空领域

Google TensorFlow 2021-07-27

文 /  Jacob Manning,匹兹堡大学



空间计算和立方体卫星

空间、高性能和弹性计算 (SHREC) 中心是美国国家科学基金会 (NSF) 支持的工业 — 大学合作研究中心 (IUCRC) 下设的一个全国性研究联盟。SHREC 由 30 多个行业、政府,以及学术合作伙伴组成,其领导机构位于匹兹堡大学。


匹大 SHREC 其中一个主要研究领域是小型卫星,包括立方体卫星(以 “单位” 或 “U” 定义,1 单位等于 1,000 立方厘米)。1U 的立方体卫星大小约与一个垒球相当。立方体卫星和所有航天器都必须忍受恶劣的环境条件,包括发射时的振动、温度大幅波动、真空,以及宇宙和太阳辐射。因此,航天器上的电子设备通常会配备慢速的抗辐射 (RadHard) 组件,以提高设备在这些恶劣环境中的系统稳定性。


SHREC 最近取得的一项重大成就是研究、开发、验证并部署其混合可重构飞行计算机 CSP。该计算机将 RadHard 与商用现货 (COTS) 组件、固定可重构逻辑电路,以及容错计算能力相结合。此策略旨在减少整体系统成本,并在显著提升性能的同时维持高可靠性。CSP(如下所示)配备一个 Xilinx Zynq-7020 处理器,该处理器包含一个 Artix-7 现场可编程门阵列 (FPGA) 和一个双核 ARM Cortex A9 CPU。


我们与美国国防部 (DoD) 及其空间测试项目 (STP),以及美国国家航空航天局 (NASA) 戈达德太空飞行中心 (GSFC) 合作,在 STP-H5 任务中开展针对两台 CSP 的实验。2017 年 2 月,STP-H5 搭载 SpaceX CRS-10 前往太空,自此,其 CSP 实验一直在匹大 SHREC 地面站的控制下顺利开展。



机器学习的空间应用

为了证明 CSP 平台的能力,SHREC 的一个核心研究领域是空间计算应用。随着机器学习的普及程度和能力不断提高,SHREC 于 2017 年开始探索机器学习的空间应用。


我们在 STP-H5/CSP 系统中加入一台地球观测相机,以供两台 CSP 执行感测和处理任务。全分辨率的图像为 2448x2050 像素,但相机与地面站的连接速度仅为数十千比特,因此从太空向地面传输这些图像会花费大量时间,而且下载的图像通常不见得有趣。由于国际空间站 (ISS) 昼夜更替的影响,下载的许多图像不是漆黑一片就是发白褪色,毫无用处。我们认为,我们可以借此机会,将机器学习应用到 CSP 的图像分类中。我们的目标是识别我们系统中的图像,然后下载有趣的全分辨率图像,同时舍弃无用的图像。为了在实验中测试现代图像分类方法的实用性,并证明 CSP 的计算能力,我们使用 TensorFlow 构建了相应的卷积神经网络 (CNN),以对图像进行分类。



STP-H5/CSP 数据集

在过去一年中,我们从 STP-H5/CSP 上的相机中下载了约 8,000 张图像缩略图(图像分辨率为 489x410 像素)。然后,我们使用这些图像创建了一个用于训练图像分类模型的小型数据集。我们将图像分为以下五类:黑色、云 / 水、失真、陆地,以及白色(如下所示)。黑色图像表示捕捉图像时 ISS 的轨道处于黑夜阶段。白色或失真图像可能表示由于 STP-H5 上的其他实验作出更改,导致相机的曝光设置出现错误。



使用 TensorFlow Hub 开展迁移学习

由于 STP-H5/CSP 数据集有限,我们选择通过迁移学习重新训练已在 ImageNet 上完成预训练的深度 CNN。此 Codelab 演示如何使用迁移学习,在看不见的数据集上重新训练模型。迁移学习是我们训练过程中的关键一环,因为我们没有足够的数据、时间或计算能力来从头训练深度 CNN。

注:Codelab 链接

https://codelabs.developers.google.com/codelabs/tensorflow-for-poets/#0


此外,TensorFlow Hub 还能让我们重新训练诸多 CNN 架构,并快速比较准确度结果。TensorFlow Hub 使用与 Codelab 相同的重新训练代码,可作为迁移学习的起点。

python retrain.py \
   — image_dir ~/flower_photos \
   — tfhub_module https://tfhub.dev/google/imagenet/mobilenet_v2_100_224/feature_vector/2


我们将研究重点集中于四个架构:MobileNetV1、MobileNetV2、Inception-ResNetV2 和 NASNet Mobile。四个架构全部表现良好,且每个架构都实现了大于 93% 的 top-1 准确率和大于 99% 的 top-2 准确率。



为什么选择 TensorFlow Lite?

与基于 x86 的系统不同,大多数 ARM 系统(例如 CSP 上的系统)没有支持的预构建 TensorFlow 软件包(即安装过程并不像使用 pip 安装 TensorFlow 那样简单)。此外,在内存和计算能力有限的嵌入式系统中,Python 前端会为系统增加大量开销,并减慢推理速度。


TensorFlow Lite 开发者预览版于 2017 年 11 月发布,在此之前,我们正在探索使用完整的 TensorFlow C++ 库。为了确定在嵌入式硬件上应用 CNN 的可行性,我们针对 MNIST 数据集,训练了一个简单的 LeNet-5 模型,并对 TensorFlow C++ 库在 CSP 上的性能进行基准测试。TensorFlow Lite 发布后,我们针对相同的 MNIST 示例,对 TensorFlow Lite 的性能进行基准测试。


原生 TensorFlow C++ 在 CSP 上的主要缺点是内存使用量过高。相比原生 TensorFlow,TensorFlow Lite 可以实现更快的执行速度和更少的内存使用量。


表 1:在 CSP 上使用 LeNet-5 对 MNIST 图片进行分类时的执行时间和内存使用量



使用 TensorFlow Lite 冻结、转换和运行已训练的模型

在使用 TensorFlow 完成模型训练和测试后,需要完成三个步骤方能使用 TensorFlow Lite 部署已训练的模型:冻结已训练模型、转换为 TensorFlow Lite 模型格式、编写 C++ 程序以执行转换后的模型。


冻结模型是指将训练操作从 TensorFlow 图中移除,并序列化已训练的权重。

freeze_graph — input_graph=/tmp/mobilenet_v1_224.pb \
 — input_checkpoint=/tmp/checkpoints/mobilenet-10202.ckpt \
 — input_binary=true \
 — output_graph=/tmp/frozen_mobilenet_v1_224.pb \
 — output_node_names=MobileNetV1/Predictions/Reshape_1


TensorFlow 和 TensorFlow Lite 使用不同的模型格式(分别为协议缓冲区和平面缓冲区),因此我们必须将 TensorFlow 模型转换为 TensorFlow Lite 格式,这样才能使用 TensorFlow Lite 运行此类模型。

tflite_convert \
 — output_file=/tmp/mobilenet_v1_1.0_224.tflite \
 — graph_def_file=/tmp/mobilenet_v1_0.50_128/frozen_graph.pb \
 — input_arrays=input \
 — output_arrays=MobilenetV1/Predictions/Reshape_1


最后,要运行 TensorFlow Lite 模型,就必须加载模型和输入数据,然后将输入数据输入模型。此流程的最佳示范是 ImageNet 模型的内置示例。如有必要,此代码可以根据不同的数据、模型等内容路径进行修改,还可以展示与 TensorFlow Lite API 交互的样板文件。流程结束后,可以修改 TensorFlow Lite 的生成文件以编译程序(遵循 MINIMAL_BINARY 示例结构,以链接到 TensorFlow Lite 库)。

注:ImageNet 模型的内置示例 链接

https://github.com/tensorflow/tensorflow/blob/master/tensorflow/lite/examples/label_image/label_image.cc



CSP 上的 TensorFlow Lite

我们在 CSP 上部署训练好的 MobileNetV1 模型,然后对推理性能进行基准测试。


CSP 在以 11 FPS(每次图像分类耗时 89 毫秒)的速度运行最小的 MobileNetV1 变体(宽度乘数为 0.25,图像分辨率为 128x128 像素)时仅使用了 8 MB 内存。最大的 MobileNetV1 变体(宽度乘数为 1.0,图像分辨率为 224x224 像素)在运行速度小于 1 FPS(每次图像分类耗时 1383 毫秒)时使用了 41 MB 内存。我们发现宽度乘数对执行时间和内存使用量的影响大于对图像分辨率的影响。



未来发展

CSP 等嵌入式板载空间处理系统能够借助 TensorFlow Lite,使用最先进的深度学习技术。此外,TensorFlow Hub 可以简化迁移学习过程,并支持快速设计深度学习模型原型。


未来,SHREC 研究人员计划探索大量嵌入式机器学习应用,包括空间语义分割、高光谱图像分类、无人机和立方体卫星的群逻辑,以及生成式压缩。如需了解有关 SHREC 的详细信息,请访问 https://www.nsf-shrec.org。


如需了解有关此具体研究的详细信息,可在线查看 完整论文(https://digitalcommons.usu.edu/smallsat/2018/all2018/458/)



更多 AI 相关阅读:



    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存