人工智能:计算机视觉的基础与应用

引言:从"看见"到"理解"

计算机视觉(Computer Vision, CV)是人工智能领域中最具挑战性、也最激动人心的分支之一。它的核心目标是让机器能够像人类一样"看见"并"理解"视觉世界。从智能手机的人脸解锁、自动驾驶汽车的障碍物识别,到医疗影像的病灶分析、工业质检的瑕疵检测,计算机视觉技术正以前所未有的深度和广度融入我们的生活与生产。

本文旨在系统性地介绍计算机视觉的基础知识、核心技术、主流应用场景以及未来的发展趋势,为初学者和从业者提供一个清晰的认知框架。

第一部分:计算机视觉的基础概念

1.1 什么是计算机视觉?

计算机视觉是一门研究如何让机器从数字图像或视频中获取信息、理解内容并做出决策的科学。它试图构建能够自动从图像中提取、分析和理解有用信息的算法与系统。

1.2 计算机视觉 vs. 图像处理 vs. 计算机图形学

这三个领域密切相关但目标不同:

  • 图像处理 (Image Processing):侧重于图像的变换、增强、去噪等操作,输入和输出都是图像。
  • 计算机图形学 (Computer Graphics):从模型或数据生成图像(渲染),是"从无到有"的过程。
  • 计算机视觉 (Computer Vision):从图像中提取信息、理解内容,是"从有到知"的过程。

#mermaid-svg-QPGvDUOGw1o1Ir9T{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-QPGvDUOGw1o1Ir9T .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-QPGvDUOGw1o1Ir9T .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-QPGvDUOGw1o1Ir9T .error-icon{fill:#552222;}#mermaid-svg-QPGvDUOGw1o1Ir9T .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-QPGvDUOGw1o1Ir9T .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-QPGvDUOGw1o1Ir9T .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-QPGvDUOGw1o1Ir9T .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-QPGvDUOGw1o1Ir9T .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-QPGvDUOGw1o1Ir9T .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-QPGvDUOGw1o1Ir9T .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-QPGvDUOGw1o1Ir9T .marker{fill:#333333;stroke:#333333;}#mermaid-svg-QPGvDUOGw1o1Ir9T .marker.cross{stroke:#333333;}#mermaid-svg-QPGvDUOGw1o1Ir9T svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-QPGvDUOGw1o1Ir9T p{margin:0;}#mermaid-svg-QPGvDUOGw1o1Ir9T .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-QPGvDUOGw1o1Ir9T .cluster-label text{fill:#333;}#mermaid-svg-QPGvDUOGw1o1Ir9T .cluster-label span{color:#333;}#mermaid-svg-QPGvDUOGw1o1Ir9T .cluster-label span p{background-color:transparent;}#mermaid-svg-QPGvDUOGw1o1Ir9T .label text,#mermaid-svg-QPGvDUOGw1o1Ir9T span{fill:#333;color:#333;}#mermaid-svg-QPGvDUOGw1o1Ir9T .node rect,#mermaid-svg-QPGvDUOGw1o1Ir9T .node circle,#mermaid-svg-QPGvDUOGw1o1Ir9T .node ellipse,#mermaid-svg-QPGvDUOGw1o1Ir9T .node polygon,#mermaid-svg-QPGvDUOGw1o1Ir9T .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-QPGvDUOGw1o1Ir9T .rough-node .label text,#mermaid-svg-QPGvDUOGw1o1Ir9T .node .label text,#mermaid-svg-QPGvDUOGw1o1Ir9T .image-shape .label,#mermaid-svg-QPGvDUOGw1o1Ir9T .icon-shape .label{text-anchor:middle;}#mermaid-svg-QPGvDUOGw1o1Ir9T .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-QPGvDUOGw1o1Ir9T .rough-node .label,#mermaid-svg-QPGvDUOGw1o1Ir9T .node .label,#mermaid-svg-QPGvDUOGw1o1Ir9T .image-shape .label,#mermaid-svg-QPGvDUOGw1o1Ir9T .icon-shape .label{text-align:center;}#mermaid-svg-QPGvDUOGw1o1Ir9T .node.clickable{cursor:pointer;}#mermaid-svg-QPGvDUOGw1o1Ir9T .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-QPGvDUOGw1o1Ir9T .arrowheadPath{fill:#333333;}#mermaid-svg-QPGvDUOGw1o1Ir9T .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-QPGvDUOGw1o1Ir9T .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-QPGvDUOGw1o1Ir9T .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-QPGvDUOGw1o1Ir9T .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-QPGvDUOGw1o1Ir9T .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-QPGvDUOGw1o1Ir9T .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-QPGvDUOGw1o1Ir9T .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-QPGvDUOGw1o1Ir9T .cluster text{fill:#333;}#mermaid-svg-QPGvDUOGw1o1Ir9T .cluster span{color:#333;}#mermaid-svg-QPGvDUOGw1o1Ir9T div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-QPGvDUOGw1o1Ir9T .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-QPGvDUOGw1o1Ir9T rect.text{fill:none;stroke-width:0;}#mermaid-svg-QPGvDUOGw1o1Ir9T .icon-shape,#mermaid-svg-QPGvDUOGw1o1Ir9T .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-QPGvDUOGw1o1Ir9T .icon-shape p,#mermaid-svg-QPGvDUOGw1o1Ir9T .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-QPGvDUOGw1o1Ir9T .icon-shape .label rect,#mermaid-svg-QPGvDUOGw1o1Ir9T .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-QPGvDUOGw1o1Ir9T .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-QPGvDUOGw1o1Ir9T .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-QPGvDUOGw1o1Ir9T :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 计算机视觉

Computer Vision
从图像中提取信息

理解内容

'从有到知'
图像处理

Image Processing
图像变换/增强/去噪

输入输出都是图像
计算机图形学

Computer Graphics
从模型生成图像

渲染

'从无到有'
视觉相关领域

1.3 核心任务层级

计算机视觉的任务通常分为三个层次:

  1. 低层视觉 (Low-level Vision):像素级操作,如边缘检测、角点检测、图像滤波。
  2. 中层视觉 (Mid-level Vision):对象级操作,如图像分割、目标检测、特征匹配。
  3. 高层视觉 (High-level Vision):语义级理解,如图像分类、场景理解、行为识别。

第二部分:核心技术:从传统方法到深度学习

2.1 传统计算机视觉方法

在深度学习兴起之前,计算机视觉主要依赖手工设计的特征和机器学习模型。

关键步骤:

  1. 预处理:灰度化、归一化、去噪。
  2. 特征提取 :使用算法从图像中提取有区分度的特征。
    • SIFT (尺度不变特征变换):对旋转、尺度缩放、亮度变化保持不变性。
    • SURF (加速稳健特征):SIFT的加速版。
    • HOG (方向梯度直方图):常用于行人检测。
    • LBP (局部二值模式):用于纹理分类。
  3. 特征描述与匹配:将提取的特征转换为向量,并进行相似度计算。
  4. 分类/识别:使用SVM、随机森林等分类器进行判断。

