基于U2Net的Python证件照生成:人像分割与背景替换实战
简介基于 Python U2Net 深度学习的证件照生成完整项目面向具备图像处理基础或对深度学习分割感兴趣的开发者从模型原理到代码实现均有覆盖旨在通过 U2Net 对人像区域进行高精度分割再配合背景替换与尺寸调整自动生成标准证件照。资源包共 18 个文件整体仅 1.35MB主要包含 5 个 Python 脚本、6 张 PNG 示例图、预训练权重及 Markdown 说明文档脚本覆盖模型定义、训练、推理与预处理等环节结构清晰便于直接运行或二次开发。项目中预置了 ckpt/u2net.pth 权重和多张背景示例图可快速完成人像分割、换底色和证件照输出也能基于自有数据集重新训练U2Net 的嵌套 U 型跳跃连接设计能兼顾全局语义与细节信息在证件照生成场景下表现稳定。目前已有 352 人学习下载适合需要入门图像分割、完成自动证件照工具搭建的学生或研究开发者参考。1. 这个证件照生成项目核心不是补光不是磨皮是把“人”从背景里抠出来去照相馆拍证件照是一回事拿手机自拍回来自己换底色是另一回事——后者的痛点从来不在磨皮调光而在“抠人像”。背景一换头发丝边缘就带着一圈原图的颜色白底换蓝底时尤其明显边缘像狗啃过。这个基于 Python U2Net 深度学习的证件照生成项目解决的就是这个核心问题它先用 U2Net 图像分割模型把人像区域精确分割出来再把人像贴到蓝底、白底或红底上全程不需要手动抠图。U2Net 是图像分割领域公认的高精度模型结构上改进了 U-Net 的上下采样路径对“边缘细碎”的人像目标特别友好。适合谁想批量出证件照的小程序开发者、做图像服务后端的同学以及刚开始研究分割模型怎么落地的学习者。项目自带预训练权重、模型代码和推理引擎拿到就能跑跑起来就能出图。2. 项目解剖与技术选型压缩包里的每一层都有用处2.1 文件清单下载包里装了什么谁负责干什么解开压缩包后第一件事是先把文件分清楚。很多项目翻车不是因为代码有问题而是因为不知道哪个文件在什么时候被谁加载。文件 / 目录作用model.pyU2Net 模型定义包含 RSU 模块与完整网络结构u2net utils.py模型相关工具函数组织方式沿用了官方 U2Net 仓库的习惯utils.py项目自定义工具图像读取、预处理、后处理、色彩空间转换engine.py推理引擎封装把“加载模型—预测—合成”串成一条流水线main.py程序入口常见做法是拉起一个 FastAPI 服务也支持命令行调用ckpt/u2net.pth官方预训练权重整个项目跑起来的关键文件images/示例输入图与背景色参考图含 blue.png / white.png / red.pngcontent/完整包里用于存放模板或合成素材的目录二次开发时可忽略requirements.txtPython 依赖清单装了它环境就齐了Dockerfile容器化部署配置适合丢到服务器上用README.md项目说明LICENSE / .gitattributes开源协议与 Git 辅助配置一眼看下来这个项目的模块划分很清楚模型定义、工具函数、推理引擎、入口服务四层各管各的事。这种结构对二次开发非常友好——你想换模型改 model.py你想改预处理改 utils.py你想换服务框架只动 main.py其他文件基本不用碰。2.2 为什么挑 U2Net 而不是 U-Net 或传统抠图算法证件照生成这个任务难点有两个一是人像边缘要够准尤其是头发丝这种细碎区域二是推理速度要够快用户上传一张图不能等十秒。传统算法里的 GrabCut 属于半自动分割需要用户框选前景而且对复杂背景经常把衣服和背景搅在一起根本做不到全自动。普通 U-Net 虽然能端到端分割但它的感受野固定对“人物占画面比例差异很大”的情况适应能力偏弱。U2Net 的设计思路是嵌套 U 型结构用多个 RSUReSidual U-block模块组合出不同尺度的感受野。浅层 RSU 管细节深层 RSU 管全局语义最后把多尺度特征融合起来输出概率图。这套结构在显著性目标检测上被验证过人像分割属于它的舒适区。我在实际项目里试过用 U-Net 替换它边缘平滑度明显差一截尤其是换蓝底时头发丝容易断这就是为什么这个项目选择了 U2Net。2.3 一次证件照生成其实是一条五步流水线整个证件照生成的过程本质上是一条固定流水线输入图片 → 预处理 → 模型推理 → 概率图后处理 → 背景合成。预处理阶段把任意尺寸的图统一到 320x320这是 U2Net 官方模型的固定输入尺寸模型推理输出 7 个尺度的分割结果后处理阶段取第一个输出做 sigmoid 得到概率图把概率图上采样回原图尺寸最后用这个概率图把原图人物和背景色合成。注意一个容易被忽略的点项目里保存的最终结果不是“抠出来的人像”而是“合成好的证件照”。也就是说人像蒙版mask只是一个中间产物真正决定输出效果的是最后一步合成逻辑。很多人在二次开发时只改模型不改合成效果始终不对劲原因就在这——换背景的合成方式对边缘质量的影响比想象中大得多。3. 核心代码拆解model.py 和 engine.py 的实现细节3.1 model.py从 RSU 模块到完整分割网络U2Net 的主体结构可以拆成“编码器 解码器 显著性输出头”三部分。编码器负责逐步下采样提取语义特征解码器负责逐步上采样恢复分辨率中间用多个 RSU 模块串联。RSU 是 U2Net 里最核心的单元它内部自带一个小的 U-Net 结构。下面这段代码是 RSU7 模块的简化实现# model.py 中 RSU 模块的简化结构 import torch import torch.nn as nn class RSU7(nn.Module): # in_ch: 输入通道mid_ch: 内部卷积通道out_ch: 输出通道 # 7 指的是内部下采样层数 def __init__(self, in_ch3, mid_ch12, out_ch3): super().__init__() self.conv_in nn.Conv2d(in_ch, mid_ch, 3, padding1) self.down1 nn.Conv2d(mid_ch, mid_ch, 3, stride2, padding1) self.down2 nn.Conv2d(mid_ch, mid_ch, 3, stride2, padding1) self.down3 nn.Conv2d(mid_ch, mid_ch, 3, stride2, padding1) self.up3 nn.ConvTranspose2d(mid_ch, mid_ch, 3, stride2, padding1) self.up2 nn.ConvTranspose2d(mid_ch, mid_ch, 3, stride2, padding1) self.up1 nn.ConvTranspose2d(mid_ch, mid_ch, 3, stride2, padding1) self.conv_out nn.Conv2d(mid_ch, out_ch, 3, padding1) # 完整实现里每层后还有 BatchNorm 和 ReLU这里省略 def forward(self, x): x1 self.conv_in(x) d1 self.down1(x1) d2 self.down2(d1) d3 self.down3(d2) u3 self.up3(d3) u2 self.up2(u3 d2) # 跳跃连接上采样结果与同层下采样特征相加 u1 self.up1(u2 d1) return self.conv_out(u1 x1) # 残差连接回输入尺度这段代码的精华在于两个连接一个是“上采样结果 同层下采样特征”的跳跃连接让深层语义信息能传递回浅层另一个是最终的“残差连接回输入尺度”保证模块输入输出分辨率一致。RSU7 里的 7 代表最深层有 7 层卷积数值越大代表模块越深感受野越大。完整网络在 model.py 里用类似编码器—解码器的方式把多个 RSU 拼起来前面用 RSU7 抓全局语义中间用 RSU6、RSU5 逐步过渡后面再配合上采样恢复原图尺寸。模型最终输出 7 个尺度的结果其中一个融合输出 d1 就是我们要用的主分割结果。这种多尺度输出设计让 U2Net 在训练时能同时监督浅层和深层特征分割稳定性比单输出模型好很多。3.2 两个 utils.py为什么项目要拆两个工具文件第一次看目录的人大多会困惑为什么有 utils.py 还要一个 “u2net utils.py”这个不是重复。u2net utils.py 是跟随官方 U2Net 仓库一起发布的工具文件里面写的是模型路径、常量定义这类与官方权重强绑定的东西而 utils.py 是项目开发者自己写的负责图像读取、预处理、后处理这些业务逻辑。保留官方命名是为了方便和上游仓库同步更新也避免模型代码被业务代码污染。图像预处理里最容易翻车的一点是色彩空间。OpenCV 默认用 BGR 读图而 PyTorch 预训练模型期望的输入是 RGB不做转换直接喂进去分割效果会变得非常奇怪。下面这段预处理逻辑是项目中常见写法# utils.py 中图像读取与预处理的关键步骤 import cv2 import numpy as np def load_image(img_path, size320): img cv2.imread(img_path, cv2.IMREAD_COLOR) # OpenCV 读出来是 BGR模型期望 RGB必须转换 img cv2.cvtColor(img, cv2.COLOR_BGR2RGB) # U2Net 官方预训练模型固定输入 320x320 img cv2.resize(img, (size, size)) img img.astype(np.float32) / 255.0 # 从 HWC 转成 CHW并加一个 batch 维度 tensor np.transpose(img, (2, 0, 1))[np.newaxis, ...] return tensor注意这里有两个隐含约定第一size 参数默认 320跟 U2Net 的输入要求保持一致改成 224 或 512 都有可能让预训练权重表现异常第二像素值必须归一化到 [0, 1]因为训练时就是按这个范围做的。很多人直接拿 0-255 的整型图喂模型结果分割出来全是噪点就是这个原因。后处理部分则刚好相反要把模型输出的概率图从 320x320 恢复回原图尺寸再和原图合成。这里我一般不建议直接做硬二值化而是保留概率值参与合成具体原因后面避坑章节会展开。3.3 engine.py推理引擎的封装逻辑与输入输出engine.py 是整条流水线的总调度。它做的事情可以概括为四步加载模型、预处理图像、前向推理、合成输出。封装得好不好直接决定 main.py 里的代码有多干净。# engine.py 核心推理逻辑简化写法 def predict(self, image_bgr, bg_color(255, 255, 255)): # 1. 预处理转 RGB、缩放到 320、归一化 rgb cv2.cvtColor(image_bgr, cv2.COLOR_BGR2RGB) resized cv2.resize(rgb, (320, 320)) tensor torch.from_numpy(resized.transpose(2, 0, 1)).float() / 255.0 tensor tensor.unsqueeze(0).to(self.device) # 2. 前向推理模型返回 7 个输出取融合结果 d1 with torch.no_grad(): d1, *_ self.model(tensor) prob torch.sigmoid(d1) # 3. 概率图上采样回原图尺寸 mask cv2.resize(prob.squeeze().cpu().numpy(), (image_bgr.shape[1], image_bgr.shape[0])) # 4. 合成用概率值做透明度保留边缘过渡 mask3 np.stack([mask] * 3, axis-1) bg np.array(bg_color, dtypenp.float32) result image_bgr.astype(np.float32) * mask3 bg * (1 - mask3) return result.astype(np.uint8)推理引擎里的 device 参数很关键。如果模型加载在 GPU 上但输入 tensor 没调用 to(device)PyTorch 会把计算拉回 CPU速度慢得离谱。所以 engine.py 里必须把 model 和 tensor 都放到同一个设备上。合成阶段在 CPU 上做没关系因为图像尺寸不大矩阵运算开销可以忽略。main.py 获得的结果就是一张干净的证件照——背景是纯色人物边缘带有自然过渡。到这一步项目的主流程已经完整跑通了接下来看怎么把项目真正运行起来。4. 把项目跑起来本地环境与 Docker 两种方式4.1 环境准备依赖和权重文件先放对位置跑项目之前先确认两件事Python 环境版本和权重文件路径。这类深度学习项目建议直接用 conda 建一个独立环境避免把系统 Python 搞乱。requirements.txt 里通常会包含 torch、opencv-python、numpy、pillow 这几个基础依赖加上 fastapi 和 uvicorn如果 main.py 是 Web 服务方式。权重文件方面把下载包里自带的 ckpt/u2net.pth 放在项目根目录的 ckpt 文件夹下路径不要改动。u2net utils.py 里写死的模型路径一般就是相对路径你改了层级加载时就会报找不到文件。我之前帮人排查过一次对方把 ckpt 目录改名成 model结果加载 pth 时路径解析失败卡了半小时。4.2 本地运行三个命令从安装到出图本地跑的基本流程是先装依赖、再启动服务、最后调接口验证。假设 main.py 提供的是一个 FastAPI 服务那么命令长这样# 第一步安装依赖 pip install -r requirements.txt # 第二步启动 Web 服务默认监听 8000 端口 python main.py # 第三步另开一个终端上传图片生成证件照 curl -X POST http://127.0.0.1:8000/generate \ -F fileimages/skm.png \ -F bgblue \ -o output_blue.jpgcurl 命令里的两个参数注意区分file 是上传的图片文件bg 是背景色项目内置了 blue、white、red 三种。服务端拿到图片后经 engine.predict 处理会返回合成好的证件照。你也可以把 bg 改成 white 或 red 试试同一张照片换三种底色正好验证分割效果稳不稳定。如果在 Windows 上跑curl 可能不是系统自带命令换成浏览器访问 FastAPI 自带的 /docs 页面手动上传也行。FastAPI 会自动生成接口文档在浏览器里打开 http://127.0.0.1:8000/docs 就能看到接口调试页面这对新手特别友好。4.3 Docker 部署一条命令构建镜像项目里带了 Dockerfile意味着服务化部署非常简单。Docker 方式的好处是环境隔离不会因为 Python 版本或 CUDA 库冲突导致“在我机器上好好的到你那就跑不起来”。# 构建镜像 docker build -t u2net-idphoto . # 运行容器把 8000 端口映射出来 docker run -p 8000:8000 u2net-idphoto构建的时候注意一点Dockerfile 里如果写了从网上下载权重的步骤构建速度会很慢而且一旦网络不稳定就会失败。稳妥的做法是让 Dockerfile 把 ckpt/u2net.pth 直接 COPY 进镜像因为权重文件本来就随项目打包在 zip 里。如果你把镜像传到服务器上跑建议再用-v参数把 weights 目录挂载出来这样以后更新权重不用重新构建镜像。5. 避坑指南U2Net 证件照生成常见的五个坑5.1 输出人物一片黑背景正常现象换底色成功但人物区域变成了黑色背景反而是对的。原因mask 语义取反了。U2Net 的 sigmoid 输出越接近 1 的像素属于显著目标也就是人物但后处理代码里如果无意中用了1 - prob当人物蒙版人像区域就会被置 0。解决engine.py 里统一用prob torch.sigmoid(d1)合成时保持result image * mask bg * (1 - mask)不要画蛇添足地再去翻转一次。改完用项目自带的示例图跑一遍确认人物区域是原图颜色。5.2 加载权重报 size mismatch现象torch.load 加载 ckpt/u2net.pth 时报size mismatch for encoder.conv_in.weight通道数对不上。原因项目里有标准 U2Net 和轻量版 U2Netp 两种模型结构它们的通道数不同权重文件不能混用。下载包里给的是标准版权重如果你的 model.py 被改成了 U2Netp 结构就会报尺寸不匹配。解决先确认 model.py 里实例化的是哪个类再确认下载包里的 pth 文件是哪一版。最直接的办法是加载前打印权重文件的 key 和模型 state_dict 的 key 对比一遍shape 完全一致再 load。不要用strictFalse强行加载那样模型会带着随机初始化的权重继续跑输出全是噪点。5.3 上传 PNG 图片报通道数错误现象上传 jpg 正常上传 png 后预处理报错提示期望 3 通道但拿到 4 通道。原因PNG 图片自带 Alpha 透明通道cv2.imread如果用了IMREAD_UNCHANGED就会把 4 个通道都读进来模型卷积层只接受 3 通道输入。解决读取图像时强制用cv2.imread(path, cv2.IMREAD_COLOR)OpenCV 会自动丢弃 Alpha 通道。如果用的 Pillow打开后记得.convert(RGB)。这个坑在证件照场景特别容易踩因为很多手机自拍是 PNG 格式。5.4 有 GPU 但推理还是慢现象机器上装了独立显卡CUDA 也正常但处理一张图要两三秒体感跟纯 CPU 没差别。原因模型确实放到了 GPU但输入 tensor 忘了调用.to(device)。PyTorch 检测到输入在 CPU 上会把整个前向计算拉回 CPUGPU 白等了。解决检查代码里输入 tensor 有没有to(self.device)同时确认self.device是torch.device(cuda)而不是写死的字符串。验证方法是在推理代码里加一行print(tensor.device)看到cuda:0就对了。U2Net 在 GPU 上跑 320x320 输入一般几十毫秒CPU 上要两三秒差别非常明显。5.5 换蓝底时人物边缘有一圈白边现象换白底效果不错换蓝底后头发边缘残留一圈原背景的白色看着像没抠干净。原因后处理把概率图直接二值化成 0 或 1边缘像素本身是前景背景各占一半硬分给一边就会留下原背景的颜色。解决合成时用浮点概率值做透明度不要用(mask 0.5).astype(np.uint8)这种硬分割。engine.py 里提供的写法就是正确的混合方式前景和背景按概率加权融合边缘会有自然的半透明过渡。如果想要更干净可以在概率图上做一次轻微腐蚀把边缘往人物内侧收缩一两个像素。6. 二次开发方向把固定背景换成自定义背景把单张模式改成批量模式6.1 给 engine.py 加一个背景图参数项目默认只支持纯色背景但实际业务里常常需要自定义背景图比如渐变色、Logo 水印底纹甚至直接把证件照合成为红底加白边。改造方法很简单把 engine.py 合成阶段的后半部分从“纯色”改成“图片”。# 原逻辑result image * mask bg_color * (1 - mask) # 改造后背景图先缩放到原图尺寸再参与合成 bg_bgr cv2.imread(bg_path) bg_bgr cv2.resize(bg_bgr, (image_bgr.shape[1], image_bgr.shape[0])) result image_bgr.astype(np.float32) * mask3 bg_bgr.astype(np.float32) * (1 - mask3)改完后 predict 函数的签名从bg_color变成bg_pathmain.py 里对应的传参也要跟着改。这里最容易翻车的点我踩过一次背景图没有先缩放到原图尺寸就直接参与矩阵运算结果要么报广播错误要么背景被裁剪得乱七八糟。从那以后我每次写完合成逻辑都会强制加一行断言检查背景图尺寸和原图完全一致稳了很多。6.2 批量生成与尺寸规范化证件照还有个刚需是批量出图同一个人的照片生成蓝、白、红三种底色或者一个文件夹几百张照片统一处理。批量处理的循环结构很固定import glob import cv2 color_map {blue: (67, 142, 219), white: (255, 255, 255), red: (200, 30, 30)} for path in glob.glob(photos/*.jpg): img cv2.imread(path) for name, color in color_map.items(): result engine.predict(img, bg_colorcolor) output_path foutput/{path.split(/)[-1].replace(.jpg, f_{name}.jpg)} cv2.imwrite(output_path, result)这个循环里我建议给输出文件加上底色后缀不然三张图会互相覆盖。证件照尺寸规范方面一寸照常见规格是 295x413 像素二寸照是 413x579 像素输出前用cv2.resize统一缩放到目标尺寸即可。有一点经验之谈resize 操作放在背景合成之后做不要先把 mask 缩放到最终尺寸再和原图合成否则人物比例会失真。希望这些改造思路帮到你毕竟证件照生成这类工具最值钱的部分就是把分割和合成这条链路打磨顺。本文还有配套的精品资源点击获取

