当前位置: 首页 > article >正文

计算机视觉:从基础到深度学习应用

计算机视觉从基础到深度学习应用1. 背景与意义计算机视觉Computer Vision简称CV是人工智能领域的重要分支旨在使计算机能够理解和处理图像信息。随着深度学习的发展计算机视觉取得了突破性进展从传统的特征工程方法演变为端到端的深度学习模型。本文将深入探讨计算机视觉的核心技术并通过PyTorch实现一些经典的计算机视觉模型。2. 核心原理2.1 图像表示计算机视觉的基础是图像的数字表示像素值图像由像素组成每个像素包含颜色信息色彩空间RGB、HSV、灰度等不同的色彩表示方式图像预处理 resize、归一化、数据增强等操作2.2 卷积神经网络(CNNs)CNN是计算机视觉的核心模型卷积层提取图像特征池化层降低特征维度激活函数引入非线性全连接层分类决策2.3 经典模型计算机视觉领域的经典模型LeNet早期的CNN模型AlexNet深度学习革命的开端VGG更深的网络结构ResNet残差连接解决梯度消失问题EfficientNet EfficientNet通过复合缩放策略实现模型效率与性能的平衡3. 代码实现3.1 图像分类任务import torch import torch.nn as nn import torch.optim as optim from torch.utils.data import DataLoader from torchvision import datasets, transforms, models from sklearn.metrics import accuracy_score # 数据预处理 transform 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]) ]) # 加载CIFAR10数据集 train_dataset datasets.CIFAR10(root./data, trainTrue, transformtransform, downloadTrue) test_dataset datasets.CIFAR10(root./data, trainFalse, transformtransform, downloadTrue) train_loader DataLoader(train_dataset, batch_size32, shuffleTrue) test_loader DataLoader(test_dataset, batch_size32, shuffleFalse) # 简单的CNN模型 class SimpleCNN(nn.Module): def __init__(self, num_classes10): super(SimpleCNN, self).__init__() self.features nn.Sequential( nn.Conv2d(3, 32, kernel_size3, padding1), nn.ReLU(), nn.MaxPool2d(kernel_size2, stride2), nn.Conv2d(32, 64, kernel_size3, padding1), nn.ReLU(), nn.MaxPool2d(kernel_size2, stride2), nn.Conv2d(64, 128, kernel_size3, padding1), nn.ReLU(), nn.MaxPool2d(kernel_size2, stride2) ) self.classifier nn.Sequential( nn.Flatten(), nn.Linear(128 * 28 * 28, 512), nn.ReLU(), nn.Dropout(0.5), nn.Linear(512, num_classes) ) def forward(self, x): x self.features(x) x self.classifier(x) return x # 训练模型 def train_model(model, train_loader, test_loader, epochs, optimizer, criterion, device): for epoch in range(epochs): model.train() train_loss 0 for images, labels in train_loader: images images.to(device) labels labels.to(device) optimizer.zero_grad() outputs model(images) loss criterion(outputs, labels) loss.backward() optimizer.step() train_loss loss.item() # 测试 model.eval() test_loss 0 test_predictions [] test_labels [] with torch.no_grad(): for images, labels in test_loader: images images.to(device) labels labels.to(device) outputs model(images) loss criterion(outputs, labels) test_loss loss.item() predictions torch.argmax(outputs, dim1) test_predictions.extend(predictions.cpu().numpy()) test_labels.extend(labels.cpu().numpy()) test_accuracy accuracy_score(test_labels, test_predictions) print(fEpoch {epoch1}/{epochs}, Train Loss: {train_loss/len(train_loader):.4f}, fTest Loss: {test_loss/len(test_loader):.4f}, Test Accuracy: {test_accuracy:.4f}) # 使用预训练模型 class PretrainedModel(nn.Module): def __init__(self, num_classes10): super(PretrainedModel, self).__init__() # 加载预训练的ResNet18模型 self.model models.resnet18(pretrainedTrue) # 替换最后一层全连接层 in_features self.model.fc.in_features self.model.fc nn.Linear(in_features, num_classes) def forward(self, x): return self.model(x) if __name__ __main__: # 设置设备 device torch.device(cuda if torch.cuda.is_available() else cpu) # 初始化简单CNN模型 simple_model SimpleCNN().to(device) # 定义优化器和损失函数 optimizer optim.Adam(simple_model.parameters(), lr0.001) criterion nn.CrossEntropyLoss() # 训练简单模型 print(Training Simple CNN model...) train_model(simple_model, train_loader, test_loader, 10, optimizer, criterion, device) # 初始化预训练模型 pretrained_model PretrainedModel().to(device) # 定义优化器和损失函数 optimizer optim.Adam(pretrained_model.parameters(), lr0.001) # 训练预训练模型 print(\nTraining Pretrained ResNet18 model...) train_model(pretrained_model, train_loader, test_loader, 5, optimizer, criterion, device)3.2 目标检测任务import torch import torch.nn as nn import torch.optim as optim from torch.utils.data import DataLoader from torchvision import datasets, transforms from torchvision.models.detection import fasterrcnn_resnet50_fpn from torchvision.models.detection.faster_rcnn import FastRCNNPredictor # 数据预处理 transform transforms.Compose([ transforms.ToTensor() ]) # 加载COCO数据集示例 # 注意实际使用时需要正确设置COCO数据集路径 # train_dataset datasets.CocoDetection(root./data/coco/train2017, # annFile./data/coco/annotations/instances_train2017.json, # transformtransform) # 简化的目标检测模型训练 class SimpleObjectDetector(nn.Module): def __init__(self, num_classes): super(SimpleObjectDetector, self).__init__() # 加载预训练的Faster R-CNN模型 self.model fasterrcnn_resnet50_fpn(pretrainedTrue) # 获取分类器的输入特征维度 in_features self.model.roi_heads.box_predictor.cls_score.in_features # 替换分类器 self.model.roi_heads.box_predictor FastRCNNPredictor(in_features, num_classes) def forward(self, images, targetsNone): return self.model(images, targets) # 训练目标检测模型 def train_detector(model, train_loader, epochs, optimizer, device): for epoch in range(epochs): model.train() train_loss 0 for images, targets in train_loader: images list(image.to(device) for image in images) targets [{k: v.to(device) for k, v in t.items()} for t in targets] optimizer.zero_grad() loss_dict model(images, targets) losses sum(loss for loss in loss_dict.values()) losses.backward() optimizer.step() train_loss losses.item() print(fEpoch {epoch1}/{epochs}, Train Loss: {train_loss/len(train_loader):.4f}) if __name__ __main__: # 设置设备 device torch.device(cuda if torch.cuda.is_available() else cpu) # 初始化目标检测模型 num_classes 91 # COCO数据集的类别数 detector SimpleObjectDetector(num_classes).to(device) # 定义优化器 optimizer optim.SGD(detector.parameters(), lr0.005, momentum0.9, weight_decay0.0005) # 注意实际使用时需要正确加载COCO数据集 # train_loader DataLoader(train_dataset, batch_size2, shuffleTrue, collate_fnlambda x: tuple(zip(*x))) # train_detector(detector, train_loader, 10, optimizer, device) print(Object detector initialized. Please load COCO dataset to train.)4. 性能评估4.1 图像分类模型性能模型数据集准确率训练时间模型大小简单CNNCIFAR10~75%~30分钟/10轮~10MBResNet18 (预训练)CIFAR10~92%~15分钟/5轮~40MB4.2 目标检测模型性能模型数据集mAP训练时间模型大小Faster R-CNNCOCO~37%~24小时/1轮~150MB5. 代码优化建议使用预训练模型预训练模型可以显著提高性能减少训练时间数据增强使用随机裁剪、翻转、颜色变换等数据增强技术提高模型泛化能力批量归一化在卷积层后添加批量归一化层加速训练过程学习率调度使用学习率衰减策略如StepLR或CosineAnnealingLR混合精度训练使用半精度浮点数训练加速计算并减少内存使用6. 结论计算机视觉是人工智能领域的重要方向从传统的图像处理方法到现代的深度学习模型计算机视觉技术取得了巨大进步。本文介绍了计算机视觉的核心技术包括图像表示、卷积神经网络和经典模型并通过PyTorch实现了图像分类和目标检测任务。随着深度学习技术的不断发展计算机视觉在图像分类、目标检测、语义分割、人脸识别等领域的应用越来越广泛。未来计算机视觉技术将继续向更高精度、更快速度、更广泛应用的方向发展为人工智能的进步做出更大贡献。

