unet-pytorch
unet-pytorch 是一个基于 PyTorch 框架实现的 U-Net 深度学习模型开源项目,专注于解决图像语义分割任务。U-Net 最初为生物医学图像设计,擅长在训练数据有限的情况下,通过提取浅层特征精准识别物体轮廓与细节,因此特别适用于医疗影像分析、细胞检测等场景,同时也能处理常规的目标分割任务。
该项目主要帮助开发者和研究人员快速搭建、训练及部署自己的分割模型。它解决了从零复现经典算法难度大、环境配置复杂的问题,提供了从数据预处理、模型训练到预测评估的完整流程代码。用户只需按照 VOC 格式整理数据集,即可轻松启动训练或加载预训练权重进行推理。
unet-pytorch 的技术亮点在于其高度的灵活性与实用性:支持 VGG、ResNet 等多种主干网络切换,适配 Adam、SGD 等优化器,并引入了学习率自适应调整及 Cosine 退火策略以提升收敛效果。此外,项目包含详尽的中文注释、视频教程链接以及针对医疗数据集的专用训练脚本,极大地降低了上手门槛。无论是需要验证算法的研究人员,还是希望将图像分割功能集成到应用中的工程师,都能利用此工具高效完成工作。
使用场景
某生物医学实验室的研究团队正致力于开发一套自动分析显微镜下细胞图像的辅助系统,以替代人工勾画细胞轮廓进行病理统计。
没有 unet-pytorch 时
- 算法复现门槛高:研究人员需从零编写 U-Net 复杂的编码器 - 解码器结构及跳跃连接逻辑,极易因代码错误导致模型无法收敛。
- 数据适配困难:缺乏针对医药数据集(特征少、依赖浅层细节)的专用预处理脚本和训练配置,通用目标检测模型效果极差。
- 训练流程繁琐:手动管理学习率衰减、优化器选择及权重保存机制,调试周期长达数周,严重拖慢科研进度。
- 评估标准缺失:缺少内置的 mIOU(平均交并比)评估模块,难以量化分割精度,无法客观对比不同实验结果。
使用 unet-pytorch 后
- 开箱即用的架构:直接调用已实现的 VGG 或 ResNet 主干网络,无需重复造轮子,半天内即可搭建起完整的训练环境。
- 医药场景深度优化:利用
train_medical.py专属脚本及预训练权重,快速适配细胞图像特征,显著提升了边缘分割的清晰度。 - 智能化训练配置:支持自适应学习率调整及多种优化器切换,一键启动训练,将模型迭代周期从数周缩短至数天。
- 可视化精准评估:内置 mIOU 计算与预测可视化功能,实时生成细胞掩膜图,让研究人员能直观验证并优化模型性能。
unet-pytorch 通过提供高度封装且针对生物医学优化的全流程解决方案,让科研人员能将精力从底层代码调试回归到核心的病理分析研究中。
运行环境要求
- 未说明
可选(代码中 cuda 参数默认为 True,但注释说明没有 GPU 可设置为 False),具体型号和显存大小未说明,CUDA 版本未说明
未说明