#mermaid-svg-msOKjiVAKA37jYSe{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-msOKjiVAKA37jYSe .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-msOKjiVAKA37jYSe .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-msOKjiVAKA37jYSe .error-icon{fill:#552222;}#mermaid-svg-msOKjiVAKA37jYSe .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-msOKjiVAKA37jYSe .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-msOKjiVAKA37jYSe .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-msOKjiVAKA37jYSe .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-msOKjiVAKA37jYSe .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-msOKjiVAKA37jYSe .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-msOKjiVAKA37jYSe .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-msOKjiVAKA37jYSe .marker{fill:#333333;stroke:#333333;}#mermaid-svg-msOKjiVAKA37jYSe .marker.cross{stroke:#333333;}#mermaid-svg-msOKjiVAKA37jYSe svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-msOKjiVAKA37jYSe p{margin:0;}#mermaid-svg-msOKjiVAKA37jYSe .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-msOKjiVAKA37jYSe .cluster-label text{fill:#333;}#mermaid-svg-msOKjiVAKA37jYSe .cluster-label span{color:#333;}#mermaid-svg-msOKjiVAKA37jYSe .cluster-label span p{background-color:transparent;}#mermaid-svg-msOKjiVAKA37jYSe .label text,#mermaid-svg-msOKjiVAKA37jYSe span{fill:#333;color:#333;}#mermaid-svg-msOKjiVAKA37jYSe .node rect,#mermaid-svg-msOKjiVAKA37jYSe .node circle,#mermaid-svg-msOKjiVAKA37jYSe .node ellipse,#mermaid-svg-msOKjiVAKA37jYSe .node polygon,#mermaid-svg-msOKjiVAKA37jYSe .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-msOKjiVAKA37jYSe .rough-node .label text,#mermaid-svg-msOKjiVAKA37jYSe .node .label text,#mermaid-svg-msOKjiVAKA37jYSe .image-shape .label,#mermaid-svg-msOKjiVAKA37jYSe .icon-shape .label{text-anchor:middle;}#mermaid-svg-msOKjiVAKA37jYSe .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-msOKjiVAKA37jYSe .rough-node .label,#mermaid-svg-msOKjiVAKA37jYSe .node .label,#mermaid-svg-msOKjiVAKA37jYSe .image-shape .label,#mermaid-svg-msOKjiVAKA37jYSe .icon-shape .label{text-align:center;}#mermaid-svg-msOKjiVAKA37jYSe .node.clickable{cursor:pointer;}#mermaid-svg-msOKjiVAKA37jYSe .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-msOKjiVAKA37jYSe .arrowheadPath{fill:#333333;}#mermaid-svg-msOKjiVAKA37jYSe .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-msOKjiVAKA37jYSe .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-msOKjiVAKA37jYSe .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-msOKjiVAKA37jYSe .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-msOKjiVAKA37jYSe .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-msOKjiVAKA37jYSe .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-msOKjiVAKA37jYSe .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-msOKjiVAKA37jYSe .cluster text{fill:#333;}#mermaid-svg-msOKjiVAKA37jYSe .cluster span{color:#333;}#mermaid-svg-msOKjiVAKA37jYSe div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-msOKjiVAKA37jYSe .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-msOKjiVAKA37jYSe rect.text{fill:none;stroke-width:0;}#mermaid-svg-msOKjiVAKA37jYSe .icon-shape,#mermaid-svg-msOKjiVAKA37jYSe .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-msOKjiVAKA37jYSe .icon-shape p,#mermaid-svg-msOKjiVAKA37jYSe .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-msOKjiVAKA37jYSe .icon-shape .label rect,#mermaid-svg-msOKjiVAKA37jYSe .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-msOKjiVAKA37jYSe .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-msOKjiVAKA37jYSe .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-msOKjiVAKA37jYSe :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 深度学习计算机视觉流程
传统计算机视觉流程
手工设计特征
自动学习特征
原始图像
预处理

灰度化/归一化/去噪
特征提取

SIFT/SURF/HOG/LBP
特征描述与匹配
分类器

SVM/随机森林
识别结果
原始图像
预处理

标准化
卷积神经网络

CNN
端到端学习
识别结果

2.2 深度学习革命

深度学习,特别是卷积神经网络(CNN),彻底改变了计算机视觉的范式,实现了端到端的自动特征学习。

核心网络架构演进:

  • LeNet-5 (1998):手写数字识别的开创者。
  • AlexNet (2012):在ImageNet竞赛中大幅领先,点燃了深度学习的热潮。
  • VGGNet (2014):通过堆叠3x3卷积层构建深层网络,结构简洁。
  • GoogLeNet/Inception (2014):引入Inception模块,在深度和宽度上取得平衡。
  • ResNet (2015):提出残差连接,解决了深层网络训练中的梯度消失问题,使得网络可以深达数百层。
  • Transformer in Vision (ViT, 2020):将自然语言处理中的Transformer架构引入视觉领域,在大量数据上表现优异。

第三部分:主要应用场景

