如果我家的监控摄像头的照片可以告诉我后院的草变得越来越黄(受热压力),那么在炎热的夏天调整喷水灭火系统可能对我有用。
如果一个模型可以量化照片中体育场内人物的百分比,我们就可以用它来估计售出的门票数量。
人们可以通过比较整个时间的叶面积来使用照片监测植物生长。
你可以通过本文回答上述问题或愿望清单。
训练用于图像识别的深度学习神经网络模型通常很昂贵,训练像 CNN 这样的深度神经网络模型通常需要大量的训练数据和昂贵的 GPU 计算能力。
如何才能“站在巨人的肩膀上”?通过反复试验,发现使用具有计算机视觉(openCV 功能)的预训练深度学习模型可能是一种强大而有效的出路。
最终目标
到本文结束时,无需训练深度学习模型,你将能够
对图像进行分类并从图像中提取感兴趣区域。
提取图像的百分比,来自人或汽车或其他 16 个预先确定的类别
通过比较从草图像中提取的统计数据,了解花园里的草在炎热的夏天是否承受压力。
从草的照片中提取绿色直方图
预训练语义分割模型
训练了语义分割模型;模型工件和端点是按照 AWS 文档 [1] 创建的。
语义分割 (SS) 是将图像中的每个像素与来自一组已知标签的类进行分类的任务。
相比之下,图像分类只为每张图像生成一个标签,而对象检测为图像中的每个对象生成一个边界框和标签。
语义分割输出通常表示为图像中的不同像素值。
因此,输出是一个与输入图像具有相同形状的整数矩阵(或灰度图像)。此输出图像也称为分割掩码。
在本文中,我们将调用预训练的深度学习端点进行图像识别。
示例 1:从图像中提取洞察力:照片中人物的区域
下载,可视化照片,缩小照片尺寸
from matplotlib import pyplot as plt
import PIL
%matplotlib inline
#1. download photo save to local drive, visualize the photo and reduce size
filename = "./data/street.jpg"
width = 800
im = PIL.Image.open(filename)
aspect = im.size[0] / im.size[1]
im.thumbnail([width, int(width / aspect)], PIL.Image.ANTIALIAS)
im.save(filename, "JPEG")
plt.imshow(im)
plt.show()
照片尺寸调整为宽度 800,并保持原始纵横比。
使用预训练的深度学习模型
用户可以附加端点或模型工件以进行模型预测。在这里,我们使用 sagemaker 中的预训练端点。
建议使用更便宜的实例/虚拟机进行端点预测。在本教程中,我使用 ml.c5.xlarge 机器