Pytorch深度学习实战教程(一):开启炼丹模式,语义分割基础与环境搭建

PyTorch深度学习实战(1)——神经网络与模型训练过程详解 在本节中,我们将了解传统机器学习与人工神经网络间的差异,并了解如何在实现前向传播之前连接网络的各个层,以计算与网络当前权重对应的损失值;实现反向传播以优化权重达到最小化损失值的目标。并将实现网络的所有关键组成——前向传播、激活函数、损失函数、链式法则和梯度下降,从零开始构建并训练了一个简单的神经网络。 阅读详情

一、前言

该系列文章的内容有:

  • Pytorch的基本使用
  • 语义分割算法讲解

先从最简单的语义分割基础与开发环境搭建开始讲解。

二、语义分割

语义分割是什么?

语义分割(semantic segmentation) : 就是按照“语义”给图像上目标类别中的每一点打一个标签,使得不同种类的东西在图像上被区分开来。可以理解成像素级别的分类任务,直白点,就是对每个像素点进行分类。

简而言之,我们的目标是给定一幅RGB彩色图像(高x宽x3)或一幅灰度图像(高x宽x1),输出一个分割图谱,其中包括每个像素的类别标注(高x宽x1)。具体如下图所示:

 

注意:为了视觉上清晰,上面的预测图是一个低分辨率的图。在实际应用中,分割标注的分辨率需要与原始图像的分辨率相同。

这里对图片分为五类:Person(人)、Purse(包)、Plants/Grass(植物/草)、Sidewalk(人行道)、Building/Structures(建筑物)。

与标准分类值(standard categorical values)的做法相似,这里也是创建一个one-hot编码的目标类别标注——本质上即为每个类别创建一个输出通道。因为上图有5个类别,所以网络输出的通道数也为5,如下图所示:

如上图所示,预测的结果可以通过对每个像素在深度上求argmax的方式被整合到一张分割图中。进而,我们可以轻松地通过重叠的方式观察到每个目标。

argmax的方式也很好理解。如上图所示,每个通道只有0或1,以Person的通道为例,红色的1表示为Person的像素,其他像素均为0。其他通道也是如此,并且不存在同一个像素点在两个以上的通道均为1的情况。因此,通过argmax就找到每个像素点的最大索引通道值。最终得到结果为:

Pytorch深度学习实战教程(一):语义分割基础与环境搭建

 

当只有一层通道被重叠至原始图像时,我们称之为mask,即只指示某一特定类别所存在的区域。

高分辨率的结果如下图所示,不同的颜色代表不同的类别:

 

三、数据集

常见的语义分割算法属于有监督学习,因此标注好的数据集必不可少。

公开的语义分割数据集有很多,目前学术界主要有三个benchmark(数据集)用于模型训练和测试。

第一个常用的数据集是Pascal VOC系列。这个系列中目前较流行的是VOC2012,Pascal Context等类似的数据集也有用到。

第二个常用的数据集是Microsoft COCO。COCO一共有80个类别,虽然有很详细的像素级别的标注,但是官方没有专门对语义分割的评测。这个数据集主要用于实例级别的分割以及图片描述。所以COCO数据集往往被当成是额外的训练数据集用于模型的训练。

第三个数据集是辅助驾驶(自动驾驶)环境的Cityscapes,使用比较常见的19个类别用于评测。

可以用于语义分割训练的数据集有很多:

  • Pascal Voc 2012:比较常见的物体分类,共21个类别;
  • MS COCO:由微软赞助,几乎成为了图像语义理解算法性能评价的“标准”数据集,共80个类别;
  • Cityscapes:包含50个欧洲城市不同场景、不同背景、不同季节的街景的33类标注物体;
  • Pascal-Context:对于PASCAL-VOC 2010识别竞赛的扩展,共59个类别;
  • KITTI:用于移动机器人及自动驾驶研究的最受欢迎的数据集之一,共11个类别;
  • NYUDv2:2.5维数据集,它包含1449张由微软Kinect设备捕获的室内的RGB-D图像;
  • SUN-RGBD:由四个RGB-D传感器得来,包含10000张RGB-D图像,尺寸与PASCAL VOC一致;
  • ADE20K_MIT:一个场景理解的新的数据集,这个数据集是可以免费下载的,共151个类别。

数据集有很多,本系列教程不局限于具体数据集,可能也会用到Kaggle比赛之类的数据集,具体每个数据集怎么处理,数据集的格式是什么样的,后续文章用到什么数据集会具体讲解。

四、GPU机器

对于语义分割任务,有个带有高端GPU显卡的机器还是非常有必要的,如果没有,训练收敛会很慢。