#mermaid-svg-yHxeaKvJ3HjMkbLq{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-yHxeaKvJ3HjMkbLq .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-yHxeaKvJ3HjMkbLq .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-yHxeaKvJ3HjMkbLq .error-icon{fill:#552222;}#mermaid-svg-yHxeaKvJ3HjMkbLq .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-yHxeaKvJ3HjMkbLq .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-yHxeaKvJ3HjMkbLq .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-yHxeaKvJ3HjMkbLq .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-yHxeaKvJ3HjMkbLq .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-yHxeaKvJ3HjMkbLq .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-yHxeaKvJ3HjMkbLq .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-yHxeaKvJ3HjMkbLq .marker{fill:#333333;stroke:#333333;}#mermaid-svg-yHxeaKvJ3HjMkbLq .marker.cross{stroke:#333333;}#mermaid-svg-yHxeaKvJ3HjMkbLq svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-yHxeaKvJ3HjMkbLq p{margin:0;}#mermaid-svg-yHxeaKvJ3HjMkbLq .edge{stroke-width:3;}#mermaid-svg-yHxeaKvJ3HjMkbLq .section--1 rect,#mermaid-svg-yHxeaKvJ3HjMkbLq .section--1 path,#mermaid-svg-yHxeaKvJ3HjMkbLq .section--1 circle,#mermaid-svg-yHxeaKvJ3HjMkbLq .section--1 polygon,#mermaid-svg-yHxeaKvJ3HjMkbLq .section--1 path{fill:hsl(240, 100%, 76.2745098039%);}#mermaid-svg-yHxeaKvJ3HjMkbLq .section--1 text{fill:#ffffff;}#mermaid-svg-yHxeaKvJ3HjMkbLq .node-icon--1{font-size:40px;color:#ffffff;}#mermaid-svg-yHxeaKvJ3HjMkbLq .section-edge--1{stroke:hsl(240, 100%, 76.2745098039%);}#mermaid-svg-yHxeaKvJ3HjMkbLq .edge-depth--1{stroke-width:17;}#mermaid-svg-yHxeaKvJ3HjMkbLq .section--1 line{stroke:hsl(60, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-yHxeaKvJ3HjMkbLq .disabled,#mermaid-svg-yHxeaKvJ3HjMkbLq .disabled circle,#mermaid-svg-yHxeaKvJ3HjMkbLq .disabled text{fill:lightgray;}#mermaid-svg-yHxeaKvJ3HjMkbLq .disabled text{fill:#efefef;}#mermaid-svg-yHxeaKvJ3HjMkbLq .section-0 rect,#mermaid-svg-yHxeaKvJ3HjMkbLq .section-0 path,#mermaid-svg-yHxeaKvJ3HjMkbLq .section-0 circle,#mermaid-svg-yHxeaKvJ3HjMkbLq .section-0 polygon,#mermaid-svg-yHxeaKvJ3HjMkbLq .section-0 path{fill:hsl(60, 100%, 73.5294117647%);}#mermaid-svg-yHxeaKvJ3HjMkbLq .section-0 text{fill:black;}#mermaid-svg-yHxeaKvJ3HjMkbLq .node-icon-0{font-size:40px;color:black;}#mermaid-svg-yHxeaKvJ3HjMkbLq .section-edge-0{stroke:hsl(60, 100%, 73.5294117647%);}#mermaid-svg-yHxeaKvJ3HjMkbLq .edge-depth-0{stroke-width:14;}#mermaid-svg-yHxeaKvJ3HjMkbLq .section-0 line{stroke:hsl(240, 100%, 83.5294117647%);stroke-width:3;}#mermaid-svg-yHxeaKvJ3HjMkbLq .disabled,#mermaid-svg-yHxeaKvJ3HjMkbLq .disabled circle,#mermaid-svg-yHxeaKvJ3HjMkbLq .disabled text{fill:lightgray;}#mermaid-svg-yHxeaKvJ3HjMkbLq .disabled text{fill:#efefef;}#mermaid-svg-yHxeaKvJ3HjMkbLq .section-1 rect,#mermaid-svg-yHxeaKvJ3HjMkbLq .section-1 path,#mermaid-svg-yHxeaKvJ3HjMkbLq .section-1 circle,#mermaid-svg-yHxeaKvJ3HjMkbLq .section-1 polygon,#mermaid-svg-yHxeaKvJ3HjMkbLq .section-1 path{fill:hsl(80, 100%, 76.2745098039%);}#mermaid-svg-yHxeaKvJ3HjMkbLq .section-1 text{fill:black;}#mermaid-svg-yHxeaKvJ3HjMkbLq .node-icon-1{font-size:40px;color:black;}#mermaid-svg-yHxeaKvJ3HjMkbLq .section-edge-1{stroke:hsl(80, 100%, 76.2745098039%);}#mermaid-svg-yHxeaKvJ3HjMkbLq .edge-depth-1{stroke-width:11;}#mermaid-svg-yHxeaKvJ3HjMkbLq .section-1 line{stroke:hsl(260, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-yHxeaKvJ3HjMkbLq .disabled,#mermaid-svg-yHxeaKvJ3HjMkbLq .disabled circle,#mermaid-svg-yHxeaKvJ3HjMkbLq .disabled text{fill:lightgray;}#mermaid-svg-yHxeaKvJ3HjMkbLq .disabled text{fill:#efefef;}#mermaid-svg-yHxeaKvJ3HjMkbLq .section-2 rect,#mermaid-svg-yHxeaKvJ3HjMkbLq .section-2 path,#mermaid-svg-yHxeaKvJ3HjMkbLq .section-2 circle,#mermaid-svg-yHxeaKvJ3HjMkbLq .section-2 polygon,#mermaid-svg-yHxeaKvJ3HjMkbLq .section-2 path{fill:hsl(270, 100%, 76.2745098039%);}#mermaid-svg-yHxeaKvJ3HjMkbLq .section-2 text{fill:#ffffff;}#mermaid-svg-yHxeaKvJ3HjMkbLq .node-icon-2{font-size:40px;color:#ffffff;}#mermaid-svg-yHxeaKvJ3HjMkbLq .section-edge-2{stroke:hsl(270, 100%, 76.2745098039%);}#mermaid-svg-yHxeaKvJ3HjMkbLq .edge-depth-2{stroke-width:8;}#mermaid-svg-yHxeaKvJ3HjMkbLq .section-2 line{stroke:hsl(90, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-yHxeaKvJ3HjMkbLq .disabled,#mermaid-svg-yHxeaKvJ3HjMkbLq .disabled circle,#mermaid-svg-yHxeaKvJ3HjMkbLq .disabled text{fill:lightgray;}#mermaid-svg-yHxeaKvJ3HjMkbLq .disabled text{fill:#efefef;}#mermaid-svg-yHxeaKvJ3HjMkbLq .section-3 rect,#mermaid-svg-yHxeaKvJ3HjMkbLq .section-3 path,#mermaid-svg-yHxeaKvJ3HjMkbLq .section-3 circle,#mermaid-svg-yHxeaKvJ3HjMkbLq .section-3 polygon,#mermaid-svg-yHxeaKvJ3HjMkbLq .section-3 path{fill:hsl(300, 100%, 76.2745098039%);}#mermaid-svg-yHxeaKvJ3HjMkbLq .section-3 text{fill:black;}#mermaid-svg-yHxeaKvJ3HjMkbLq .node-icon-3{font-size:40px;color:black;}#mermaid-svg-yHxeaKvJ3HjMkbLq .section-edge-3{stroke:hsl(300, 100%, 76.2745098039%);}#mermaid-svg-yHxeaKvJ3HjMkbLq .edge-depth-3{stroke-width:5;}#mermaid-svg-yHxeaKvJ3HjMkbLq .section-3 line{stroke:hsl(120, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-yHxeaKvJ3HjMkbLq .disabled,#mermaid-svg-yHxeaKvJ3HjMkbLq .disabled circle,#mermaid-svg-yHxeaKvJ3HjMkbLq .disabled text{fill:lightgray;}#mermaid-svg-yHxeaKvJ3HjMkbLq .disabled text{fill:#efefef;}#mermaid-svg-yHxeaKvJ3HjMkbLq .section-4 rect,#mermaid-svg-yHxeaKvJ3HjMkbLq .section-4 path,#mermaid-svg-yHxeaKvJ3HjMkbLq .section-4 circle,#mermaid-svg-yHxeaKvJ3HjMkbLq .section-4 polygon,#mermaid-svg-yHxeaKvJ3HjMkbLq .section-4 path{fill:hsl(330, 100%, 76.2745098039%);}#mermaid-svg-yHxeaKvJ3HjMkbLq .section-4 text{fill:black;}#mermaid-svg-yHxeaKvJ3HjMkbLq .node-icon-4{font-size:40px;color:black;}#mermaid-svg-yHxeaKvJ3HjMkbLq .section-edge-4{stroke:hsl(330, 100%, 76.2745098039%);}#mermaid-svg-yHxeaKvJ3HjMkbLq .edge-depth-4{stroke-width:2;}#mermaid-svg-yHxeaKvJ3HjMkbLq .section-4 line{stroke:hsl(150, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-yHxeaKvJ3HjMkbLq .disabled,#mermaid-svg-yHxeaKvJ3HjMkbLq .disabled circle,#mermaid-svg-yHxeaKvJ3HjMkbLq .disabled text{fill:lightgray;}#mermaid-svg-yHxeaKvJ3HjMkbLq .disabled text{fill:#efefef;}#mermaid-svg-yHxeaKvJ3HjMkbLq .section-5 rect,#mermaid-svg-yHxeaKvJ3HjMkbLq .section-5 path,#mermaid-svg-yHxeaKvJ3HjMkbLq .section-5 circle,#mermaid-svg-yHxeaKvJ3HjMkbLq .section-5 polygon,#mermaid-svg-yHxeaKvJ3HjMkbLq .section-5 path{fill:hsl(0, 100%, 76.2745098039%);}#mermaid-svg-yHxeaKvJ3HjMkbLq .section-5 text{fill:black;}#mermaid-svg-yHxeaKvJ3HjMkbLq .node-icon-5{font-size:40px;color:black;}#mermaid-svg-yHxeaKvJ3HjMkbLq .section-edge-5{stroke:hsl(0, 100%, 76.2745098039%);}#mermaid-svg-yHxeaKvJ3HjMkbLq .edge-depth-5{stroke-width:-1;}#mermaid-svg-yHxeaKvJ3HjMkbLq .section-5 line{stroke:hsl(180, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-yHxeaKvJ3HjMkbLq .disabled,#mermaid-svg-yHxeaKvJ3HjMkbLq .disabled circle,#mermaid-svg-yHxeaKvJ3HjMkbLq .disabled text{fill:lightgray;}#mermaid-svg-yHxeaKvJ3HjMkbLq .disabled text{fill:#efefef;}#mermaid-svg-yHxeaKvJ3HjMkbLq .section-6 rect,#mermaid-svg-yHxeaKvJ3HjMkbLq .section-6 path,#mermaid-svg-yHxeaKvJ3HjMkbLq .section-6 circle,#mermaid-svg-yHxeaKvJ3HjMkbLq .section-6 polygon,#mermaid-svg-yHxeaKvJ3HjMkbLq .section-6 path{fill:hsl(30, 100%, 76.2745098039%);}#mermaid-svg-yHxeaKvJ3HjMkbLq .section-6 text{fill:black;}#mermaid-svg-yHxeaKvJ3HjMkbLq .node-icon-6{font-size:40px;color:black;}#mermaid-svg-yHxeaKvJ3HjMkbLq .section-edge-6{stroke:hsl(30, 100%, 76.2745098039%);}#mermaid-svg-yHxeaKvJ3HjMkbLq .edge-depth-6{stroke-width:-4;}#mermaid-svg-yHxeaKvJ3HjMkbLq .section-6 line{stroke:hsl(210, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-yHxeaKvJ3HjMkbLq .disabled,#mermaid-svg-yHxeaKvJ3HjMkbLq .disabled circle,#mermaid-svg-yHxeaKvJ3HjMkbLq .disabled text{fill:lightgray;}#mermaid-svg-yHxeaKvJ3HjMkbLq .disabled text{fill:#efefef;}#mermaid-svg-yHxeaKvJ3HjMkbLq .section-7 rect,#mermaid-svg-yHxeaKvJ3HjMkbLq .section-7 path,#mermaid-svg-yHxeaKvJ3HjMkbLq .section-7 circle,#mermaid-svg-yHxeaKvJ3HjMkbLq .section-7 polygon,#mermaid-svg-yHxeaKvJ3HjMkbLq .section-7 path{fill:hsl(90, 100%, 76.2745098039%);}#mermaid-svg-yHxeaKvJ3HjMkbLq .section-7 text{fill:black;}#mermaid-svg-yHxeaKvJ3HjMkbLq .node-icon-7{font-size:40px;color:black;}#mermaid-svg-yHxeaKvJ3HjMkbLq .section-edge-7{stroke:hsl(90, 100%, 76.2745098039%);}#mermaid-svg-yHxeaKvJ3HjMkbLq .edge-depth-7{stroke-width:-7;}#mermaid-svg-yHxeaKvJ3HjMkbLq .section-7 line{stroke:hsl(270, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-yHxeaKvJ3HjMkbLq .disabled,#mermaid-svg-yHxeaKvJ3HjMkbLq .disabled circle,#mermaid-svg-yHxeaKvJ3HjMkbLq .disabled text{fill:lightgray;}#mermaid-svg-yHxeaKvJ3HjMkbLq .disabled text{fill:#efefef;}#mermaid-svg-yHxeaKvJ3HjMkbLq .section-8 rect,#mermaid-svg-yHxeaKvJ3HjMkbLq .section-8 path,#mermaid-svg-yHxeaKvJ3HjMkbLq .section-8 circle,#mermaid-svg-yHxeaKvJ3HjMkbLq .section-8 polygon,#mermaid-svg-yHxeaKvJ3HjMkbLq .section-8 path{fill:hsl(150, 100%, 76.2745098039%);}#mermaid-svg-yHxeaKvJ3HjMkbLq .section-8 text{fill:black;}#mermaid-svg-yHxeaKvJ3HjMkbLq .node-icon-8{font-size:40px;color:black;}#mermaid-svg-yHxeaKvJ3HjMkbLq .section-edge-8{stroke:hsl(150, 100%, 76.2745098039%);}#mermaid-svg-yHxeaKvJ3HjMkbLq .edge-depth-8{stroke-width:-10;}#mermaid-svg-yHxeaKvJ3HjMkbLq .section-8 line{stroke:hsl(330, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-yHxeaKvJ3HjMkbLq .disabled,#mermaid-svg-yHxeaKvJ3HjMkbLq .disabled circle,#mermaid-svg-yHxeaKvJ3HjMkbLq .disabled text{fill:lightgray;}#mermaid-svg-yHxeaKvJ3HjMkbLq .disabled text{fill:#efefef;}#mermaid-svg-yHxeaKvJ3HjMkbLq .section-9 rect,#mermaid-svg-yHxeaKvJ3HjMkbLq .section-9 path,#mermaid-svg-yHxeaKvJ3HjMkbLq .section-9 circle,#mermaid-svg-yHxeaKvJ3HjMkbLq .section-9 polygon,#mermaid-svg-yHxeaKvJ3HjMkbLq .section-9 path{fill:hsl(180, 100%, 76.2745098039%);}#mermaid-svg-yHxeaKvJ3HjMkbLq .section-9 text{fill:black;}#mermaid-svg-yHxeaKvJ3HjMkbLq .node-icon-9{font-size:40px;color:black;}#mermaid-svg-yHxeaKvJ3HjMkbLq .section-edge-9{stroke:hsl(180, 100%, 76.2745098039%);}#mermaid-svg-yHxeaKvJ3HjMkbLq .edge-depth-9{stroke-width:-13;}#mermaid-svg-yHxeaKvJ3HjMkbLq .section-9 line{stroke:hsl(0, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-yHxeaKvJ3HjMkbLq .disabled,#mermaid-svg-yHxeaKvJ3HjMkbLq .disabled circle,#mermaid-svg-yHxeaKvJ3HjMkbLq .disabled text{fill:lightgray;}#mermaid-svg-yHxeaKvJ3HjMkbLq .disabled text{fill:#efefef;}#mermaid-svg-yHxeaKvJ3HjMkbLq .section-10 rect,#mermaid-svg-yHxeaKvJ3HjMkbLq .section-10 path,#mermaid-svg-yHxeaKvJ3HjMkbLq .section-10 circle,#mermaid-svg-yHxeaKvJ3HjMkbLq .section-10 polygon,#mermaid-svg-yHxeaKvJ3HjMkbLq .section-10 path{fill:hsl(210, 100%, 76.2745098039%);}#mermaid-svg-yHxeaKvJ3HjMkbLq .section-10 text{fill:black;}#mermaid-svg-yHxeaKvJ3HjMkbLq .node-icon-10{font-size:40px;color:black;}#mermaid-svg-yHxeaKvJ3HjMkbLq .section-edge-10{stroke:hsl(210, 100%, 76.2745098039%);}#mermaid-svg-yHxeaKvJ3HjMkbLq .edge-depth-10{stroke-width:-16;}#mermaid-svg-yHxeaKvJ3HjMkbLq .section-10 line{stroke:hsl(30, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-yHxeaKvJ3HjMkbLq .disabled,#mermaid-svg-yHxeaKvJ3HjMkbLq .disabled circle,#mermaid-svg-yHxeaKvJ3HjMkbLq .disabled text{fill:lightgray;}#mermaid-svg-yHxeaKvJ3HjMkbLq .disabled text{fill:#efefef;}#mermaid-svg-yHxeaKvJ3HjMkbLq .section-root rect,#mermaid-svg-yHxeaKvJ3HjMkbLq .section-root path,#mermaid-svg-yHxeaKvJ3HjMkbLq .section-root circle,#mermaid-svg-yHxeaKvJ3HjMkbLq .section-root polygon{fill:hsl(240, 100%, 46.2745098039%);}#mermaid-svg-yHxeaKvJ3HjMkbLq .section-root text{fill:#ffffff;}#mermaid-svg-yHxeaKvJ3HjMkbLq .section-root span{color:#ffffff;}#mermaid-svg-yHxeaKvJ3HjMkbLq .section-2 span{color:#ffffff;}#mermaid-svg-yHxeaKvJ3HjMkbLq .icon-container{height:100%;display:flex;justify-content:center;align-items:center;}#mermaid-svg-yHxeaKvJ3HjMkbLq .edge{fill:none;}#mermaid-svg-yHxeaKvJ3HjMkbLq .mindmap-node-label{dy:1em;alignment-baseline:middle;text-anchor:middle;dominant-baseline:middle;text-align:center;}#mermaid-svg-yHxeaKvJ3HjMkbLq :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 计算机视觉