相关新闻

喘振与旋转失速怎么治?压缩机动态建模与主动控制解析

喘振与旋转失速怎么治?压缩机动态建模与主动控制解析

简介:《压缩机喘振与旋转失速:建模与控制》是一本面向压缩机设计、运行与控制方向的专业书籍,重点围绕轴流式和离心式压缩机中喘振与旋转失速的诱发机理、动态建模及控制策略展开,适合机械工程师、过程控制研究人员及工业自动化从…

2026/10/18 4:22:29 阅读更多 →
火星系品牌矩阵发布会策划复盘:从循环经济叙事到外宾接待全流程解析

火星系品牌矩阵发布会策划复盘:从循环经济叙事到外宾接待全流程解析

一个发布会能把"酿酒"和"循环经济"绑在一起,还能请到外方高级别嘉宾到场,本身已经赢了一半传播话题。火星贡酒、火星集市循环经济、火星盾这三个名字同时出现在一场活动里,乍看像科幻片混搭,实际上是一个典型…

2026/10/18 4:21:29 阅读更多 →
Flutter拖拽交互实战:Draggable与DragTarget从入门到排坑

Flutter拖拽交互实战:Draggable与DragTarget从入门到排坑

拖拽交互在App里并不稀奇,但Flutter里想写一个“把数据从一个区域拖到另一个区域”的功能,很多人第一次碰Draggable还是会踩坑。不是拖不起来,就是拖过去了目标区不认,再不然就是两个列表的数据对不上、界面不刷新。今天我拿一个很…