最佳的开发环境为Linux,因为在公司的日常工作,基本都是使用Linux云服务器进行模型开发的工作,提前适应Linux操作系统还是有好处的。

对于学生党,如果实验室是做深度学习方向研究的,并且资源完备,那么GPU服务器应该还是能有的,对于GPU服务器的问题不用愁。

但可能由于条件限制,实验室没有配备GPU服务器,还想学习深度学习相关的知识,有三种方法:

1、免费云服务器Google Colab

勉强可以一用的是Google Colab,它是一个Google提供的免费GPU服务器,提供的GPU算力还算可以,但是它的主要问题在于需要翻墙和存储空间小,Google Colab的存储空间是通过挂载Google Drive得到的,Google Drive只提供15G的免费存储空间,想要扩展空间,还是需要花钱的。

想使用免费云服务器Google Colab的,可以自行百度教程。

2、阿里云付费GPU云服务器

阿里云提供GPU云服务器资源,有两种付费模式:包月和按流量付费。有P4服务器,甚至吊炸天的V100服务器。性能强劲,价格也很感人,两个字形容就是很贵,个人使用者并不推荐购买。除了阿里云提供GPU云服务,腾讯、百度、华为都有相应的服务,但是都很贵。

3、配置一台电脑主机

可以自己配置一台台式主机,也算是对自己的一种投资。配置一台不错的,可以用于深度学习训练的主机需要6000元左右。

深度学习的训练很依赖显卡的性能,因此需要配置一个较好的N卡,也就是NVIDIA的显卡,选显卡的技巧就是看下显卡天梯图(点击查看):

 

这个显卡天梯图主要包括的是市面常用的显卡排名,不包括类似V100这样的价格上10万的显卡。

天梯图,越靠上,显卡的性能越高,不要选择右侧的AMD显卡,虽然性能好,但A卡是不支持CUDA的。

根据自己的预算,选择显卡,显卡的显存尽量选择8G以上的,深度学习模型训练很吃显存资源。

本人买了微星的RTX 2060 Super,买时的价格是3399元,显卡很不保值,价格会随时间越来越低。

配置电脑其实能写很多,比如CPU、电脑主板、电源、内存、散热器的选择等,这里就不扩展了。没有精力自己组装台式机的,可以直接买配备相应显卡的台式机,但价格相对自己组装的台式机,价格会贵一些。

五、开发环境搭建

有条件的,推荐使用Ubuntu系统配置开发环境,Ubuntu是Linux的一个发行版之一,适合新手,界面友好,操作简单。

由于本人购买的电脑主板,不支持Linux架构的系统安装,因此后续会以Windows作为开发环境,但这并不影响算法原理与代码的讲解。

本人的台式机配置情况:

CPU:Intel i7 9700k

显卡:RTX 2060 Super

系统:Windows 10

安装好Windows系统和必要的驱动后,需要安装的工具有:CUDA、Anaconda3、cuDNN、Pytorch-gpu、Fluent Terminal(可选)。

1、CUDA

CUDA,是显卡厂商NVIDIA推出的运算平台。我们需要根据自己显卡的型号选择支持的CUDA版本,例如RTX 2060 Super支持CUDA 10,下载地址:点击查看

 

傻瓜式安装,很简单。

安装好后,需要再配置下系统的环境变量,电脑->鼠标右键->属性->高级系统设置->环境变量->Path:

 

添加自己的NVSMI路径到环境变量中,我采用的是默认安装地址:

 

配置好后,就可以在cmd中使用nvidia-smi指令查看显卡了。

2、Anaconda3

Anaconda是Python的包管理器和环境管理器,可以方便我们安装Python的第三方库。

下载地址:点击查看

选择Python 3.7的版本,安装也很简单,傻瓜式下一步即可。

安装好后,需要添加系统环境变量,方法与安装CUDA时一样:

D:\Anaconda
D:\Anaconda\Scripts

路径改为自己安装的Anaconda路径即可。

配置好后,在cmd中运行conda -V没有报错,有版本信息输出,说明配置成功。

3、cuDNN和Pytorch安装

cuDNN是用于深度神经网络的GPU加速库。它强调性能、易用性和低内存开销。

安装好Anaconda之后,可以使用conda安装cuDNN和Pytorch。

打开Anaconda Prompt,这是Anaconda自带的命令行工具,先一定要用这个工具创建环境,直接用系统自带的cmd,可能遇到一些奇怪的问题,例如CondaHTTPError的错误。在Anaconda Prompt中输入:
 

conda create -n your_name jupyter notebook