应用场景
图像分类与识别
:相册自动分类
:商品识别
:动植物识别
目标检测与定位
:自动驾驶
::行人检测
::车辆检测
:安防监控
:零售货架分析
图像分割
:医疗影像分析
::肿瘤分割
:自动驾驶场景理解
:照片背景虚化
人脸识别与分析
:手机解锁
:支付验证
:考勤系统
:情绪分析
动作识别与行为分析
:视频监控
:人机交互
:体育分析
三维视觉与SLAM
:机器人导航
:AR/VR
:三维重建
生成式视觉
:图像超分辨率
:风格迁移
:图像修复
:AI绘画

3.1 图像分类与识别

  • 应用:相册自动分类、商品识别、动植物识别。
  • 典型任务:给定一张图片,判断它属于哪个预定义的类别(如"猫"、"狗"、"汽车")。

3.2 目标检测与定位

  • 应用:自动驾驶中的行人/车辆检测、安防监控、零售货架分析。
  • 典型算法:R-CNN系列、YOLO系列、SSD。这些算法不仅能识别物体,还能用边界框标出其位置。

3.3 图像分割

  • 应用:医疗影像分析(肿瘤分割)、自动驾驶场景理解、照片背景虚化。
  • 类型
    • 语义分割:为每个像素分配一个类别标签。
    • 实例分割:区分同一类别的不同个体(如区分图像中的多只猫)。

