【肆十二】YOLO系列代码环境配置统一流程

大家好,这里是肆十二,YOLO系列代码我们已经开发了很多内容,每次的内容除了要识别的内容不一致之外,其他环境配置一类的流程基本一致,为了提高效率,也为了节省大家的时间,我在本期将环境配置的统一问题进行抽取出来,后续的更新大家可以先看是否是你需要的内容,然后再来看环境配置的部分。

安装前的准备工作

安装之后需要你提前下载好Pycharm和miniconda,对这部分内容存在疑问的小伙伴可以看这期内容:

Python项目配置前的准备工作_pyenv设置镜像-优快云博客

环境配置

  • 配置镜像

    miniconda默认的依赖下载位置在国内,采用默认的下载位置将会导致下载速度极慢。

    所以我们这里统一配置为清华的镜像,在你的命令行中执行下列的命令即可。

    conda config --remove-key channels
    conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
    conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
    conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
    conda config --set show_channel_urls yes
    pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
    

    执行的截图如下:

    image-20250131142121621

  • 新建虚拟环境

    虚拟环境是非常好用的,这样可以保证你的每个项目之间互相不会影响。所以我们这里建立一个虚拟环境,考虑到我们项目的时效性,这里我将会创建一个名字为yoloyolo,python版本为3.10.0的虚拟环境,创建虚拟环境之后激活虚拟环境。

    conda create -n yoloyolo python==3.10.0
    conda activate yoloyolo
    

    执行的截图如下。

    image-20250131142431760

    image-20250131142532991

  • 安装torch

    torch我们一般最好是单独安装,因为torch需要一些cuda之类的资源库,安装之前请保证你已经安装了比较新的nvidia驱动。注意只需要更新你的nvidia驱动即可,不需要安装其他的cuda或者cudnn之类的额外安装包。下面的命令分为两条,一条是适合有Nvidia显卡的小伙伴安装GPU版本的torch,一部分则是适合没有GPU安装cpu版本Torch的小伙伴。

    # CUDA 11.8
    conda install pytorch==2.1.0 torchvision==0.16.0 torchaudio==2.1.0 pytorch-cuda=11.8 -c pytorch -c nvidia
    # CUDA 12.1
    conda install pytorch==2.1.0 torchvision==0.16.0 torchaudio==2.1.0 pytorch-cuda=12.1 -c pytorch -c nvidia
    # CPU Only
    conda install pytorch==2.1.0 torchvision==0.16.0 torchaudio==2.1.0 cpuonly -c pytorch
    

    下面是安装截图,我本地的电脑是nvidia的3060显卡。

    image-20250131142936708

    我这里执行的是cuda12.1的版本的torch的安装。

    image-20250131143405733

    安装完了之后使用torch可能会有下列的警报信息。

    image-20250131143748696

    所以我们需要在命令行中执行下列指令降低numpy的版本。

    pip install numpy==1.23.5
    

    安装之后可以进入python解释器执行下面的指令测试一下你的gpu安装是否可用

    import torch
    flag = torch.cuda.is_available()
    print(f"GPU是否可用:{flag}")
    device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
    print(device)
    print(torch.cuda.get_device_name(0))
    

    截图如下:

    image-20250131144032999

    到这里我们基本完成了torch的安装非常完美。

  • 安装其他的依赖库

    接下来需要安装其他的依赖库的文件,所以在我们的教程中下载的代码文件中都包含一个project.toml的文件,这个文件中包含了我们需要安装的各种依赖库的版本,如下图所示。

    image-20250131144319896

    进行命令行之后,别忘记执行激活指令,激活我们已经安装了torch的虚拟环境。

    conda activate yolo
    

    然后执行pip指令来进行其他依赖库的安装。

    pip install -v -e .
    

    image-20250131144530590

    image-20250131145136609

  • 进行简单的测试

    在我们的42_demo目录下面放了一段测试脚本,是使用yolo11模型进行视频文件的预测,如果你可以正常运行这段脚本,那表示你的安装是没有问题的。

    cd 42_demo
    python track_test.py
    

    如下图所示。

    image-20250131145442141

    image-20250131145357930

在Pycharm中运行项目

接下来我们使用pycharm打开项目,并配置我们刚才创建的虚拟环境。

image-20250131145659141

选择虚拟环境

image-20250131145722750

如果你的版本比较新,这样选择:

image-20250131211358175

如果你的版本比较老,这样选择。

image-20250131145825853

等待加载完成,pycharm中成功出现虚拟环境。

image-20250131145920855

执行以下测试看是否可用。

image-20250131145953191

出现下面的检测结果表示你可以直接起飞。

image-20250131150033741

其他

关于后续的训练和验证的过程你可以看每期的视频。