相关文章:

计算机视觉:从基础到深度学习应用

计算机视觉:从基础到深度学习应用 1. 背景与意义 计算机视觉(Computer Vision,简称CV)是人工智能领域的重要分支,旨在使计算机能够理解和处理图像信息。随着深度学习的发展,计算机视觉取得了突破性进展&…...

NcmpGui:解锁网易云音乐NCM格式的终极桌面解决方案

NcmpGui:解锁网易云音乐NCM格式的终极桌面解决方案 【免费下载链接】ncmppGui 一个使用C编写的转换ncm文件的GUI工具 项目地址: https://gitcode.com/gh_mirrors/nc/ncmppGui 你是否曾因网易云音乐的NCM格式文件无法在其他播放器上正常播放而感到困扰&#x…...

突破Navicat 14天限制:3步搞定Mac版试用期无限重置工具

突破Navicat 14天限制:3步搞定Mac版试用期无限重置工具 【免费下载链接】navicat_reset_mac navicat16 mac版无限重置试用期脚本 项目地址: https://gitcode.com/gh_mirrors/na/navicat_reset_mac 问题场景:当数据库工作遇到试用期壁垒 想象这样…...

MiroFish群体智能引擎部署与配置全指南

MiroFish群体智能引擎部署与配置全指南 【免费下载链接】MiroFish A Simple and Universal Swarm Intelligence Engine, Predicting Anything. 简洁通用的群体智能引擎,预测万物 项目地址: https://gitcode.com/GitHub_Trending/mi/MiroFish MiroFish作为简洁…...