这句话的意思是创建一个名字为your_name的虚拟环境,并且这个虚拟环境额外安装jupyter notebook第三方库。可以将your_name改为你自己喜欢的名字,这个名字是你的虚拟环境的名字,自己随便取,比如jack。

随后,输入y进行安装:

安装好后,可以通过指令conda info -e查看已有环境情况。

 

从上图可以看到,有两个环境,一个是base,自带的基础环境,另一个是我们新创建的名为jack的环境。新建环境的原因是,我们可以分开管理我们配置的环境。

安装好环境后,我们就可以激活jack环境,并安装cuDNN和GPU版的Pytorch了。激活名为jack的环境:

activate jack

Pytorch深度学习实战教程(一):语义分割基础与环境搭建

可以看到,我们的环境由base变成了jack。在jack环境中安装cuDNN:

conda install cudnn

安装cuDNN好后,安装Pytorch,打开Pytorch官网:点击查看

 Pytorch深度学习实战教程(一):语义分割基础与环境搭建

 

根据自己的环境选择,选择好后,网页会自动给出需要运行的指令。这里可能需要区分下Python的版本和CUDA的版本。

Python版本查看方法:直接在命令行中输入python,会看到Python的版本。

CUDA版本查看方法,在命令行中输入nvidia-smi:

 

 

确定好版本后,就可以通过Pytorch官网提供的指令安装GPU版本的Pytorch了。

至此,基础的环境搭建已经完成,恭喜。

4、Fluent Terminal

基础环境配好了,正常使用已经够了。

但是追求颜值的人,可能会觉得,Windows自带的命令行工具和Anaconda提供的命令行工具都太丑了。

有没有好看,又好用的Terminal?答案是有的,不过需要自己配置,并且还有一些坑需要慢慢踩。

例如Fluent Terminal,它是现代的、也是我比较推荐的终端工具。它是专属于 Windows 平台,并利用UWP技术打造的颜值超高的终端模拟器。先看下颜值:

喜欢折腾的,可以看看这几篇文章:

告别 Windows 终端的难看难用,从改造 PowerShell 的外观开始

像MAC一样使用win10的Terminal

这种美化的工具有很多,需要自行探索,由于本文不是专门针对Terminal的美化文章,就不用过多篇幅介绍这些美化工具了。喜欢折腾的,可以根据自己的需求自行百度。
 

六、小结
本文介绍了语义分割的基础知识与开发环境的搭建,该系列的下一篇文章会具体讲解UNet的算法原理以及训练代码。

参考资料

1、https://blog.youkuaiyun.com/mou_it/article/details/82225505

2、https://blog.youkuaiyun.com/ShuqiaoS/article/details/87360693

PyTorch深度学习实战(3)——使用PyTorch构建神经网络 PyTorch 是一个用于构建深度神经网络的库,具有灵活性和可扩展性,可以轻松自定义模型。在本节中,我们将使用 PyTorch 库构建神经网络,利用张量对象操作和梯度值计算更新网络权重,并利用 Sequential 类简化网络构建过程,最后还介绍了如何使用 save、load 方法保存和加载模型,以节省模型训练时间。 阅读详情

相关推荐

从GWAS到单细胞:利用seismic包精准定位疾病相关的关键细胞亚群与驱动基因

本文详细介绍了如何利用seismic包将GWAS与单细胞测序数据结合,精准定位疾病相关的核心细胞亚群与驱动基因。通过创新的统计算法和实战案例,帮助研究者从遗传汇总数据中挖掘关键生物学机制,提升疾病研究的精准度和效率。

weixin_29215815的博客 441

【深度学习】语义分割 PASCAL Context 数据集

数据集介绍 PASCAL Context数据集由两部分组成: PASCAL VOC 2010 语义分割数据集; Context 标注。 PASCAL Context 总共有459个标注类别,包含 10103 张图像,其中 4998 用于训练集,5105 用于验证集。现在最广泛地用法是使用其中出现频率最高的 59 个类别最为语义标签,其余类别标记为背景即background。采用这一做法的论文有...

qq_28869927的博客 1万+

国内网络环境下Calico v3.26.4安装避坑指南(附华为云镜像加速脚本)

本文为国内开发者提供Calico v3.26.4的高效部署指南,重点介绍如何通过华为云镜像加速服务解决Kubernetes集群网络插件镜像拉取问题。文章包含详细的镜像加速脚本、部署清单修改方法及深度排错技巧,帮助开发者快速完成Calico网络插件的安装与配置。

brown的博客 288

Pascal Context数据集安装的总结(语义分割)

