新闻详情

新闻详情

首页 / 资讯中心 / 详情

Atlas 300V 24G推理卡部署YOLO:CANN、ATC与OM模型转换

发布时间:2026/9/25 16:30:56来源:尧图网络
Atlas 300V 24G推理卡部署YOLO:CANN、ATC与OM模型转换
最近不少人在问atlas 300v 24g 是运算加速卡吗atlas部署yolo靠谱吗我手上正好用这块卡跑过一段时间的YOLOv5和YOLOv8推理先说结论它是一块面向深度学习推理场景的AI加速卡不是传统意义上的显卡也不是拿来搞训练的卡用它部署YOLO不仅可行而且特别适合视频流分析、工业视觉、智慧交通这类批量推理的场景。如果你之前只用过CUDA那一套第一次接触Atlas可能会有点懵。因为它的软件栈不是“装个驱动就能用”而是要接受一整套自研的运行时和工具链CANN、ATC、OM模型、pyACL这些名词会一个个冒出来。这篇博文我就按自己踩过的坑把Atlas 300V 24G的定位、环境搭建、YOLO模型转换、推理部署、性能调优这条链路完整过一遍给准备选型或者正在被文档折磨的朋友一个能直接照着做的参考。1. 先搞清楚Atlas 300V 24G 到底是个什么卡1.1 它不是显卡是NPU推理加速卡很多人在搜索引擎里敲“atlas 300v 24g 是运算加速卡吗”本质上是因为它长得像一块显卡而且同名的东西还有点乱。Atlas这个系列里有做训练的Atlas 800训练服务器也有做推理的Atlas 300系列板卡用户常说的“300V”“300V Pro”就是针对推理场景的。我拿到的这块是Atlas 300V Pro 24GB核心是Ascend 310P芯片板上有24GB显存。它没有视频输出接口不能插显示器也不是用来跑通用图形渲染的。它的定位非常纯粹作为一块PCIe计算卡插到x86或者ARM服务器里给主机的AI推理任务提供专用算力。用一句话解释它和普通显卡的区别GPU是“能玩游戏也能做计算”而这块NPU卡是“只做AI推理而且把推理能省的电都省了”。你通过PCIe接口把数据传给它它在板卡上完成神经网络的计算再把结果返回给主机全程和图形输出没有关系。1.2 它能做什么不能做什么先画清边界省得选型选错。不能做的事不能当训练卡用。训练场景梯度计算复杂对通用可编程性要求高基本走Ascend 910、Atlas 800训练服务器这类产品。有人试图用300V跑PyTorch训练结果发现算子支持度、内存带宽都跟不上会非常痛苦。不能直接跑CUDA程序。nvcc写的代码、CUDA算子、PyTorch里默认的cuda设备统统不认。想迁移模型要么走工具链转模型要么用CANN提供的接口重写推理部分。不适合做通用并行计算。比如说用CUDA做物理模拟、基因分析这些自定义算法在NPU上会非常受限因为昇腾的强项是CNN、Transformer这类结构化神经网络计算。能做的事批量图片和视频流的推理比如YOLO目标检测这是最典型的场景。多模型同时加载、多路数据并发推理。24GB显存的好处非常直接可以把几个模型一次全塞进去也可以把一个模型塞进去之后把batch调到很大这是它对比低显存推理卡的最大优势。媒体解编码基本等于CPU里的JPEG解码器、视频解码器搬到卡上做也能释放不少主机CPU压力。1.3 和主流GPU推理卡的直观对比我自己实际用过NVIDIA T4也用过一小段时间的RTX 2080Ti改推理卡。和Atlas 300V Pro放在一起对比核心差异在这里维度Atlas 300V Pro 24GB普通GPU推理卡如T4计算核心Ascend 310P专为推理设计通用GPU核心兼顾图形和计算显存24GB大容量低功耗16GB最大支持到更大但功耗更高驱动与生态CANN自研文档需要习惯CUDA生态成熟资料非常多模型迁移成本需要转出OM模型有一定学习曲线PyTorch/TensorFlow基本原生支持典型功耗通常是几十瓦量级具体看型号规格几十到上百瓦取决于型号适合场景高密度推理、多路视频流、边缘服务器通用推理、动态shape较多、早期调试方便这不是说Atlas比GPU好或者差而是两条路线的选择。如果你手头模型全是PyTorch且希望怎么训练就怎么部署GPU天然顺手如果考虑单卡算力密度、整机功耗和成本Atlas这种专用推理卡在批量推理上的性价比优势就很明显。选型时别只看规格表拿一张卡跑通你的真实模型看吞吐和时延再下结论。2. 用Atlas跑YOLO技术路线与方案选型2.1 一张图理清整个部署链路如果你在搜索引擎里看到“atlas部署yolo”这个词说明已经遇到了和我当时一样的问题升级到AI推理卡发现跑YOLO不是把pt文件拷进去就行。完整的部署链路是这样的PyTorch/YOLOv5训练好的权重 → 导出ONNX模型 → 使用ATC工具转成OM格式 → 在CANN运行时里加载OM模型做推理 → Python/C处理前后端逻辑。为什么要多出ONNX和OM这两步因为NPU的指令集和GPU完全不同它不认识PyTorch的动态计算图也不直接加载ONNX。ATC会把ONNX里的算子和网络结构翻译成昇腾NPU能够高效执行的离线模型文件这个OM文件里还包括算子调度、内存规划、融合优化等编译产物。你可以把OM理解成“针对这块卡专门编译过的二进制模型包”。关键认知是ONNX只是中间桥梁OM才是最终在NPU上跑的产物。转换这一步做得好不好直接决定部署成不成功、性能高不高。2.2 三条路线怎么选自研、官方样例、MindIE我接触下来实际有这三条路可以走难度从低到高路线A官方samples里的YOLOv5样例昇腾社区提供CANN samples项目里面维护了一些现成模型样例。YOLOv5的样例通常包括模型转换步骤、AIPP配置、推理脚本。这条路最适合第一天拿到卡、只想验证“能不能跑”的人。我的建议是无论最后用什么方案第一次一定要先把官方样例跑通确认环境、驱动、CANN、板卡都没问题再去做自己的模型。路线B自己用pyACL/C ACL写推理用Python的pyACL或者C ACL接口自己加载OM模型自己管理输入输出内存自己写预处理和后处理。这条路最灵活也最容易踩坑因为要自己处理AIPP、内存对齐、数据格式转换这些细节。但它能让你真正理解CANN的运行机制后期做性能调优、接入生产系统最终还是要落到这条路上。路线CMindIE / MindX SDK这种上层推理框架这是昇腾面向服务化推理的框架底层帮你把模型加载、请求队列、动态batch、前后处理流水线都封装起来。适合多路视频流、高并发服务的生产场景不需要反复造轮子。缺点是排障时会比较黑盒一旦遇到框架里没覆盖的算子处理起来会很痛苦。我的建议入门用A理解用B生产用C。千万不要一上来就自己写一套更不要一上来就扑到框架里先摸清每一步的原理再往上走。2.3 为什么推荐把NMS后处理放在NPU外面这是YOLO部署里最容易踩坑的地方之一。YOLO模型的原始输出是大量候选框这些框需要通过置信度过滤、非极大值抑制NMS来合并成最终结果。问题在于NMS这种动态计算逻辑在NPU上支持得并不好算子层面也容易出兼容性问题。我最初尝试过把NMS直接放进ONNX模型里一起转OM结果转换报错或者推理结果异常排查了半天。后来养成的习惯是模型只导出到原始输出为止NMS放到主机CPU上用OpenCV、NumPy、或者C库来做。24GB显存看着很富余但NPU擅长的是矩阵运算这种规整计算把NMS留在外面反而能让整条链路更稳。后面第4部分我会具体说导出ONNX时怎么避开NMS。3. 环境搭建驱动、固件、CANN一次到位3.1 安装前先检查这几件事Atlas 300V 24G是一张PCIe卡但它的软件安装比显卡复杂不少折腾到最后发现是版本搭配问题的情况太多了。安装前先核对这几项系统版本官方手册一般支持CentOS、EulerOS、Ubuntu几个生态。我自己在Ubuntu 20.04和22.04上都装过明显感觉20.04更顺。用不常见的系统版本很容易遇到驱动编译失败或者兼容性问题尽量选官方文档明确列出的版本。架构识别Atlas卡支持x86服务器也支持ARM架构的服务器比如鲲鹏机器。下载驱动、固件、CANN包时一定要区分x86_64还是aarch64选错了装一半就会报错。BIOS参数部分服务器需要确保PCIe相关选项正确尤其是大页和IOMMU相关配置。具体按主板手册来装完卡之后如果npu-smi看不到设备第一反应应该看BIOS有没有正确识别这张PCIe卡。权限和用户安装时可以用root但跑推理任务最好准备一个普通用户对/usr/local/Ascend目录授予读写权限。我遇到过普通用户装不上、root装完普通用户跑不起来的问题后来统一设置环境变量和目录权限才解决。依赖库CANN Toolkit安装时依赖一些基础软件包像gcc、g、make、cmake、python3-dev、zlib1g-dev等。建议先在系统里装好避免安装到一半提示缺这个缺那个。3.2 驱动、固件、CANN的安装顺序记住一个原则先驱动、后固件、再CANN Toolkit、最后CANN kernels。这个顺序不能乱乱了基本就得重装。从昇腾社区下载对应架构的驱动和固件安装包后执行# 以aarch64为例x86_64版本按自己实际下载的包名替换 chmod x Ascend-hdk-310p-npu-driver_23.0.rc2_linux-aarch64.run ./Ascend-hdk-310p-npu-driver_23.0.rc2_linux-aarch64.run --full --install chmod x Ascend-hdk-310p-npu-firmware_23.0.rc2_linux.run ./Ascend-hdk-310p-npu-firmware_23.0.rc2_linux.run --full之后安装CANN Toolkitchmod x Ascend-cann-toolkit_6.3.RC2_linux-aarch64.run ./Ascend-cann-toolkit_6.3.RC2_linux-aarch64.run --install安装完成后把环境变量加载脚本加入工作目录的bashrcsource /usr/local/Ascend/ascend-toolkit/set_env.sh这里的版本号是我实际用过的版本你下载时以官网当前版本为准。版本搭配非常关键驱动和CANN之间通常有配套关系官方文档里会列出兼容矩阵务必按照矩阵来不要混搭。3.3 安装完怎么确认环境没问题环境安装完成后第一件事就是输入npu-smi info看能不能正常输出卡的信息。npu-smi是昇腾卡的系统管理工具类似NVIDIA的nvidia-smi。如果输出里能看到Atlas 300V Pro、温度、功耗、显存占用说明驱动和固件基本没问题。如果提示找不到设备先确认驱动加载是否正常再排查PCIe枚举和BIOS设置。然后是测试CANN环境是否正常可以在Python里尝试import aclpython3 -c import acl; print(acl.__version__)这里常见的坑是环境变量没生效。每次打开新的终端都要记得source set_env.sh或者写进~/.bashrc否则import acl必然报错。另一种坑是Python版本不匹配有些CANN版本只保证在特定Python版本下正常工作建议跟着官方要求的版本来。到这步为止卡和软件栈已经通了可以把官方样例先跑一遍再进入自己的YOLO模型部署。4. YOLO模型转换实操从PyTorch权重到OM模型4.1 导出ONNX时的四个关键点我用YOLOv5举例YOLOv8基本同理导出命令类似python export.py --weights yolov5s.pt --include onnx --opset 11这个过程看着简单但有几个点很容易翻车。第一不要急着把NMS塞进模型。我在第2部分提过NPU对NMS这类动态逻辑支持不好。导出时如果带了NMS模块ATC转换阶段大概率会报算子不支持的错。建议先导出不带NMS的版本也就是模型的原始输出框的后处理放到宿主机的CPU上做。第二尽量不使用过于激进的ONNX简化。ONNX Simplifier能把模型里冗余节点删掉但有些情况下它会把一些算子重新组合成ATC不认识的形态导致转OM时卡住。如果你发现经过simplify的ONNX转不了就导出未简化的版本试试不少老版本的ATC对未简化ONNX的兼容性反而更好。第三ONNX里的输入shape尽量固定下来。Atlas 300V这类推理卡对动态shape支持很有限动态batch、动态分辨率有时候能过但性能和稳定性都会打折扣。生产环境直接固定成1x3x640x640或者根据你的业务固定成Nx3x640x640这样ATC转换和显存规划都更可控。第四搞清楚输入数据格式。YOLOv5官方推理默认是RGB输入模型内部的计算逻辑和归一化方式都基于这一点。后面做AIPP时如果搞错RGB和BGR检测结果会全乱这一点之后专门讲。4.2 ATC转换命令与参数拆解拿到ONNX后用ATC转OM。我常用的命令长这样atc --modelyolov5s.onnx \ --framework5 \ --outputyolov5s_bs1 \ --input_formatNCHW \ --input_shapeimages:1,3,640,640 \ --soc_versionAscend310P3 \ --insert_op_confaipp.cfg \ --precision_modeallow_fp32_to_fp16一行命令的背后每个参数都得明白含义。--framework5表示输入是ONNX框架编号是固定的别填错成MindSpore或者TensorFlow。--output是输出OM文件的路径前缀生成的yolov5s_bs1.om就是最后要加载的模型。--input_format和--input_shape定义了输入张量的布局。YOLOv5的输入是NCHW如果你的输入是其他模型比如Transformer系列可能需要改成ND或者其他格式。--soc_version要填目标芯片型号我这里用Ascend310P3就是对应310P系列300V Pro一般就是它。填错型号转换或者推理时会报错。--insert_op_conf是AIPP配置文件路径用来描述图像预处理参数。--precision_mode是精度策略。allow_fp32_to_fp16表示允许把FP32的算子自动转成FP16计算这样能获得更好的推理性能。前提是模型对精度不太敏感如果你的模型掉点明显换成强制FP32再试。转换成功后会出现类似“ATC run success”的提示同时目录下多了yolov5s_bs1.om。这个om文件就是NPU能直接加载执行的离线模型。4.3 用AIPP把图像预处理搬进NPU图像预处理是YOLO推理里很吃CPU资源的一环。resize、归一化这些操作如果用Python和OpenCV做每个输入都要在CPU上处理一遍batch一大CPU就满了。Atlas的AIPP机制可以把一部分预处理操作下沉到NPU上节省主机算力。我的aipp.cfg通常这样写aipp_op { aipp_mode: static input_format: RGB src_image_size_h: 640 src_image_size_w: 640 csc_switch: false rbuv_swap_switch: false mean_chn_0: 0 mean_chn_1: 0 mean_chn_2: 0 min_chn_0: 0.0 min_chn_1: 0.0 min_chn_2: 0.0 var_reci_chn_0: 0.003921569 var_reci_chn_1: 0.003921569 var_reci_chn_2: 0.003921569 }这些参数对应的就是YOLOv5训练时常用的做法把像素值先除以255归一化到0到1之间。var_reci_chn就是归一化系数的倒数1/255约等于0.003921569。mean_chn和min_chn这里都填0表示不做减均值操作。这里有两个特别容易踩的坑。第一个是输入格式YOLOv5模型通常按RGB顺序训练AIPP里input_format就要保持RGB同时确保送入的原始数据也是RGB。如果你送的是BGR或者AIPP里开了rbuv_swap_switch会导致颜色通道错乱模型输出一堆乱七八糟的框。第二个是letterbox问题。YOLOv5在预处理时会把原图等比缩放后补边成640x640这是letterbox操作。AIPP里的src_image_size是告诉你输入图已经被resize成640了letterbox逻辑还是建议在外部先做好AIPP里只做归一化这样逻辑最清晰也最好排查。如果你直接把原始1920x1080的图像送给NPU希望AIPP帮你自动缩放就需要用resize相关参数但这和无脑resize不同会破坏长宽比检测精度会下降不建议这么做。4.4 用pyACL跑通第一次推理OM拿到手后用Python调用pyACL跑一次推理。我没有把整个工程列出来因为完整代码体积比较大这里只把骨架和关键流程讲明白细节可以参照官方samples。import acl import numpy as np def infer_with_om(model_path, input_data): # 1. 初始化 ret acl.init() ret acl.rt.set_device(0) context, ret acl.rt.create_context(0) # 2. 加载模型 model_id, ret acl.mdl.load_from_file(model_path) # 3. 准备输入输出desc并申请内存 # 输入数据要先放到NPU能访问的内存一般用acl.rt.malloc # 输出张量也需要在推理前分配好 # 4. 执行推理 ret acl.mdl.execute(model_id, input_desc, output_desc) # 5. 解析输出 # YOLOv5输出一般是(1,25200,85) # 85 4个框坐标 1个目标置信度 80个类别 # 把这些数据拷回numpy后做置信度过滤和NMS # 6. 释放资源 acl.mdl.unload(model_id) acl.rt.destroy_context(context) acl.rt.reset_device(0) acl.finalize()pyACL的细节非常多比如数据格式、内存对齐、异步执行、Stream管理每一步都有讲究。第一次跑通别贪多先用同步方式、简单的输入确认整个链路通了再去做异步、多路、性能优化。YOLOv5的输出shape是我经常用来确认模型结构的方式。640x640输入输出是1x25200x85这25200就是80x80、40x40、20x20三个尺度的特征图加起来乘以3个锚框数量得到的。看到这个shape心里就有底了。5. 性能调优与多路部署经验5.1 用npu-smi实时盯住卡的负载跑推理任务时我习惯开一个终端持续监控卡的负载watch -n 1 npu-smi info输出里有几个关键指标温度、功耗、AICore利用率、显存占用。判断推理有没有真正跑起来就看AICore利用率和内存占用是不是规律波动。如果AICore一直很低说明瓶颈在别处要么数据搬运太慢要么前处理卡住了CPU要么batch太小。温度也是一个重要指标。Atlas卡是低功耗设计但长时间满载也会发热。如果装在机架式服务器里要注意散热风道。温度过高会触发降频推理时延和吞吐会明显恶化。5.2 提升吞吐量的三板斧第一板斧加大batch。把单张图片推理改成多张图片一起推理是提升吞吐最直接的办法。24GB显存跑YOLOv5s理论上能承受非常大的batch实际要观察显存占用和推理时延的平衡点。通常做法是逐步把batch从1加到4、8、16、32看AICore利用率是否还在涨如果涨不动了或者时延超标就到顶了。第二板斧把图片解码和缩放交给DVPP。DVPP是昇腾卡上的媒体处理硬件单元可以硬解码JPEG和视频流也能做resize、色域转换。最开始我的代码里用OpenCV的imread读图再用resize缩到640CPU占用非常高多路视频流时直接把CPU干满了。后来把图片解码和缩放都挪到DVPPCPU的压力立刻小了很多整体吞吐明显提升。第三板斧异步推理和多Stream流水线。pyACL同步推理的模型是“拷贝数据→执行→取结果”每张图都等上一张完成效率非常低。改成异步之后再叠加多个Stream让前处理、推理、后处理并行起来吞吐能再上一个台阶。这一步复杂度高适合在业务稳定之后再做但带来的收益也确实可观。5.3 常见性能瓶颈在哪里我实际调试时遇到过的瓶颈按出现频率排一下。CPU前处理瓶颈最常见大量resize、归一化、letterbox都在CPU上跑batch一大CPU就满载NPU却在空等。处理思路就是尽量把预处理下沉到AIPP和DVPP。数据搬运瓶颈是第二高频主机内存到NPU显存之间的拷贝是有代价的如果每张图都反复拷贝小数据块开销占比会很高。尽量一次拷贝整批数据减少次数。后处理瓶颈也容易出现YOLO的候选框很多如果后处理是Python里一层层循环写的25200个候选框跑起来会很慢。建议用NumPy向量化或者Cython去实现置信度过滤和NMS速度能提升好几个量级。6. 问题速查表与避坑手册6.1 我最常遇到的5个问题现象可能原因排查与解决方法npu-smi info看不到卡驱动没装好或PCIe枚举失败检查驱动安装日志确认BIOS里能识别到PCIe设备import acl报找不到so文件环境变量没sourcesource /usr/local/Ascend/ascend-toolkit/set_env.shATC转换报E10007等错误算子不支持或soc_version填错确认ONNX里算子类型换so c_version必要时换CANN版本转换成功但推理结果全错AIPP和模型训练前处理不一致重点检查RGB/BGR、mean/var、是否做letterbox显存占用极高或加载失败batch设置过大或模型碎显存碎片多调小batch重启进程让显存重新分配6.2 经验上的三个防坑习惯第一个习惯永远把CANN版本固定下来。CANN迭代很快不同版本对算子支持、ATC参数都有差异。同一个OM模型升级CANN之后最好重新转换一次不要复用旧OM。团队协作时大家统一用同一个版本能省掉大量“在我这能跑在你那不行”的问题。第二个习惯任何一次模型调整后第一时间检查输入输出的shape和预处理逻辑。YOLO模型改动输入尺寸、改了anchor、改了类别数都会影响输出解析代码。我自己就吃过亏改了类别数忘记改后处理导致检测框一直是乱的。第三个习惯生产环境优先用固定shape、固定batch。虽然Atlas支持一些动态shape场景但稳定性和性能都远不如静态shape。尤其是你的服务要7x24小时跑动态shape的隐性开销和不确定性会非常难受。最后分享一点个人体会折腾Atlas的这段时间我最大的感受是这套东西的门槛不在卡本身而在软件栈的思维转换。从CUDA的思路转过来一开始会很不适应觉得文档不如GPU生态好搜、样例也不够全但跑通之后再往回看它的推理密度和功耗表现确实很适合生产环境。如果你正准备入手建议不要一上来就研究高性能调优先老老实实把官方samples跑通再换自己的模型一步一步来。我踩过最大的坑就是在环境还没完全验证的情况下直接拿自己的YOLOv5模型去转结果分不清是环境问题还是模型问题排障排了整整两天。后来退回官方样例确认环境无问题再用自己的模型半小时就跑通了。最后再留个小技巧当你做完yolov5想切yolov8或者其他检测模型整个流程基本可以复用核心思路都是“固定输入shape → 导出ONNX → ATC转OM → 写后处理”。把YOLOv5这条链路吃透你就能应对绝大多数Atlas上的检测模型部署了。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