快速开始
Unet:U-Net:用于生物医学图像分割的卷积神经网络 目标检测模型在Pytorch中的实现
目录
- 仓库更新 Top News
- 相关仓库 Related code
- 性能情况 Performance
- 所需环境 Environment
- 文件下载 Download
- 训练步骤 How2train
- 预测步骤 How2predict
- 评估步骤 miou
- 参考资料 Reference
Top News
2022-03:进行了大幅度更新,支持step、cos学习率下降法,支持adam、sgd优化器选择,支持学习率根据batch_size自适应调整。
BiliBili视频中的原仓库地址为:https://github.com/bubbliiiing/unet-pytorch/tree/bilibili
2020-08:创建仓库,支持多backbone,支持数据miou评估,标注数据处理,大量注释等。
相关仓库
| 模型 | 路径 |
|---|---|
| Unet | https://github.com/bubbliiiing/unet-pytorch |
| PSPnet | https://github.com/bubbliiiing/pspnet-pytorch |
| deeplabv3+ | https://github.com/bubbliiiing/deeplabv3-plus-pytorch |
性能情况
unet并不适合VOC此类数据集,其更适合特征少,需要浅层特征的医药数据集之类的。
| 训练数据集 | 权值文件名称 | 测试数据集 | 输入图片大小 | mIOU |
|---|---|---|---|---|
| VOC12+SBD | unet_vgg_voc.pth | VOC-Val12 | 512x512 | 58.78 |
| VOC12+SBD | unet_resnet_voc.pth | VOC-Val12 | 512x512 | 67.53 |
所需环境
torch==1.2.0
torchvision==0.4.0
文件下载
训练所需的权值可在百度网盘中下载。
链接: https://pan.baidu.com/s/1A22fC5cPRb74gqrpq7O9-A
提取码: 6n2c
VOC拓展数据集的百度网盘如下:
链接: https://pan.baidu.com/s/1vkk3lMheUm6IjTXznlg7Ng
提取码: 44mk
训练步骤
一、训练voc数据集
1、将我提供的voc数据集放入VOCdevkit中(无需运行voc_annotation.py)。
2、运行train.py进行训练,默认参数已经对应voc数据集所需要的参数了。
二、训练自己的数据集
1、本文使用VOC格式进行训练。
2、训练前将标签文件放在VOCdevkit文件夹下的VOC2007文件夹下的SegmentationClass中。
3、训练前将图片文件放在VOCdevkit文件夹下的VOC2007文件夹下的JPEGImages中。
4、在训练前利用voc_annotation.py文件生成对应的txt。
5、注意修改train.py的num_classes为分类个数+1。
6、运行train.py即可开始训练。
三、训练医药数据集
1、下载VGG的预训练权重到model_data下面。
2、按照默认参数运行train_medical.py即可开始训练。
预测步骤
一、使用预训练权重
a、VOC预训练权重
- 下载完库后解压,如果想要利用voc训练好的权重进行预测,在百度网盘或者release下载权值,放入model_data,运行即可预测。
img/street.jpg
- 在predict.py里面进行设置可以进行fps测试和video视频检测。
b、医药预训练权重
- 下载完库后解压,如果想要利用医药数据集训练好的权重进行预测,在百度网盘或者release下载权值,放入model_data,修改unet.py中的model_path和num_classes;
_defaults = {
#-------------------------------------------------------------------#
# model_path指向logs文件夹下的权值文件
# 训练好后logs文件夹下存在多个权值文件,选择验证集损失较低的即可。
# 验证集损失较低不代表miou较高,仅代表该权值在验证集上泛化性能较好。
#-------------------------------------------------------------------#
"model_path" : 'model_data/unet_vgg_medical.pth',
#--------------------------------#
# 所需要区分的类的个数+1
#--------------------------------#
"num_classes" : 2,
#--------------------------------#
# 所使用的的主干网络:vgg、resnet50
#--------------------------------#
"backbone" : "vgg",
#--------------------------------#
# 输入图片的大小
#--------------------------------#
"input_shape" : [512, 512],
#--------------------------------#
# blend参数用于控制是否
# 让识别结果和原图混合
#--------------------------------#
"blend" : True,
#--------------------------------#
# 是否使用Cuda
# 没有GPU可以设置成False
#--------------------------------#
"cuda" : True,
}
- 运行即可预测。
img/cell.png
二、使用自己训练的权重
- 按照训练步骤训练。
- 在unet.py文件里面,在如下部分修改model_path、backbone和num_classes使其对应训练好的文件;model_path对应logs文件夹下面的权值文件。
_defaults = {
#-------------------------------------------------------------------#
# model_path指向logs文件夹下的权值文件
# 训练好后logs文件夹下存在多个权值文件,选择验证集损失较低的即可。
# 验证集损失较低不代表miou较高,仅代表该权值在验证集上泛化性能较好。
#-------------------------------------------------------------------#
"model_path" : 'model_data/unet_vgg_voc.pth',
#--------------------------------#
# 所需要区分的类的个数+1
#--------------------------------#
"num_classes" : 21,
#--------------------------------#
# 所使用的的主干网络:vgg、resnet50
#--------------------------------#
"backbone" : "vgg",
#--------------------------------#
# 输入图片的大小
#--------------------------------#
"input_shape" : [512, 512],
#--------------------------------#
# blend参数用于控制是否
# 让识别结果和原图混合
#--------------------------------#
"blend" : True,
#--------------------------------#
# 是否使用Cuda
# 没有GPU可以设置成False
#--------------------------------#
"cuda" : True,
}
- 运行predict.py,输入
img/street.jpg
- 在predict.py里面进行设置可以进行fps测试和video视频检测。
评估步骤
1、设置get_miou.py里面的num_classes为预测的类的数量加1。
2、设置get_miou.py里面的name_classes为需要去区分的类别。
3、运行get_miou.py即可获得miou大小。
Reference
https://github.com/ggyyzm/pytorch_segmentation
https://github.com/bonlime/keras-deeplab-v3-plus
版本历史
v3.02022/04/22v2.22022/03/04v1.02021/03/12常见问题
相似工具推荐
openclaw
OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
gemini-cli
gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。
LLMs-from-scratch
LLMs-from-scratch 是一个基于 PyTorch 的开源教育项目,旨在引导用户从零开始一步步构建一个类似 ChatGPT 的大型语言模型(LLM)。它不仅是同名技术著作的官方代码库,更提供了一套完整的实践方案,涵盖模型开发、预训练及微调的全过程。 该项目主要解决了大模型领域“黑盒化”的学习痛点。许多开发者虽能调用现成模型,却难以深入理解其内部架构与训练机制。通过亲手编写每一行核心代码,用户能够透彻掌握 Transformer 架构、注意力机制等关键原理,从而真正理解大模型是如何“思考”的。此外,项目还包含了加载大型预训练权重进行微调的代码,帮助用户将理论知识延伸至实际应用。 LLMs-from-scratch 特别适合希望深入底层原理的 AI 开发者、研究人员以及计算机专业的学生。对于不满足于仅使用 API,而是渴望探究模型构建细节的技术人员而言,这是极佳的学习资源。其独特的技术亮点在于“循序渐进”的教学设计:将复杂的系统工程拆解为清晰的步骤,配合详细的图表与示例,让构建一个虽小但功能完备的大模型变得触手可及。无论你是想夯实理论基础,还是为未来研发更大规模的模型做准备
Deep-Live-Cam
Deep-Live-Cam 是一款专注于实时换脸与视频生成的开源工具,用户仅需一张静态照片,即可通过“一键操作”实现摄像头画面的即时变脸或制作深度伪造视频。它有效解决了传统换脸技术流程繁琐、对硬件配置要求极高以及难以实时预览的痛点,让高质量的数字内容创作变得触手可及。 这款工具不仅适合开发者和技术研究人员探索算法边界,更因其极简的操作逻辑(仅需三步:选脸、选摄像头、启动),广泛适用于普通用户、内容创作者、设计师及直播主播。无论是为了动画角色定制、服装展示模特替换,还是制作趣味短视频和直播互动,Deep-Live-Cam 都能提供流畅的支持。 其核心技术亮点在于强大的实时处理能力,支持口型遮罩(Mouth Mask)以保留使用者原始的嘴部动作,确保表情自然精准;同时具备“人脸映射”功能,可同时对画面中的多个主体应用不同面孔。此外,项目内置了严格的内容安全过滤机制,自动拦截涉及裸露、暴力等不当素材,并倡导用户在获得授权及明确标注的前提下合规使用,体现了技术发展与伦理责任的平衡。