2026/10/18 4:21:29 阅读更多 →

最新新闻

Cursor+StageWise分阶段提示法:用主动提示词重做定价卡片

Cursor+StageWise分阶段提示法:用主动提示词重做定价卡片

1. 这套组合到底在折腾什么定价卡片这个东西,做过前端或者产品页的人都不陌生。三列布局、中间那列高亮、顶部挂个“推荐”角标、底下罗列功能清单、最下面放个行动按钮——这套模板在SaaS落地页、会员订阅页、工具类产品的付费墙里被用了几百万遍。问题是&#xff…

2026/10/18 5:17:39 阅读更多 →
Python第一次作业全攻略:从环境搭建到报错排查

Python第一次作业全攻略:从环境搭建到报错排查

1. 先想清楚:第一次作业到底在考什么我见过不少同学拿到“Python第一次作业”时,第一反应是慌。其实真没必要。第一次作业几乎不考算法,更不会让你写出什么高深的东西。它真正想验证的,是三件很基础的事:环境能不能跑起…

2026/10/18 5:17:39 阅读更多 →
K8s单节点集群扩容实战:二进制部署master2与nginx+keepalived高可用架构

K8s单节点集群扩容实战:二进制部署master2与nginx+keepalived高可用架构

先说场景吧。很多团队搞 Kubernetes 集群,第一步通常都是拿一台机器把单节点的集群先跑起来,组件全部用二进制装好、证书手动签好,验证业务没问题之后,才回过头来想生产环境和灾备的事:万一这台 master 挂了怎么办&…

