2 计算机视觉的发展历程
系列进度
计算机视觉网络教程 · 第 2 / 31 篇
整理说明
这篇内容怎么整理
郭震 · 2026-06-04
阅读路线
先按这条路线读
先抓住主线,再回到代码、配置和图文细节,读起来会更稳。
这条发展线能帮你理解为什么今天很多视觉任务都用深度学习。早期方法强调人工设计特征,后来的神经网络开始直接从数据里学习表示。
我会把每个阶段解决了什么、留下了什么问题写下来。这样看新模型时,不会只被名字吸引,而能看出它继承和改进了哪里。
在上一篇中,我们深入探讨了计算机视觉的定义与应用,了解到它作为一门交叉学科,在医学、自动驾驶、安防、社交媒体等众多领域扮演着重要的角色。接下来,我们将回顾计算机视觉的发展历程,了解这项技术在过去几十年中的演变过程,以及这些变革如何推动了今天的应用。
早期探索(20世纪60年代至80年代)
计算机视觉的起步可以追溯到20世纪60年代。早期的研究者试图使计算机能够“看”并理解图像。那个时候,研究更多集中在简单的图像处理和边缘检测,如使用 Canny 算法来识别图像中的边缘。
阅读计算机视觉的发展历程时,重点看特征提取方式如何变化。人工设计、卷积网络和大模型视觉能力之间的差异,会影响你选择学习重点。
案例:边缘检测
以下是一个使用 OpenCV 实现 Canny 边缘检测的简单代码示例:
import cv2
import matplotlib.pyplot as plt
# 读取图像
image = cv2.imread('image.jpg', cv2.IMREAD_GRAYSCALE)
# 应用Canny边缘检测
edges = cv2.Canny(image, 100, 200)
# 展示结果
plt.subplot(121), plt.imshow(image, cmap='gray'), plt.title('Original Image')
plt.subplot(122), plt.imshow(edges, cmap='gray'), plt.title('Canny Edges')
plt.show()
这一时期的重要里程碑包括对“视觉”的一般理解,以及如何通过人工算法处理图像。但由于计算能力的限制,许多想法并未得到充分实现。
机器学习的引入(90年代至2000年代初)
进入90年代,随着技术的发展,特别是机器学习的应用开始获得关注。研究人员利用统计和学习算法来识别和分类图像中的对象。
学《计算机视觉的发展历程》时,可以先找一个自己能复现的小场景,再看相关概念和练习步骤,读完后用自己的例子复述一遍。
支持向量机(SVM) 和 k-最近邻(k-NN) 等算法被广泛用于图像分类和对象识别任务。
案例:图像分类
一个简单的图像分类例子可以使用 SVM。以下是一个未完整的代码示例:
from sklearn import datasets
from sklearn import svm
from sklearn.model_selection import train_test_split
# 加载数据集(如手写数字数据集)
digits = datasets.load_digits()
X = digits.data
y = digits.target
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
# 训练SVM模型
clf = svm.SVC()
clf.fit(X_train, y_train)
# 预测
predictions = clf.predict(X_test)
这一阶段,计算机视觉得到了飞速发展,技术也开始融入实际应用中,比如在医学影像分析中用于辅助诊断。
深度学习的兴起(2000年代中期至今)
随着深度学习的出现,卷积神经网络(CNN)迅速成为计算机视觉领域的核心。2012年,AlexNet在ImageNet竞赛中以显著的优势获胜,标志着深度学习在计算机视觉中的革命。
深度学习不仅提高了图像分类的精度,还使得实时对象检测、分割及图像生成等任务取得了长足发展。这一阶段的关键技术包括:YOLO(实时目标检测)、Faster R-CNN等。
案例:对象检测
使用 YOLO 进行对象检测的代码示例:
import cv2
import numpy as np
# 加载YOLO
net = cv2.dnn.readNet("yolov3.weights", "yolov3.cfg")
layer_names = net.getLayerNames()
output_layers = [layer_names[i[0] - 1] for i in net.getUnconnectedOutLayers()]
# 读取图片
img = cv2.imread('image.jpg')
height, width, _ = img.shape
# 检测对象
blob = cv2.dnn.blobFromImage(img, 0.00392, (416, 416), (0, 0, 0), True, crop=False)
net.setInput(blob)
outs = net.forward(output_layers)
# 提取信息并绘制检测框
for out in outs:
for detection in out:
scores = detection[5:]
class_id = np.argmax(scores)
confidence = scores[class_id]
if confidence > 0.5:
# 计算坐标并绘制框
...
在这一阶段,计算机视觉技术广泛应用于自动驾驶车辆、实时监控、人脸识别等多个领域,改变了我们的生活方式。
学完《计算机视觉的发展历程》后,不妨换一个自己的场景试一次,重点观察输入、处理和输出是否能对应起来。
如果想把《计算机视觉的发展历程》用到自己的任务里,可以先缩小场景,只验证一个最关键的判断点。
结论
计算机视觉从最初的简单图像处理探索,到机器学习的应用,再到深度学习的革命,经历了几个阶段的发展。如今,计算机视觉技术已成为现代科技的重要组成部分,正在不断推动产业创新与发展。
在下一篇中,我们将探讨计算机视觉的主要任务与挑战,继续深入这一领域的白金时代。
继续阅读
从这篇继续找到相关教程
常见问题
读前先确认这三点
计算机视觉的发展历程适合谁读?
这是 计算机视觉网络教程 系列第 2 / 31 篇,适合正在学习计算机视觉网络教程,并且需要把概念落到操作步骤或判断标准里的读者。
读这篇计算机视觉网络教程要多久?
按中文技术文章阅读速度估算,通读大约 3 分钟;如果要跟着复现,建议把命令、配置和结果检查分开做。
这篇文章里的图文节点怎么用?
正文里有 6 个图文节点,可以先用它们抓住流程、配置和判断点,再回到对应段落细读。
分享文章
转发到常用平台
微信/朋友圈可先复制链接
相关教程
从相近问题继续读
继续阅读