3.4 人脸识别与分析

  • 应用:手机解锁、支付验证、考勤系统、情绪分析。
  • 关键技术:人脸检测、关键点定位、特征提取与比对(如FaceNet)。

3.5 动作识别与行为分析

  • 应用:视频监控、人机交互、体育分析。
  • 挑战:需要处理时序信息,常用3D CNN或RNN/LSTM结合CNN。

3.6 三维视觉与SLAM

  • 应用:机器人导航、AR/VR、三维重建。
  • SLAM (同步定位与地图构建):让机器人在未知环境中同时构建地图并确定自身位置。

3.7 生成式视觉

  • 应用:图像超分辨率、风格迁移、图像修复、AI绘画(如Stable Diffusion、DALL-E)。
  • 核心技术:生成对抗网络(GAN)、扩散模型(Diffusion Models)。

第四部分:实践入门:一个简单的图像分类示例

#mermaid-svg-0eSVNDJ4y7EDkkuN{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-0eSVNDJ4y7EDkkuN .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-0eSVNDJ4y7EDkkuN .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-0eSVNDJ4y7EDkkuN .error-icon{fill:#552222;}#mermaid-svg-0eSVNDJ4y7EDkkuN .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-0eSVNDJ4y7EDkkuN .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-0eSVNDJ4y7EDkkuN .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-0eSVNDJ4y7EDkkuN .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-0eSVNDJ4y7EDkkuN .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-0eSVNDJ4y7EDkkuN .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-0eSVNDJ4y7EDkkuN .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-0eSVNDJ4y7EDkkuN .marker{fill:#333333;stroke:#333333;}#mermaid-svg-0eSVNDJ4y7EDkkuN .marker.cross{stroke:#333333;}#mermaid-svg-0eSVNDJ4y7EDkkuN svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-0eSVNDJ4y7EDkkuN p{margin:0;}#mermaid-svg-0eSVNDJ4y7EDkkuN .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-0eSVNDJ4y7EDkkuN .cluster-label text{fill:#333;}#mermaid-svg-0eSVNDJ4y7EDkkuN .cluster-label span{color:#333;}#mermaid-svg-0eSVNDJ4y7EDkkuN .cluster-label span p{background-color:transparent;}#mermaid-svg-0eSVNDJ4y7EDkkuN .label text,#mermaid-svg-0eSVNDJ4y7EDkkuN span{fill:#333;color:#333;}#mermaid-svg-0eSVNDJ4y7EDkkuN .node rect,#mermaid-svg-0eSVNDJ4y7EDkkuN .node circle,#mermaid-svg-0eSVNDJ4y7EDkkuN .node ellipse,#mermaid-svg-0eSVNDJ4y7EDkkuN .node polygon,#mermaid-svg-0eSVNDJ4y7EDkkuN .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-0eSVNDJ4y7EDkkuN .rough-node .label text,#mermaid-svg-0eSVNDJ4y7EDkkuN .node .label text,#mermaid-svg-0eSVNDJ4y7EDkkuN .image-shape .label,#mermaid-svg-0eSVNDJ4y7EDkkuN .icon-shape .label{text-anchor:middle;}#mermaid-svg-0eSVNDJ4y7EDkkuN .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-0eSVNDJ4y7EDkkuN .rough-node .label,#mermaid-svg-0eSVNDJ4y7EDkkuN .node .label,#mermaid-svg-0eSVNDJ4y7EDkkuN .image-shape .label,#mermaid-svg-0eSVNDJ4y7EDkkuN .icon-shape .label{text-align:center;}#mermaid-svg-0eSVNDJ4y7EDkkuN .node.clickable{cursor:pointer;}#mermaid-svg-0eSVNDJ4y7EDkkuN .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-0eSVNDJ4y7EDkkuN .arrowheadPath{fill:#333333;}#mermaid-svg-0eSVNDJ4y7EDkkuN .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-0eSVNDJ4y7EDkkuN .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-0eSVNDJ4y7EDkkuN .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-0eSVNDJ4y7EDkkuN .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-0eSVNDJ4y7EDkkuN .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-0eSVNDJ4y7EDkkuN .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-0eSVNDJ4y7EDkkuN .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-0eSVNDJ4y7EDkkuN .cluster text{fill:#333;}#mermaid-svg-0eSVNDJ4y7EDkkuN .cluster span{color:#333;}#mermaid-svg-0eSVNDJ4y7EDkkuN div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-0eSVNDJ4y7EDkkuN .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-0eSVNDJ4y7EDkkuN rect.text{fill:none;stroke-width:0;}#mermaid-svg-0eSVNDJ4y7EDkkuN .icon-shape,#mermaid-svg-0eSVNDJ4y7EDkkuN .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-0eSVNDJ4y7EDkkuN .icon-shape p,#mermaid-svg-0eSVNDJ4y7EDkkuN .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-0eSVNDJ4y7EDkkuN .icon-shape .label rect,#mermaid-svg-0eSVNDJ4y7EDkkuN .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-0eSVNDJ4y7EDkkuN .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-0eSVNDJ4y7EDkkuN .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-0eSVNDJ4y7EDkkuN :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 预处理步骤
Resize(256)
CenterCrop(224)
ToTensor()
Normalize

