Image Recognition
图像识别用于判断图像包含什么,范围从为整张图分配一个标签,到识别图中的每个物体、人脸或文字。内容涵盖其工作原理和形式。
图像识别是指软件识别图像中内容的总称:物体、人物、地点、文本或动作。在日常用语中,它是图像分类的同义词,即为整张图像分配“金毛寻回犬”或“肺炎”这样的标签。在研究领域,“视觉识别”涵盖识别图像内容的更广泛任务,例如 ImageNet 大规模视觉识别挑战赛;该赛事于 2010 至 2017 年举办,设有分类、定位和目标检测赛道。
图像识别的工作原理#
识别模型将像素转化为紧凑的描述,然后将该描述与已知信息进行比较。骨干网络可以是卷积神经网络(CNN)或视觉 Transformer(ViT),它会逐层提取特征:较浅层提取边缘和纹理,较深层提取物体部件和完整物体,然后将这些特征池化为特征向量,也称为嵌入。后续处理取决于可能答案集合的定义方式:
在带标签的图像上通过监督学习训练的分类头(例如使用 ImageNet 1,000 个类别的 128 万张训练图像)会从其固定类别中选出概率最高的类别。人脸和产品识别会将嵌入与已存储样本库进行比较,因此无需重新训练就能添加新人脸或新产品。零样本模型,例如 OpenAI 的 CLIP,会将图像和文本嵌入同一空间,从而识别任何可以写成文本提示的类别。
在深度学习出现之前,识别系统会将人工设计的特征(例如 SIFT 关键点和方向梯度直方图)输入支持向量机等分类器。2012 年,AlexNet 将 ImageNet top-5 错误率从亚军的 26.2% 降至 15.3%;此后,学习得到的特征一直占据主导地位。
图像识别的形式#
- 图像分类:为整张图像分配一个标签,多标签分类则可分配多个标签。
- 目标检测:为每个物体分配一个类别标签和边界框,因此一张有三只狗的照片会产生三个结果。
- 人脸识别:通过将人脸嵌入与已登记的人脸进行比较,识别或验证特定人物。
- 光学字符识别(OCR):读取图像中的印刷体或手写文本,并将其转换为机器可读字符。
- 动作识别:识别视频各帧中人物正在进行的动作。
YOLO26支持前两种形式:其 -cls 模型会为整张图像分配 1,000 个 ImageNet 类别中的一个,其检测模型则会为每个物体标注类别并定位。以下示例在同一张照片上运行这两种模型:
from ultralytics import YOLO
image = "https://ultralytics.com/images/bus.jpg"
# 图像级识别:为整张图片分配一个标签
classifier = YOLO("yolo26n-cls.pt")
results = classifier(image)
result = results[0]
print("Image label:", result.names[result.probs.top1])
# 物体级识别:为找到的每个物体分配一个标签
detector = YOLO("yolo26n.pt")
results = detector(image)
result = results[0]
print("Objects:", [result.names[int(c)] for c in result.boxes.cls])分类器为整张照片返回一个 ImageNet 标签,检测器则为它找到的每个物体返回一个 COCO 标签。
实际应用#
- 医学图像分析:模型将胸部 X 光片、皮肤照片和视网膜扫描图分为正常和异常类别,让临床医生优先审核紧急病例。
- 零售:产品识别会将货架上或收银台的商品与产品图像目录进行匹配,包括模型训练完成后添加的商品。
- 制造业:生产线摄像头会在包装前识别有缺陷的零件,以及错误或缺失的组件。
- 无障碍:屏幕阅读器和手机应用会为盲人或低视力人群描述照片并朗读标识。
超越固定标签的识别#
固定标签分类器只能识别训练过的类别,若要添加新类别,就必须收集带标签的图像并重新训练。在图文对上训练的模型突破了这一限制,视觉语言模型还能进一步描述场景并回答有关场景的问题。CLIP 在来自互联网的 4 亿对图文数据上训练,无需使用 ResNet-50 训练所用的 128 万张标注图像,就以零样本方式达到了原始 ResNet-50 在 ImageNet 上的准确率。










