图像分割之环境搭建

标签: 无 分类: 未分类 创建时间:2024-12-19 07:27:52 更新时间:2026-05-27 11:42:29

1.前言

图像分割(Image Segmentation)是一种计算机视觉领域的技术,旨在将图像分成若干个特定的、具有语义意义性质的区域。图像分割可以用于许多领域,包括目标检测、图像编辑、医学图像分析等。它是由图像处理到图像分析的关键步骤。

  • 语义分割
    语义分割的目的是把图像中的每个像素分为特定的语义类别,属于特定类别的像素仅被分类到该类别,而不考虑其他信息,例如:人、车、树、狗等这就是不同的类别。语义分割的方法:基于全卷积网络(FCN)、深度解码网络(DeepLab)、U-Net、图像分割神经网络(SegNet)、Mask R-CNN等。

  • 实例分割
    实例分割根据“实例”而不是类别将像素分类,实例分割的目的是将图像中的目标检测出来,它不仅要对图像中的每个像素进行语义类别的分类,还要将同一类别的不同实例进行区分,并且对目标的每个像素分配类别标签以区分它们。实例分割的方法:Mask R-CNN、ShapeMask、全卷积实例分割(Fully Convolutional Instance Segmentation,FCIS)、PANet、YOLACT等。

  • 全景分割
    全景分割是最新开发的分割任务,可以表示为语义分割和实例分割的组合,其中图像中对象的每个实例都被分离,并预测对象的身份。

参考文章:
【1】.深度学习之图像分割——入门篇 1.简介;2.图像分割常用数据集;3.图像分割评价指标;4.图像分割图标的工具:Labelme、VGG Image Annotator (VIA)、LabelImg、RectLabel、COCO Annotator;5.图像分割常用的损失函数:交叉熵损失函数(Cross-Entropy Loss)、Dice损失函数(Dice Loss)、Jaccard损失函数(Jaccard Loss)、Focal损失函数(Focal Loss)、像素交叉熵损失函数(Pixel-wise Cross-Entropy Loss);6.基于深度学习的图像分割详解。
【2】.计算机视觉中常见的图像分割算法与网络模型 1.传统给图像算法:传统给图像算法、边缘检测、区域生长、分水岭算法、基于聚类的方法、基于轮廓的方法(Active contours/snakes)。2.深度学习方法:FCN(全卷积网络,端到端的图像风格方法)、U-Net、seg-Net、DeepLab系列、Mask R-CNN、PSP-Net(金字塔场景分割网络)、MA-Net:(multi-scale Attention Net work)

2.安装

其实安装我废了很大的时间,总是发现cuda无法使用,尝试了很多方法,我的系统是windows 10,显卡是RTX3080,安装了最新的显卡驱动。

【尝试方案】
(1)使用 mamba 进行安装
先是安装 NVIDIA 驱动, nvidia-smi 查看 CUDA 版本,12.7。然后CUDA官网 找到对应版本,安装了 12.6 版本。接着执行 pytorch 安装

1
mamba install pytorch pytorch torchvision torchaudio pytorch-cuda=12.4 -c pytorch -c nvidia 

结果cuda无法使用。

(2)去掉多个python环境
因为我电脑里面本身有多个python环境

1
where.exe python

删除不是 mamba 的python环境。删除windows自带的python,清理了 WindowsApps 别名:点击任务栏的 “开始” 图标(或按键盘上的 Win 键);直接输入 “别名”;在搜索结果中点击 “管理应用执行别名” (Manage app execution aliases);关闭Python这一项。

(3)使用pip安装
使用 pip 安装清华源的cuda驱动,结果弄了很久,也没有用。

1
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu124 --extra-index-url https://pypi.tuna.tsinghua.edu.cn/simple --no-cache-dir

【解决方案】
最后解决方案,就是降级

1
2
3
4
5
6
7
8
9
10
11
mamba deactivate
mamba env remove -n ai -y
mamba clean --all -y

mamba create -n ai python=3.11 -y

mamba activate ai
# 降级
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121 --no-cache-dir
# 安装剩余依赖
pip install -r requirements.txt

测试代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import torch
import sys
import os

print(f"Python version: {sys.version}")
print(f"PyTorch version: {torch.__version__}")
print(f"CUDA available: {torch.cuda.is_available()}")
if not torch.cuda.is_available():
print(f"CUDA error code: {torch.version.cuda}")
# 检查是否能看到显卡
try:
import subprocess
result = subprocess.check_output(['nvidia-smi'])
print("NVIDIA-SMI is working.")
except:
print("NVIDIA-SMI failed in Python.")

3.问题

(1) OSError: Can’t load the configuration of ‘nvidia/segformer-b2-finetuned-ade-512-512’. If you were trying to load it from ‘https://huggingface.co/models', make sure you don’t have a local directory with the same name. Otherwise, make sure ‘nvidia/segformer-b2-finetuned-ade-512-512’ is the correct path to a directory containing a config.json file
主要就是在下载模型的时候,出现的问题,因为网络原因导致无法下载基础模型。

【解决方案】
因为使用 os.environ[“HF_ENDPOINT”] = “https://hf-mirror.com" 在代码里面进行配置,这个效果不行,只能是在 PowerShell 里设置环境变量。

1
$env:HF_ENDPOINT = "https://hf-mirror.com"
小额赞助
本人提供免费与付费咨询服务,感谢您的支持!赞助请发邮件(ititchuan@gmail.com)通知,方便公布您的善意!
**光 3.01 元
Sun 3.00 元
ititchuan 3.00 元
微信公众号
广告位
诚心邀请广大金主爸爸洽谈合作
每日一省
isNaN 和 Number.isNaN 函数的区别?

1.函数 isNaN 接收参数后,会尝试将这个参数转换为数值,任何不能被转换为数值的的值都会返回 true,因此非数字值传入也会返回 true ,会影响 NaN 的判断。

2.函数 Number.isNaN 会首先判断传入参数是否为数字,如果是数字再继续判断是否为 NaN ,不会进行数据类型的转换,这种方法对于 NaN 的判断更为准确。

每日二省
为什么0.1+0.2 ! == 0.3,如何让其相等?

一个直接的解决方法就是设置一个误差范围,通常称为“机器精度”。对JavaScript来说,这个值通常为2-52,在ES6中,提供了Number.EPSILON属性,而它的值就是2-52,只要判断0.1+0.2-0.3是否小于Number.EPSILON,如果小于,就可以判断为0.1+0.2 ===0.3。

每日三省
== 操作符的强制类型转换规则?

1.首先会判断两者类型是否**相同,**相同的话就比较两者的大小。

2.类型不相同的话,就会进行类型转换。

3.会先判断是否在对比 null 和 undefined,是的话就会返回 true。

4.判断两者类型是否为 string 和 number,是的话就会将字符串转换为 number。

5.判断其中一方是否为 boolean,是的话就会把 boolean 转为 number 再进行判断。

6.判断其中一方是否为 object 且另一方为 string、number 或者 symbol,是的话就会把 object 转为原始类型再进行判断。

每日英语
Happiness is time precipitation, smile is the lonely sad.
幸福是年华的沉淀,微笑是寂寞的悲伤。