mean=0.485,0.456,0.406

std=0.229,0.224,0.225
输入图像
图像预处理
ResNet-50模型
特征提取
全连接层
Softmax分类
输出Top-5预测

以下是一个使用Python和PyTorch框架,基于预训练的ResNet模型进行图像分类的简单示例。

python 复制代码
import torch
from torchvision import models, transforms
from PIL import Image
import requests
from io import BytesIO

# 1. 加载预训练的ResNet模型和ImageNet标签
model = models.resnet50(pretrained=True)
model.eval()  # 设置为评估模式

# 下载ImageNet类别标签
LABELS_URL = "https://raw.githubusercontent.com/anishathalye/imagenet-simple-labels/master/imagenet-simple-labels.json"
labels = requests.get(LABELS_URL).json()

# 2. 定义图像预处理流程
preprocess = transforms.Compose([
    transforms.Resize(256),
    transforms.CenterCrop(224),
    transforms.ToTensor(),
    transforms.Normalize(mean=[0.485, 0.456, 0.406],
                         std=[0.229, 0.224, 0.225]),
])

# 3. 加载并预处理图像
img_url = "https://upload.wikimedia.org/wikipedia/commons/thumb/3/3a/Cat03.jpg/1200px-Cat03.jpg"
response = requests.get(img_url)
img = Image.open(BytesIO(response.content)).convert('RGB')
img_tensor = preprocess(img)
img_batch = img_tensor.unsqueeze(0)  # 增加一个批次维度

# 4. 使用GPU(如果可用)
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
model.to(device)
img_batch = img_batch.to(device)

# 5. 进行预测
with torch.no_grad():
    output = model(img_batch)

# 6. 解析结果
probabilities = torch.nn.functional.softmax(output[0], dim=0)
top5_prob, top5_catid = torch.topk(probabilities, 5)

print("预测结果(Top 5):")
for i in range(top5_prob.size(0)):
    print(f"{i+1}. {labels[top5_catid[i]]}: {top5_prob[i].item()*100:.2f}%")

代码说明:

  1. 加载了在ImageNet数据集上预训练好的ResNet-50模型。
  2. 定义了与训练时一致的图像预处理流程(缩放、裁剪、归一化)。
  3. 从网络加载一张猫的图片并进行预处理。
  4. 将数据和模型移至GPU(如果可用)以加速计算。
  5. 模型进行前向传播,得到输出logits。
  6. 通过softmax函数将logits转换为概率,并输出概率最高的5个类别及其置信度。

第五部分:挑战与未来趋势