重新定义Windows桌面体验:Seelen UI如何让你告别千篇一律的界面

重新定义Windows桌面体验:Seelen UI如何让你告别千篇一律的界面 【免费下载链接】Seelen-UI The Fully Customizable Desktop Environment for Windows 10/11. 项目地址: https://gitcode.com/GitHub_Trending/se/Seelen-UI 厌倦了Windows千篇一律的桌面环境…...

终极游戏画质优化指南:3步让所有显卡享受DLSS级性能提升

终极游戏画质优化指南:3步让所有显卡享受DLSS级性能提升 【免费下载链接】OptiScaler DLSS replacement for AMD/Intel/Nvidia cards with multiple upscalers (XeSS/FSR2/DLSS) 项目地址: https://gitcode.com/GitHub_Trending/op/OptiScaler 还在为显卡性能…...

机器人状态估计——从IMU运动方程到ESKF误差状态建模(上)

1. 从IMU数据到机器人状态估计的挑战 当你第一次拿到一个IMU传感器时,可能会觉得它就像个魔法黑盒——只要把它装在机器人上,就能知道机器人的姿态、速度和位置。但实际操作起来,你会发现IMU数据就像个调皮的孩子,稍不注意就会给你…...

手把手教你修复conda的HTTP 404错误:从错误日志分析到快速解决

深度解析Conda的HTTP 404错误:从日志分析到高效修复 当你满怀期待地输入conda create -n myenv python3.9准备创建新环境时,终端却无情地抛出一堆红色错误信息,最扎眼的就是那个requests.exceptions.HTTPError: 404 Client Error。这种突如其…...

百川2-13B-4bits量化版温度参数研究:OpenClaw任务稳定性影响

百川2-13B-4bits量化版温度参数研究:OpenClaw任务稳定性影响 1. 温度参数与自动化任务的微妙关系 上周我在调试OpenClaw自动处理周报的任务时,遇到了一个奇怪现象:同样的提示词,有时候生成的周报结构清晰、重点突出,…...

倩女幽魂易语言源码|支持编译运行,适合易语言开发者学习研究

温馨提示:文末有联系方式【标一】可编译倩女幽魂易语言源码开放 本套源码基于易语言开发,已完成基础环境配置与编译测试,生成的程序可正常启动并执行核心逻辑。 适用于熟悉易语言语法、掌握API调用与内存读写技术的开发者。【标二】仅面向具备…...

如何高效抓取足球数据:SoccerData实战指南

