第二章 图像分类基础:从传统到深度学习

图像分类,说白了就是让计算机看懂图片里「是什么」。比如你拍了一张猫的照片,模型告诉你「这是猫」。听起来简单,但背后涉及的特征提取、模式识别,我当年刚入行时也绕了不少弯路。

什么是图像分类?

图像分类的任务是:给定一张输入图像,模型输出它属于哪个预定义类别。比如一个分类器有「猫、狗、鸟」三个类别,输入一张猫图,输出就是「猫」。

嗯,这里要注意:分类不是「识别物体位置」,它只回答「是什么」,不回答「在哪里」。如果你想同时知道位置,那是目标检测的事,咱们后面章节会讲。

我在项目中遇到过最典型的场景:给电商平台做商品图片自动归类。用户上传一张鞋子照片,系统自动判断是「运动鞋」「皮鞋」还是「拖鞋」。这个看似简单的任务,传统方法做起来却非常吃力。

传统方法与深度学习对比

咱们先聊聊传统方法。我刚开始做图像分类时,用的还是SIFT特征加SVM分类器。流程大概是:

  1. 手工设计特征(颜色直方图、纹理、边缘等)
  2. 提取特征向量
  3. 训练分类器(SVM、随机森林等)

你想想看,手工设计特征有多痛苦?你要绞尽脑汁想「什么样的特征能区分猫和狗」。是耳朵形状?还是毛色分布?我当年调特征调了两个月,准确率死活卡在75%。

后来深度学习来了,一切都变了。卷积神经网络(CNN)自动学习特征,从像素到边缘、从边缘到纹理、从纹理到物体部件,层层抽象。我印象特别深,第一次用AlexNet跑自己的数据集,准确率直接跳到92%。

核心区别一句话总结:

  • 传统方法:人告诉机器「看什么特征」
  • 深度方法:机器自己学「该看什么特征」

我画了一张对比图,帮你直观理解两者的差异:

传统方法流程 输入图像 → 手工特征 → SVM分类 人手工设计特征 → 提取 → 分类 深度学习方法流程 输入图像 → CNN自动学习 → 分类输出 端到端学习,特征自动提取 对比总结 传统方法: • 依赖人工经验 • 特征设计耗时 • 泛化能力弱 深度方法: • 自动学习特征 • 端到端训练 • 泛化能力强

我的建议:如果你做移动端部署,数据量小于1000张,传统方法可能更稳。数据量上万,果断上深度学习。我踩过的坑就是——小数据集硬上CNN,结果过拟合得一塌糊涂。

图像分类的评估指标

模型训练好了,怎么知道它好不好?光看准确率可不够。我当年给客户做项目,准确率95%,客户很开心。结果一上线,发现模型把「黑色运动鞋」全识别成了「皮鞋」——因为训练集里黑色皮鞋太多了。

所以我们需要一套完整的评估指标。先理解几个基础概念:

预测\真实 正类(Positive) 负类(Negative)
预测为正类 TP(真正例) FP(假正例)
预测为负类 FN(假负例) TN(真负例)

举个例子:你要识别图片里有没有「猫」。一张图里有猫,模型说「有猫」→ TP。图里没猫,模型说「有猫」→ FP。图里有猫,模型说「没猫」→ FN。图里没猫,模型说「没猫」→ TN。

准确率(Accuracy)

准确率 = (TP + TN) / (TP + TN + FP + FN)

说白了就是「猜对的占总数的比例」。听起来很直观对吧?但这里有个大坑。

我曾经踩过的坑:做医疗图像分类,99%的图片是「正常」,1%是「病变」。模型什么都不做,全部预测「正常」,准确率99%!但这样的模型有什么用?

所以,数据不平衡时,准确率会骗人。

精确率(Precision)

精确率 = TP / (TP + FP)

它回答的问题是:「模型说『是』的时候,到底有多靠谱?」

我习惯这么理解:精确率高,意味着模型很少「误报」。比如垃圾邮件过滤,你肯定不希望把重要邮件误判成垃圾邮件,所以精确率要拉满。

召回率(Recall)

召回率 = TP / (TP + FN)

它回答的问题是:「真正的正类,模型找出来了多少?」

召回率高,意味着模型很少「漏报」。比如癌症筛查,宁可误报也不能漏掉一个病人。所以召回率是首要指标。

F1-Score

F1 = 2 × (Precision × Recall) / (Precision + Recall)

精确率和召回率往往互相矛盾——你追求精确率,召回率就会下降;反之亦然。F1-score是两者的调和平均,一个综合指标。

我个人的经验:做移动端部署时,F1-score比准确率更有参考价值。因为移动端数据往往分布不均,F1能更真实反映模型质量。

一句话记住四个指标:

  • 准确率:整体猜对的概率
  • 精确率:猜「是」的时候有多准
  • 召回率:真正的「是」找出了多少
  • F1-score:精确率和召回率的平衡点

举个实际例子。我做过一个项目:识别手机相册里的「美食照片」。训练集里美食占60%,其他占40%。模型A:准确率90%,精确率85%,召回率70%。模型B:准确率88%,精确率70%,召回率92%。

你会选哪个?

如果用户希望「不错过任何一张美食照」,选B(召回率高)。如果用户希望「推荐的美食照都是精品」,选A(精确率高)。没有的好坏,取决于业务场景。

嗯,这就是为什么我总说:评估指标不是数学题,是业务题。

好了,这一章的内容就到这里。记住:理解评估指标,比调参更重要。指标选错了,模型再强也是白搭。

可可精品资料库