1.首先利用Anaconda创建一个Pascal context的python环境pcontext 2.下载文件api接口(https://github.com/ccvl/detail-api) 3在pcontext环境中安装这个接口,进入到setup.py文件目录,具体命令如下 python setup.py build_ext --inplace python setup.py install 如果提示Cython没有装,就先安装Cython. conda intall Cython

xd1723138323的博客 2883

163种中草药图像数据集构建与ResNet-50迁移学习实战指南

在计算机视觉领域,高质量标注数据集是模型训练的基石,直接影响图像分类、目标检测等任务的性能。其核心原理在于为算法提供结构化的监督信号,通过深度学习模型学习从像素到语义的映射关系。构建此类数据集的技术价值在于解决了特定垂直领域(如中医药)数据稀缺的痛点,为AI技术落地提供了关键“燃料”。在应用场景上,标准化数据集广泛支撑着教学演示、算法验证和产业应用开发。本文聚焦于中草药识别这一细分领域,详细介绍了一个包含163种常见药材、经过多源聚合与清洗的图像数据集构建全过程,并提供了基于PyTorch和ResNet-5

weixin_33672400的博客 454

YOLO26涨点改进| CVPR 2026 | 独家创新首发、特征融合改进篇 | 引入 LFSB 差分双维注意融合模块,通过交替特征融合与分离策略,能够精准区分目标特征,顶会助力YOLO26有效涨点

本文提出LSFB差分双维注意融合模块,用于改进YOLO26目标检测模型。该模块通过融合-分离交替策略和差分注意力机制,有效提升模型在复杂场景下的特征分离能力,特别是在处理重叠物体或反射干扰时表现优异。LSFB采用双向投影、双维注意力计算和跨流减法算子,实现特征共享与独立提取的平衡。实验表明,该模块能显著减少特征混淆,提高检测精度和鲁棒性。文章还详细介绍了模块实现的核心代码、YAML配置文件修改方法以及三种改进方案,为YOLO26模型性能提升提供了创新解决方案。

Ai缝合怪、助力小伙伴高效发论文 326

三个优秀的语义分割框架 PyTorch实现

【导语】本文基于动手深度学习项目讲解了FCN进行自然图像语义分割的流程,并对U-Net和Deeplab网络进行了实验,在Github和谷歌网盘上开源了代码和预训练模型,训练和预测的脚本已经...

3D视觉工坊 1835

13、核心网络模块:VyOS 设备配置实战

本文详细介绍了如何使用 Ansible 核心网络模块对 VyOS 虚拟设备进行自动化配置,涵盖环境搭建、变量设置、任务编写、playbook 运行及配置验证全过程。通过实际案例展示了 Ansible 在网络设备管理中的强大功能,包括多设备支持、模板化配置、备份回滚等优势,并提供了最佳实践建议与未来发展趋势分析,帮助读者提升网络运维效率。

linux6sysadmin的博客 114

Pascal Content数据集

若是出现下面的问题可以手动下载detail-api的压缩包文件到项目中,再进行解压.我的就是git时候出了问题,然后手动下载的,服务器有时候也不稳定。已经在转换啦,慢慢等待就好,可以干点其他的,或者浅休息一下。Pascal Context的训练和验证集可以从这里下。然后python setup.py install。再跑python setup.py install。,然后运行以下命令将注释转换为正确的格式。要从原始数据集中分离训练和验证集,您可以从。其中pascal_context.py如下。

qq_53682472的博客 1272

10天冲刺国自然基金!用这套实战AI提示词指令教程,助你中标率翻倍!亲测DeepSeek和ChatGPT不好用

虽然以上国自然提示词指令经过反复实测,但并不是万能无脑帮你搞定所有,大模型AI的特性是你专业领域能力越强,它的智商表现就会更加强大,通过以上提示词教程的使用,大大提升中标概率是肯定的。还有就是大模型的使用上,不是市面上大家都说好的就一定适用,目前来看,Gemini和Claude的两个模型是非常适合国自然本子的修改的。在使用大模型进行国自然本子撰写修改时,首先是角色的设定,然后是目标和背景的描述,好用的提示词指令都是要经过无数次的实测,比对输出结果后又反复调整,达到最佳的效果状态的提示词指令。

智能AI让学术科研更容易 1245

【QNX+Android虚拟化方案】129 - USB眼图参数配置

【QNX+Android虚拟化方案】129 - USB眼图参数配置

|~~~热爱生活、努力学习的小伙汁~~~| 821

Python深度学习:从入门到实战

亲爱的读者,欢迎您翻开这本书。我们即将探索的,是深度学习的宇宙——一个由数据、算法与算力构筑的奇妙世界。它既是严谨的科学,也是创造的艺术,更是一条通往未来智慧的修行之路。本书将带您从最基础的数学原理出发,亲手搭建神经网络,驾驭Transformer等前沿模型,最终将智慧转化为现实世界的价值。请放下畏惧,保持好奇。这不仅是一次知识的学习,更是一场思维的远行。来,随我一起,开启这趟非凡的旅程吧。

weixin_45747731的博客 296

数学建模之0—1规划(Python)

目录 1、概述 (1)知识框架 (2)线性整数规划模型 (3)分支定界法 2、案例 (1)案例1​ (2)案例2 3、遗传算法—sko-GA包实现 (1)代码 (2)结果 4、PuLp实现 (1)代码 (2)结果 5、致谢 1、概述 (1)知识框架 (2)线性整数规划模型 (3)分支定界法 2、案例 (1)案例1 (2)案例2 3、遗传算法—sko-GA包...

weixin_46039719的博客 4109

PyTorch中BatchNorm与InstanceNorm的核心差异与应用场景详解

在深度学习中,归一化技术是稳定训练、提升模型性能的关键组件。其核心原理是通过调整网络中间层激活值的分布,缓解内部协变量偏移问题,从而加速收敛并提升泛化能力。从技术价值看,不同的归一化方法通过在不同维度上计算统计量,适应了多样化的任务需求。例如,在图像分类、目标检测等判别式任务中,通常需要利用批次维度信息来学习泛化特征;而在风格迁移、图像生成等生成式场景中,则更关注单一样本内部的结构一致性。BatchNorm通过跨样本计算通道统计量,成为通用视觉任务的基石;而InstanceNorm通过专注于单样本内的空间维

weixin_33946020的博客 444

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

AI工程化实战:从Prompt Engineering到企业级Agent开发全解析

人工智能(AI)作为驱动数字化转型的核心技术,其原理基于机器学习算法对海量数据的学习与模式识别,通过神经网络等模型实现智能决策。这一技术价值在于将数据转化为生产力,广泛应用于智能客服、内容生成、数据分析等场景。随着AI Agent开发和AI应用开发成为行业热点,掌握AI工程化实践成为技术人才的关键竞争力。本文聚焦于如何构建具备记忆和联网搜索能力的智能助手,并深入解析基于向量数据库的检索增强生成(RAG)系统,为企业级AI应用落地提供从环境搭建到生产部署的完整路径。

weixin_33889665的博客 561

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

端到端世界模型如何重构自动驾驶规控工程师能力体系

世界模型是自动驾驶从模块化走向统一认知范式的核心技术,其本质是构建可微分、可推理、可验证的驾驶世界内部表征。它并非取代传统规控,而是将物理建模、语义理解与因果推理深度融合,推动规控从‘轨迹跟踪优化’升维至‘世界状态演化建模’。该技术显著提升对复杂交互场景(如无保护左转、施工区通行)的理解鲁棒性与风险预判能力,并支撑L3+系统在安全验证(如反事实推理测试)、车规部署(Orin-X实时性)和常识注入(ASIL-D兼容损失函数)等关键环节实现突破。本文聚焦规控工程师在端到端世界模型时代所需掌握的语义建模、多粒度表

aebe49167的博客 473

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

PyTorch深度学习实战

pytorch深度学习实战

码龙社的博客 1428

PASCALContext提取语义分割任务的Mask(Win10+Pytorch)

最近在做语义分割的实验,期间用到了PASCALContext数据集,该数据集是基于PASCAL VOC2010数据集划分出来的。其图片部分与VOC2010目录下的JPEGImages完全一致,使用了其中的4996张作为训练集,5104张作为验证集。不同于VOC2010的是,PASCALContext的标注信息扩展到了459类,其中用于语义分割任务的类别是59(不含背景)。我自己在执行上述代码的时候mode和transform指定的都是None,这样相当于仅提取了Mask并生成了训练和验证的txt文件。

jyh9638的博客 1506

语义分割的数据集

    目前学术界主要有三个benchmark(数据集)用于模型训练和测试。第一个常用的数据集是Pascal VOC系列。这个系列中目前较流行的是VOC2012,Pascal Context等类似的数据集也有用到。第二个常用的数据集是Microsoft COCO。 COCO一共有80个类别,虽然有很详细的像素级别的标注,但是官方没有专门对语义分割的评测。这个数据集主要用于实例级别的分割(Insta...

蓬莱道人的博客 2万+
上一篇: Python 进阶 (四) 浅谈 Python 闭包
下一篇: Python 进阶 (四) 浅谈 Python 闭包
wrr-cat
博客等级 码龄9年 128粉丝 302原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值