《Color constancy by characterization of illumination chromaticity》之白平衡增益计算 2026/9/25 17:08:01

《Color constancy by characterization of illumination chromaticity》之白平衡增益计算

整体流程: 利用网格块权重加权平均,得到原始实测照明色度估计; 将、灰度世界色度 向标定高似然边界做投影,得到约束版本; 统计整张网格的总有效权重 wsum; 根据 wsum 的阈值,自适应计算三路估计的权重系数

阅读更多 →
【方法篇11】装备效能评估实战:ADC 模型原理 + C/MATLAB 双语言实现(A·D·C) 2026/9/25 17:08:01

【方法篇11】装备效能评估实战:ADC 模型原理 + C/MATLAB 双语言实现(A·D·C)

目录 一、为什么要学 ADC 模型? 二、ADC模型流程 三、C 语言代码获取 四、MATLAB代码获取 五、什么时候用 C,什么时候用 MATLAB? 六、勘误及更新说明 一、为什么要学 ADC 模型? 在装备论证阶段,经常会被问到一句…

阅读更多 →
用 Markdown 文件把 Claude 变成岗位专家:Anthropic 开源 11 个知识工作插件,配 TaoToken 统一 Key 通道 2026/9/25 17:07:48

用 Markdown 文件把 Claude 变成岗位专家:Anthropic 开源 11 个知识工作插件,配 TaoToken 统一 Key 通道

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