2026/10/18 5:17:39 阅读更多 →
风光储氢系统协调控制与Simulink仿真建模实战

风光储氢系统协调控制与Simulink仿真建模实战

1. 这个模型到底在解决什么问题先说结论:这根本不是一套"能发电又能制氢"的演示品,而是一个面向新能源制氢场景的系统级协调控制方案。核心目标就一句话——让风光这种靠天吃饭的不稳定电力,喂给一个很挑食的PEM电解槽,…

2026/10/18 5:17:39 阅读更多 →
RenoDX 安装配置教程:从克隆仓库到出 addon 文件,4 步完成

RenoDX 安装配置教程:从克隆仓库到出 addon 文件,4 步完成

RenoDX 安装配置教程:从克隆仓库到出 addon 文件,4 步完成 【免费下载链接】renodx Renovation Engine for DirectX Games 项目地址: https://gitcode.com/GitHub_Trending/re/renodx RenoDX(Renovation Engine for DirectX Games&…

2026/10/18 5:17:39 阅读更多 →
推荐一本钱币银元鉴定最实用的书

推荐一本钱币银元鉴定最实用的书

家人们,在钱币收藏这个领域,大家是不是经常遇到各种头疼的问题?像新手入门时完全摸不着头脑,不知道从哪开始学起;经常看币的玩家也会碰到边齿鉴定、版别区分这些难题;藏家和资方投资银元时,又怕…

2026/10/18 5:16:39 阅读更多 →

日新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 0:55:02 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 14:23:36 阅读更多 →