如何高效抓取足球数据:SoccerData实战指南 【免费下载链接】soccerdata ⛏⚽ Scrape soccer data from Club Elo, ESPN, FBref, FiveThirtyEight, Football-Data.co.uk, SoFIFA and WhoScored. 项目地址: https://gitcode.com/gh_mirrors/so/soccerdata 在足…...

【由浅入深探究langchain】第十七集-构建你的首个 RAG 知识库助手(从文档索引到检索增强生成)

前言在大语言模型(LLM)爆火的今天,我们常常会被 GPT 或 Claude 展现出的博学所惊叹。然而,当你试着问它“我公司昨晚新发布的财务报表数据是多少?”或者“我上周在笔记里写的某个私人计划是什么?”时&#…...

2025版等离子体期刊分区解析:从PRL到PPAP的投稿指南

1. 2025版等离子体期刊分区概览 对于从事等离子体研究的科研人员来说,选择合适的期刊投稿是研究成果传播的关键一步。2025版中科院期刊分区将等离子体相关期刊划分为三个主要层级,每个层级都有其独特的定位和特点。 先说说最顶级的中科院一区期刊。这个层…...

AIGC内容创作流水线:Qwen3-ASR-0.6B赋能语音素材自动化文本化

AIGC内容创作流水线:Qwen3-ASR-0.6B赋能语音素材自动化文本化 你有没有过这样的经历?录完一段精彩的课程讲解、一次深度的访谈对话,或者一段灵光乍现的语音随笔,看着长达几十分钟的音频文件,一想到要把它整理成文字稿…...

【忍者算法】394 字符串解码:遇到嵌套时,栈最像“现场保存器”

【忍者算法】394 字符串解码:遇到嵌套时,栈最像“现场保存器” 接上题:这次栈里要存“上一层的现场” 前两题里,我们已经见过两种栈的用法: 《有效括号》:栈存“还没配对的左括号”。 《最小栈》:栈存数据,同时顺手维护“当前最小值”。 这一题会再往前走一步。 因为…...

大模型上下文长度的优化策略与应用场景

1. 大模型上下文长度的本质与挑战 当你和ChatGPT聊天时,有没有遇到过它突然"失忆"的情况?比如聊到第20轮对话时,它完全忘记了开头讨论的主题。这就是上下文长度限制导致的典型问题。所谓上下文长度,就是大模型能够记住和…...

KART-RERANK大模型实战:Python爬虫数据智能排序与相关性分析

KART-RERANK大模型实战:Python爬虫数据智能排序与相关性分析 你是不是也遇到过这种情况?用Python爬虫吭哧吭哧抓了一大堆数据,结果发现里面什么都有:有用的、没用的、相关的、跑题的、高质量的、纯广告的……看着满屏的文本&…...

分布式爬虫安全:构建高可用代理池的架构与实践指南

分布式爬虫安全:构建高可用代理池的架构与实践指南 【免费下载链接】scylla Intelligent proxy pool for Humans™ to extract content from the internet and build your own Large Language Models in this new AI era 项目地址: https://gitcode.com/gh_mirror…...

Protocol Buffer 入门:跨平台的高效序列化神器

&#x1f525;个人主页&#xff1a;Milestone-里程碑 ❄️个人专栏: <<力扣hot100>> <<C>><<Linux>> <<Git>><<MySQL>> &#x1f31f;心向往之行必能至 目录 一、什么是 Protobuf&#xff1f; 二、序列化与反…...

解决设计开发断层:Figma Code Connect的7个革新性实践

解决设计开发断层&#xff1a;Figma Code Connect的7个革新性实践 【免费下载链接】code-connect A tool for connecting your design system components in code with your design system in Figma 项目地址: https://gitcode.com/GitHub_Trending/co/code-connect 设计…...

终极美化指南:foobar2000如何通过foobox-cn打造你的专属音乐空间?

终极美化指南&#xff1a;foobar2000如何通过foobox-cn打造你的专属音乐空间&#xff1f; 【免费下载链接】foobox-cn DUI 配置 for foobar2000 项目地址: https://gitcode.com/GitHub_Trending/fo/foobox-cn 厌倦了千篇一律的音乐播放器界面&#xff1f;想让你的音乐体…...

