实验课上所使用的课件同步在学在浙大发布。
本次实验内容为课程作业,计算成绩。本次实验课内容分为两部分:
Lab6-学号-姓名.zip/7z
。请不要提交模型文件和数据集。
本次作业提交截止时间:2025年4月15日 23:59:59,逾期将要扣分。
本实验推荐使用 Linux / WSL 作为平台。
Python是一种高级的解释型编程语言。与 C++ 这种编译型语言相比, 解释型语言没有单独的编译器,而是通过解释器直接执行。而Python 代码在转换成字节码后,由Python虚拟机(PVM)解释执行。
Python非常适合灵活快速的开发,但它的运行速度通常比编译型语言慢。
Python的基础用法在课件中有介绍。
在 Download Now | Anaconda 下载安装脚本。在 linux 中,使用 wget 命令下载
wget https://repo.anaconda.com/archive/Anaconda3-2024.10-1-Linux-x86_64.sh
。
下载完成后,运行安装脚本 bash Anaconda3-2024.10-1-Linux-x86_64.sh
。按照提示完成安装,初始化可以选 yes,然后重启终端。
在终端中使用 conda 命令创建名为 torch_env 的虚拟环境 conda create –n torch_env python=3.10
。其中-n
指定环境名,python
指定环境的python版本。本实验在 python 3.10 下验证可运行。
在终端中使用 conda 命令 conda activate torch_env
激活环境。使用 which python
查看 python 位置,通常在你的环境下。
比如:/root/miniconda3/envs/torch_env/bin/python
。然后就可以使用 pip install
或 conda install
安装包。
PyTorch是目前主流的深度学习框架,其核心是基于张量(Tensor)的 计算系统。它的底层实现主要基于C++和CUDA,同时提供友好的 Python接口。PyTorch提供了丰富的生态系统,包括计算机视觉 (torchvision)和音频处理(torchaudio)等领域的专用工具包。
本实验要同时安装 torch 和 torchvision,即pip install torch=2.6.0
和pip install torchvision=0.21.
requirements.txt
文件,然后使用pip install -r requirements.txt
安装所有的包。
Pytorch的基础用法在课件中有介绍,在神经网络中,核心思路是在__init__
中定义operators,在forward
中使用operators进行计算。
Pytorch的常见神经网络层和激活包括:
对于复杂的使用,可以查询:Pytorch的官方文档。
U-net 是一个经典的语 义分割全卷积网络,最初应用于医疗图像的分割任务,其结构如下图所示。
观察可见 U-Net 具有一个对称结构,左边是一个典型的卷积神经网络,右边是一个对称的上采样网络。
本实验使用 Unet完成汽车图像划分的任务。该任务输入为一张 彩色rgb图像,输出为一个掩码矩阵,表示图片上每个像素是否属于汽车(0-1)。这个问题可以处理成逐像素的二分类问题。 本实验提供已在训练集上训练好的模型 model.pth。
在 U-Net 原论文中,左侧向下的结构被称为 Contracting Path,由通道数不断增加的卷积层和池化层组成。右侧向上的结构被称 为 Expanding Path,由通道数不断减少的卷积层和上采样层 (反卷积层)组成。而在中间部分,Expanding Path 中的每次上采样层都会将 Contracting Path 中对应的特征图与自身的特征图进行拼接,以保证 Expanding Path 中的 每一层都能够利用Contracting Path 中的信息。
本实验提供一个 Unet 的基础代码 unet.py,你需要完成代码中所有标记为
TODO
的部分,包括:
down_conv,mid_conv,up_conv,final_conv
的补全。注意输出通道为 1。center_crop
和torch.cat
实现特征图拼接功能。实验提供一个简单的 try.py 来检测模型加载是否成功。
在终端通过参数 –model
指定模型文件,例如:
python try.py --model model.pth
加载成功后,应得到 Model loaded
的期望输出。
在加载模型基础上,你需要自行实现一个 infer.py
,对单张汽车图片 test.jpg
的mask进行推断。主要步骤包括:
这个文件应能够满足在终端通过参数指定模型文件、输入图片、输出图片和阈值,具体要求如下:
python infer.py --model model.pth --input test.jpg --output output.jpg --threshold 0.5
你可能需要对输出做一些额外的画图处理,最终结构应如下:
在这里重新列出所有提供的模板代码:
这些代码和测试图片被打包在 code.zip 中。