#mermaid-svg-IeXkFA7hUEGUqx7g{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-IeXkFA7hUEGUqx7g .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-IeXkFA7hUEGUqx7g .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-IeXkFA7hUEGUqx7g .error-icon{fill:#552222;}#mermaid-svg-IeXkFA7hUEGUqx7g .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-IeXkFA7hUEGUqx7g .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-IeXkFA7hUEGUqx7g .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-IeXkFA7hUEGUqx7g .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-IeXkFA7hUEGUqx7g .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-IeXkFA7hUEGUqx7g .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-IeXkFA7hUEGUqx7g .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-IeXkFA7hUEGUqx7g .marker{fill:#333333;stroke:#333333;}#mermaid-svg-IeXkFA7hUEGUqx7g .marker.cross{stroke:#333333;}#mermaid-svg-IeXkFA7hUEGUqx7g svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-IeXkFA7hUEGUqx7g p{margin:0;}#mermaid-svg-IeXkFA7hUEGUqx7g .mermaid-main-font{font-family:"trebuchet ms",verdana,arial,sans-serif;}#mermaid-svg-IeXkFA7hUEGUqx7g .exclude-range{fill:#eeeeee;}#mermaid-svg-IeXkFA7hUEGUqx7g .section{stroke:none;opacity:0.2;}#mermaid-svg-IeXkFA7hUEGUqx7g .section0{fill:rgba(102, 102, 255, 0.49);}#mermaid-svg-IeXkFA7hUEGUqx7g .section2{fill:#fff400;}#mermaid-svg-IeXkFA7hUEGUqx7g .section1,#mermaid-svg-IeXkFA7hUEGUqx7g .section3{fill:white;opacity:0.2;}#mermaid-svg-IeXkFA7hUEGUqx7g .sectionTitle0{fill:#333;}#mermaid-svg-IeXkFA7hUEGUqx7g .sectionTitle1{fill:#333;}#mermaid-svg-IeXkFA7hUEGUqx7g .sectionTitle2{fill:#333;}#mermaid-svg-IeXkFA7hUEGUqx7g .sectionTitle3{fill:#333;}#mermaid-svg-IeXkFA7hUEGUqx7g .sectionTitle{text-anchor:start;font-family:"trebuchet ms",verdana,arial,sans-serif;}#mermaid-svg-IeXkFA7hUEGUqx7g .grid .tick{stroke:lightgrey;opacity:0.8;shape-rendering:crispEdges;}#mermaid-svg-IeXkFA7hUEGUqx7g .grid .tick text{font-family:"trebuchet ms",verdana,arial,sans-serif;fill:#333;}#mermaid-svg-IeXkFA7hUEGUqx7g .grid path{stroke-width:0;}#mermaid-svg-IeXkFA7hUEGUqx7g .today{fill:none;stroke:red;stroke-width:2px;}#mermaid-svg-IeXkFA7hUEGUqx7g .task{stroke-width:2;}#mermaid-svg-IeXkFA7hUEGUqx7g .taskText{text-anchor:middle;font-family:"trebuchet ms",verdana,arial,sans-serif;}#mermaid-svg-IeXkFA7hUEGUqx7g .taskTextOutsideRight{fill:black;text-anchor:start;font-family:"trebuchet ms",verdana,arial,sans-serif;}#mermaid-svg-IeXkFA7hUEGUqx7g .taskTextOutsideLeft{fill:black;text-anchor:end;}#mermaid-svg-IeXkFA7hUEGUqx7g .task.clickable{cursor:pointer;}#mermaid-svg-IeXkFA7hUEGUqx7g .taskText.clickable{cursor:pointer;fill:#003163!important;font-weight:bold;}#mermaid-svg-IeXkFA7hUEGUqx7g .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163!important;font-weight:bold;}#mermaid-svg-IeXkFA7hUEGUqx7g .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163!important;font-weight:bold;}#mermaid-svg-IeXkFA7hUEGUqx7g .taskText0,#mermaid-svg-IeXkFA7hUEGUqx7g .taskText1,#mermaid-svg-IeXkFA7hUEGUqx7g .taskText2,#mermaid-svg-IeXkFA7hUEGUqx7g .taskText3{fill:white;}#mermaid-svg-IeXkFA7hUEGUqx7g .task0,#mermaid-svg-IeXkFA7hUEGUqx7g .task1,#mermaid-svg-IeXkFA7hUEGUqx7g .task2,#mermaid-svg-IeXkFA7hUEGUqx7g .task3{fill:#8a90dd;stroke:#534fbc;}#mermaid-svg-IeXkFA7hUEGUqx7g .taskTextOutside0,#mermaid-svg-IeXkFA7hUEGUqx7g .taskTextOutside2{fill:black;}#mermaid-svg-IeXkFA7hUEGUqx7g .taskTextOutside1,#mermaid-svg-IeXkFA7hUEGUqx7g .taskTextOutside3{fill:black;}#mermaid-svg-IeXkFA7hUEGUqx7g .active0,#mermaid-svg-IeXkFA7hUEGUqx7g .active1,#mermaid-svg-IeXkFA7hUEGUqx7g .active2,#mermaid-svg-IeXkFA7hUEGUqx7g .active3{fill:#bfc7ff;stroke:#534fbc;}#mermaid-svg-IeXkFA7hUEGUqx7g .activeText0,#mermaid-svg-IeXkFA7hUEGUqx7g .activeText1,#mermaid-svg-IeXkFA7hUEGUqx7g .activeText2,#mermaid-svg-IeXkFA7hUEGUqx7g .activeText3{fill:black!important;}#mermaid-svg-IeXkFA7hUEGUqx7g .done0,#mermaid-svg-IeXkFA7hUEGUqx7g .done1,#mermaid-svg-IeXkFA7hUEGUqx7g .done2,#mermaid-svg-IeXkFA7hUEGUqx7g .done3{stroke:grey;fill:lightgrey;stroke-width:2;}#mermaid-svg-IeXkFA7hUEGUqx7g .doneText0,#mermaid-svg-IeXkFA7hUEGUqx7g .doneText1,#mermaid-svg-IeXkFA7hUEGUqx7g .doneText2,#mermaid-svg-IeXkFA7hUEGUqx7g .doneText3{fill:black!important;}#mermaid-svg-IeXkFA7hUEGUqx7g .doneText0.taskTextOutsideLeft,#mermaid-svg-IeXkFA7hUEGUqx7g .doneText0.taskTextOutsideRight,#mermaid-svg-IeXkFA7hUEGUqx7g .doneText1.taskTextOutsideLeft,#mermaid-svg-IeXkFA7hUEGUqx7g .doneText1.taskTextOutsideRight,#mermaid-svg-IeXkFA7hUEGUqx7g .doneText2.taskTextOutsideLeft,#mermaid-svg-IeXkFA7hUEGUqx7g .doneText2.taskTextOutsideRight,#mermaid-svg-IeXkFA7hUEGUqx7g .doneText3.taskTextOutsideLeft,#mermaid-svg-IeXkFA7hUEGUqx7g .doneText3.taskTextOutsideRight{fill:black!important;}#mermaid-svg-IeXkFA7hUEGUqx7g .crit0,#mermaid-svg-IeXkFA7hUEGUqx7g .crit1,#mermaid-svg-IeXkFA7hUEGUqx7g .crit2,#mermaid-svg-IeXkFA7hUEGUqx7g .crit3{stroke:#ff8888;fill:red;stroke-width:2;}#mermaid-svg-IeXkFA7hUEGUqx7g .activeCrit0,#mermaid-svg-IeXkFA7hUEGUqx7g .activeCrit1,#mermaid-svg-IeXkFA7hUEGUqx7g .activeCrit2,#mermaid-svg-IeXkFA7hUEGUqx7g .activeCrit3{stroke:#ff8888;fill:#bfc7ff;stroke-width:2;}#mermaid-svg-IeXkFA7hUEGUqx7g .doneCrit0,#mermaid-svg-IeXkFA7hUEGUqx7g .doneCrit1,#mermaid-svg-IeXkFA7hUEGUqx7g .doneCrit2,#mermaid-svg-IeXkFA7hUEGUqx7g .doneCrit3{stroke:#ff8888;fill:lightgrey;stroke-width:2;cursor:pointer;shape-rendering:crispEdges;}#mermaid-svg-IeXkFA7hUEGUqx7g .milestone{transform:rotate(45deg) scale(0.8,0.8);}#mermaid-svg-IeXkFA7hUEGUqx7g .milestoneText{font-style:italic;}#mermaid-svg-IeXkFA7hUEGUqx7g .doneCritText0,#mermaid-svg-IeXkFA7hUEGUqx7g .doneCritText1,#mermaid-svg-IeXkFA7hUEGUqx7g .doneCritText2,#mermaid-svg-IeXkFA7hUEGUqx7g .doneCritText3{fill:black!important;}#mermaid-svg-IeXkFA7hUEGUqx7g .doneCritText0.taskTextOutsideLeft,#mermaid-svg-IeXkFA7hUEGUqx7g .doneCritText0.taskTextOutsideRight,#mermaid-svg-IeXkFA7hUEGUqx7g .doneCritText1.taskTextOutsideLeft,#mermaid-svg-IeXkFA7hUEGUqx7g .doneCritText1.taskTextOutsideRight,#mermaid-svg-IeXkFA7hUEGUqx7g .doneCritText2.taskTextOutsideLeft,#mermaid-svg-IeXkFA7hUEGUqx7g .doneCritText2.taskTextOutsideRight,#mermaid-svg-IeXkFA7hUEGUqx7g .doneCritText3.taskTextOutsideLeft,#mermaid-svg-IeXkFA7hUEGUqx7g .doneCritText3.taskTextOutsideRight{fill:black!important;}#mermaid-svg-IeXkFA7hUEGUqx7g .vert{stroke:navy;}#mermaid-svg-IeXkFA7hUEGUqx7g .vertText{font-size:15px;text-anchor:middle;fill:navy!important;}#mermaid-svg-IeXkFA7hUEGUqx7g .activeCritText0,#mermaid-svg-IeXkFA7hUEGUqx7g .activeCritText1,#mermaid-svg-IeXkFA7hUEGUqx7g .activeCritText2,#mermaid-svg-IeXkFA7hUEGUqx7g .activeCritText3{fill:black!important;}#mermaid-svg-IeXkFA7hUEGUqx7g .titleText{text-anchor:middle;font-size:18px;fill:#333;font-family:"trebuchet ms",verdana,arial,sans-serif;}#mermaid-svg-IeXkFA7hUEGUqx7g :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 2000 2002 2004 2006 2008 2010 2012 2014 2016 2018 2020 2022 2024 2026 传统CV方法 深度学习CV 数据依赖与偏见 可解释性差 对抗性攻击 计算资源消耗 Transformer in Vision 边缘计算与轻量化模型 自监督与弱监督学习 多模态学习 神经渲染与3D生成 具身智能与机器人视觉 当前挑战未来趋势技术成熟度 计算机视觉技术发展趋势

