2 计算机视觉的发展历程

在上一篇中,我们深入探讨了计算机视觉的定义与应用,了解到它作为一门交叉学科,在医学、自动驾驶、安防、社交媒体等众多领域扮演着重要的角色。接下来,我们将回顾计算机视觉的发展历程,了解这项技术在过去几十年中的演变过程,以及这些变革如何推动了今天的应用。

早期探索(20世纪60年代至80年代)

计算机视觉的起步可以追溯到20世纪60年代。早期的研究者试图使计算机能够“看”并理解图像。那个时候,研究更多集中在简单的图像处理和边缘检测,如使用 Canny 算法来识别图像中的边缘。

案例:边缘检测

以下是一个使用 OpenCV 实现 Canny 边缘检测的简单代码示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
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。以下是一个未完整的代码示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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 进行对象检测的代码示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
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 计算机视觉的发展历程

https://zglg.work/cv-network-tutorial/2/

作者

IT教程网(郭震)

发布于

2024-08-10

更新于

2024-08-11

许可协议

分享转发

交流

更多教程加公众号

更多教程加公众号

加入星球获取PDF

加入星球获取PDF

打卡评论