如果你想要通过视频的方式了解yolo的算法原理:手把手教你使用YOLO11训练自己的检测追踪数据集_哔哩哔哩_bilibili

如果你需要了解yolo训练之后产生的各种指标图请看这个位置:YOLO11模型指标解读-mAP、Precision、Recall_yolo11 怎么提高map-优快云博客

如果你还有其他的疑问可以看这个位置:肆十二/contact_42

<think>好的,我现在需要帮助用户了解或使用肆十二的UNet。根据用户提供的引用内容,特别是引用[2]和[3],我了解到肆十二之前做过医学图像分割的教程,但遇到数据集复杂时效果不佳,可能是因为使用了单通道输入和未使用预训练模型。现在用户想了解安装、配置和代码实现的问题。 首先,我应该先整理安装步骤,因为引用[3]提到了使用conda创建虚拟环境并安装依赖。需要详细说明环境配置,包括Python版本、PyTorch和必要的库。然后,代码结构部分可能需要参考引用[2]提到的改进,比如使用预训练模型和多通道输入,所以需要解释模型结构的变化。数据准备部分需要指导用户如何组织数据集,特别是处理复杂数据时的注意事项,比如多通道图像。训练和测试步骤也要详细,可能包括命令行示例,让用户能够直接复制使用。常见问题解答部分,根据引用[2]中的问题,比如输出全黑的情况,需要给出解决方案,比如调整损失函数或使用预训练权重。 接下来,生成的相关问题应该围绕用户可能遇到的后续疑问,比如环境配置问题、多通道数据处理、预训练模型应用以及结果优化等。这样用户可以根据自己的需求进一步查找信息。 需要确保回答结构清晰,分步骤说明,并且引用正确的来源。同时,所有数学公式和代码块要符合LaTeX格式要求,行内公式用$...$,独立公式用$$...$$,代码块用三重引号包裹并注明语言。最后,检查是否符合中文回答的要求,以及是否自然地添加了引用标识。</think># 肆十二UNet使用教程与代码实现 ## 一、环境配置 1. 创建conda虚拟环境(Python3.8.5): ```bash conda create -n unetpp python==3.8.5 # 引用[3] conda activate unetpp ``` 2. 安装核心依赖库: ```bash pip install torch==1.9.0 torchvision==0.10.0 pip install opencv-python albumentations matplotlib ``` 3. 项目结构说明: ``` unet-project/ ├── data/ # 数据目录(需包含train/val/test子目录) ├── models/ # 改进后的UNet模型代码 ├── utils/ # 数据加载器、损失函数等工具类 ├── train.py # 训练脚本 └── predict.py # 预测脚本 ``` ## 二、代码实现改进要点 1. **多通道输入支持**(相比原UNet的改进): ```python class DoubleConv(nn.Module): def __init__(self, in_channels, out_channels): super().__init__() self.conv = nn.Sequential( nn.Conv2d(in_channels, out_channels, 3, padding=1), nn.BatchNorm2d(out_channels), nn.ReLU(inplace=True), nn.Conv2d(out_channels, out_channels, 3, padding=1), nn.BatchNorm2d(out_channels), nn.ReLU(inplace=True) ) ``` 2. **预训练模型集成**(提升模型性能的关键): ```python from torchvision.models import resnet34 class UNetWithResNet(nn.Module): def __init__(self, n_classes=1): super().__init__() # 使用ResNet34预训练特征提取器 self.base_model = resnet34(pretrained=True) # 引用[2] self.decoder = ... # 自定义解码器结构 ``` ## 三、数据准备规范 1. 数据集目录结构(以医学图像为例): ``` data/ ├── train/ │ ├── images/ # 原始CT/MRI图像(支持.png/.jpg) │ └── masks/ # 对应的标注图像 ├── val/ └── test/ ``` 2. 数据增强配置示例: ```python import albumentations as A train_transform = A.Compose([ A.RandomRotate90(p=0.5), A.GaussNoise(p=0.2), A.RandomBrightnessContrast(p=0.3), A.Resize(256, 256) ]) ``` ## 四、训练与预测 1. 启动训练命令: ```bash python train.py --epochs 100 --batch-size 16 --lr 1e-4 --pretrain ``` 2. 预测脚本使用示例: ```python from predict import Segmentor segmentor = Segmentor("best_model.pth") result_mask = segmentor.predict("patient_001.png") ``` ## 五、常见问题解决 1. **输出全黑问题**:建议检查以下配置项: - 损失函数调整为DiceLoss + BCE组合损失 - 确认输入图像归一化处理(建议使用医学图像专用归一化方法) - 尝试加载预训练权重(使用--pretrain参数)[^2] 2. **显存不足处理**: ```python # 修改train.py中的配置 train_cfg = { 'batch_size': 8, # 减小batch size 'accumulation_steps':2 # 梯度累积 } ```
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

肆十二

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值