5.1 当前面临的挑战

  • 数据依赖与偏见:深度学习模型需要大量标注数据,且数据中的偏见会被模型学习并放大。
  • 可解释性差:深度神经网络通常是"黑盒",其决策过程难以理解,这在医疗、司法等高风险领域尤为关键。
  • 对抗性攻击:对输入图像添加人眼难以察觉的微小扰动,可能导致模型做出完全错误的判断。
  • 计算资源消耗:大型模型的训练和推理需要巨大的算力,限制了其在边缘设备上的部署。

5.2 未来发展趋势

  • 多模态学习:结合视觉、语言、声音等多种信息进行更全面的理解(如CLIP、DALL-E)。
  • 自监督与弱监督学习:减少对昂贵人工标注数据的依赖,从无标签或弱标签数据中学习。
  • 边缘计算与轻量化模型:开发更小、更快的模型(如MobileNet、EfficientNet)以适应手机、IoT设备。
  • 神经渲染与3D生成:从2D图像生成高质量3D模型和场景(如NeRF)。
  • 具身智能与机器人视觉:将视觉感知与机器人行动相结合,实现更智能的交互与操作。

结语

计算机视觉作为人工智能的"眼睛",正在从感知走向认知,从理解静态场景走向与动态世界交互。其发展不仅推动了科技进步,也深刻改变了社会生产和生活方式。对于学习者而言,掌握其基础原理,紧跟技术前沿,并思考如何将其负责任地应用于解决实际问题,将是拥抱智能时代的关键。

相关推荐
geovindu1 小时前
CSharp: Bridge Pattern
开发语言·后端·桥接模式·结构型模式
数智工坊1 小时前
RealNet:用于异常检测的特征选择网络,具备真实的合成异常样本
人工智能·深度学习
এ慕ོ冬℘゜1 小时前
深入 JavaScript BOM:掌握 window 对象的窗口控制魔法
开发语言·javascript·ecmascript
阳明山水1 小时前
TimesFM与Moirai MoE零样本预测解析
人工智能·深度学习·算法·机器学习·架构
2501_941982051 小时前
企业微信二次开发:如何用 Python 搭建通用的 Webhook 实时消息接收
开发语言·python·企业微信
在世修行1 小时前
第24篇:PyInstaller打包实战 — 从Python脚本到Windows EXE
人工智能·python·pyinstaller
一次旅行2 小时前
AI 前沿日报 | 2026年07月14日
人工智能
智慧物业老杨2 小时前
物业单盘精细化预算数智化方案:IoT采集+AI建模全链路自动化落地体系
人工智能·物联网·自动化
cfm_29142 小时前
Spring监听器
java·spring boot·后端
逝水无殇2 小时前
C# 特性详解
开发语言·后端·c#