阅读更多 →
2万行SwiftUI App,Claude Code写了95%!老开发者月花200美元,IDE真要变天了? 2026/9/25 17:07:35

2万行SwiftUI App,Claude Code写了95%!老开发者月花200美元,IDE真要变天了?

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

阅读更多 →
basic-computer-games 的 70_Poetry 全解析:从 1978 年 BASIC 俳句生成器到六种语言移植实现 2026/9/25 17:07:35

basic-computer-games 的 70_Poetry 全解析:从 1978 年 BASIC 俳句生成器到六种语言移植实现

示例工程 【免费下载链接】basic-computer-games An updated version of the classic "Basic Computer Games" book, with well-written examples in a variety of common MEMORY SAFE, SCRIPTING programming languages. See https://coding-horror.github.io/basic…

阅读更多 →
《Color constancy by characterization of illumination chromaticity》之色度色域最大化算法(二) 2026/9/25 17:07:35

《Color constancy by characterization of illumination chromaticity》之色度色域最大化算法(二)

色度色域的面积 详细计算 一句话概括:把白平衡 + 色彩转换后的整幅图像像素,投影到二维色度平面,度量其色彩散布范围有多大,这个度量值就是。 1、整条链路里做了什么 前面已经完成:对候选白点做了白平衡增益校正、再做了传感器 RGB→sRGB 色彩转换。现在手里是一堆转换后…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