图像分割是将数字图像分割成多个片段(像素集,也称为图像对象)的过程。分割的目标是简化和/或更改图像的表示,使其更具意义且更易于分析。
下图显示了图像分割模型在 Android 上的输出。该模型将以高精度在目标对象上创建蒙版。
入门
如果您是 TensorFlow Lite 的新手,并且正在使用 Android 或 iOS,建议您探索以下示例应用程序,它们可以帮助您入门。
您可以利用 TensorFlow Lite 任务库 的开箱即用 API,只需几行代码即可集成图像分割模型。您也可以使用 TensorFlow Lite 解释器 Java API 集成模型。
以下 Android 示例演示了两种方法的实现,分别为 lib_task_api 和 lib_interpreter。
如果您使用的是 Android 或 iOS 以外的平台,或者您已经熟悉 TensorFlow Lite API,您可以下载我们的入门图像分割模型。
模型描述
DeepLab 是一种用于语义图像分割的最先进的深度学习模型,其目标是为输入图像中的每个像素分配语义标签(例如,人、狗、猫)。
工作原理
语义图像分割预测图像的每个像素是否与某个类别相关联。这与 目标检测 不同,目标检测在矩形区域中检测对象,也不同于 图像分类,图像分类对整个图像进行分类。
当前实现包括以下功能
- DeepLabv1:我们使用空洞卷积来明确控制在深度卷积神经网络中计算特征响应的分辨率。
- DeepLabv2:我们使用空洞空间金字塔池化 (ASPP) 来稳健地分割不同尺度的对象,使用具有多种采样率和有效视野的过滤器。
- DeepLabv3:我们用图像级特征 [5, 6] 增强 ASPP 模块,以捕获更长范围的信息。我们还包括批处理归一化 [7] 参数以促进训练。特别是,我们在训练和评估期间应用空洞卷积来提取不同输出步幅的输出特征,这有效地使输出步幅 = 16 处的训练 BN 成为可能,并在评估期间以输出步幅 = 8 实现了高性能。
- DeepLabv3+:我们扩展了 DeepLabv3,包括一个简单但有效的解码器模块,以细化分割结果,尤其是在对象边界附近。此外,在这个编码器-解码器结构中,可以通过空洞卷积任意控制提取的编码器特征的分辨率,以权衡精度和运行时间。
性能基准
性能基准数字是使用 此处描述的工具 生成的。
模型名称 | 模型大小 | 设备 | GPU | CPU |
---|---|---|---|---|
Deeplab v3 | 2.7 Mb | Pixel 3 (Android 10) | 16ms | 37ms* |
Pixel 4 (Android 10) | 20ms | 23毫秒* | ||
iPhone XS (iOS 12.4.1) | 16ms | 25毫秒** |
* 使用了 4 个线程。
** 在 iPhone 上使用 2 个线程以获得最佳性能结果。