新手零踩坑!微信搜一搜排名优化8大干货,14天轻松冲进前10

很多新手运营者都有一个共同的困惑&#xff1a;明明做了公众号、小程序&#xff0c;也发了不少内容&#xff0c;可在微信搜一搜里搜相关关键词&#xff0c;却始终找不到自己的账号和内容&#xff0c;排名一直徘徊在百名之外&#xff0c;精准流量根本引不进来&#xff0c;更别提…...

3大核心技术解析:猫抓cat-catch如何实现浏览器媒体资源精准捕获

3大核心技术解析&#xff1a;猫抓cat-catch如何实现浏览器媒体资源精准捕获 【免费下载链接】cat-catch 猫抓 chrome资源嗅探扩展 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 猫抓cat-catch是一款专为技术爱好者和开发者设计的浏览器扩展工具&#xf…...

Z-Image-GGUF小程序开发:微信小程序前端调用云端AI绘画API

Z-Image-GGUF小程序开发&#xff1a;微信小程序前端调用云端AI绘画API 最近在折腾AI绘画&#xff0c;发现一个挺有意思的事儿&#xff1a;很多厉害的模型都部署在云端服务器上&#xff0c;但咱们平时用手机的时间可比用电脑多多了。要是能在微信里随手打开一个小程序&#xff…...

这次终于选对了!2026年最值得体验的专业AI论文软件

2026年AI论文写作工具已从“内容生成”进化为融合学术规范与智能优化的全流程解决方案&#xff0c;核心评价维度涵盖文献真实性、格式合规性、长文本逻辑、查重降重、AIGC合规等关键指标。本次测评覆盖6款主流工具&#xff0c;涵盖中英文、全流程与专项功能、免费与付费版本&am…...

三步解锁wxappUnpacker:从小白到高手的蜕变指南

三步解锁wxappUnpacker&#xff1a;从小白到高手的蜕变指南 【免费下载链接】wxappUnpacker 项目地址: https://gitcode.com/gh_mirrors/wxappu/wxappUnpacker 工具定位&#xff1a;小程序逆向工程的瑞士军刀 wxappUnpacker是一款专注于微信小程序解包的开源工具集&am…...

NUC 13 Pro装Ubuntu 20.04,WiFi图标消失?别急着换网卡,先试试这个BIOS固件更新法

NUC 13 Pro安装Ubuntu 20.04后WiFi图标消失的终极解决方案 当你满怀期待地在NUC 13 Pro上安装好Ubuntu 20.04&#xff0c;准备开始高效工作时&#xff0c;却发现系统托盘里那个熟悉的WiFi图标神秘消失了——这种挫败感我深有体会。更令人困惑的是&#xff0c;蓝牙功能却完全正…...

NVIDIA Orin AGX开发环境搭建避坑指南:从Ubuntu 22.04到ROS2完整配置流程

NVIDIA Orin AGX开发环境搭建实战&#xff1a;从系统部署到ROS2深度优化 第一次拿到NVIDIA Orin AGX开发套件时&#xff0c;我对着这块巴掌大的计算模块发呆了十分钟——它强大的AI算力与紧凑体积形成的反差令人震撼。但很快现实给了我一盆冷水&#xff1a;官方文档里轻描淡写的…...

OpenClaw三种方式安装:手把手保姆级教程

前置操作 【一】获取API Key 现在很多平台的API Key都有免费额度&#xff0c;阿里云和Kimi的优惠力度大些&#xff0c;大家按需索取。 阿里云百炼 Step01&#xff1a;注册/登录阿里云 Step02&#xff1a;创建并获取API Key 注意&#xff1a;我们要的是API Key&#xff0c;如…...

避坑指南:解决ROS2 Gazebo仿真中机械臂‘散架’或‘弹飞’问题(附惯性矩阵计算与dynamics参数调整)

ROS2 Gazebo仿真中机械臂物理异常问题深度解析与实战解决方案 当你在Gazebo仿真环境中看到精心设计的机械臂模型像积木一样散落一地&#xff0c;或是突然像火箭般腾空而起时&#xff0c;那种挫败感任何机器人开发者都能感同身受。这类物理异常问题不仅影响开发效率&#xff0c;…...