首页/新闻资讯/正文详情

Atlas 300V实录:YOLO目标检测迁移国产加速卡全流程

发布时间:2026/9/25 7:38:14 来源:云帆数科 栏目:资讯中心
Atlas 300V实录:YOLO目标检测迁移国产加速卡全流程
搞了大半年NVIDIA系突然接到一个硬性要求目标检测服务必须迁移到国产加速卡上具体型号是Atlas 300V 24G。第一反应是谁把这玩意儿塞进我项目里的第二反应是赶紧查规格。结果越查越发现这卡和我想象中的加速卡根本不是一回事等真正把YOLO模型在它上面跑出稳定帧率中间踩过的坑比过去一年加起来还多。这篇文章就把整个过程从头讲一遍。内容包括Atlas 300V 24G到底算什么类型的运算加速卡它和常见GPU有什么边界差异从裸机到跑通一堆命令行的软件环境搭建PyTorch模型转成OM模型的完整链路ACL推理代码怎么写以及最后性能调优和疯狂踩坑的排错记录。想直接抄作业的人按章节走就能复现不用再被各种碎片教程折磨。1. Atlas 300V到底是张什么卡先把这个概念的坑填平1.1 它和游戏显卡、NVIDIA推理卡的本质区别很多人第一次听到Atlas 300V 24G下意识会觉得它就是一张国产显卡然后开始拿它和消费级游戏卡、NVIDIA数据中心的推理卡直接对比。我在内部群里就看到过有人问24G显存比笔记本显卡还小能跑什么这种思路从一开始就跑偏了。Atlas 300V系列是昇腾推理卡核心定位是专用推理加速。它本质上不是给训练设计的也不是用来渲染画面的而是把已经训练好的模型以尽量低的延迟、尽量高的吞吐跑起来。卡上有一颗Ascend 310P系列AI处理器整卡面向视频分析、图像分类、目标检测、OCR这一类场景。最直接的体现就是功耗非常低典型场景整卡功耗也就70W上下比一张训练卡动不动300W起步的规格温和太多。它和GPU最大的差异在架构上。GPU是一堆通用计算单元既能做训练也能做推理生态成熟CUDA/OpenCL想怎么调就怎么调。Atlas 300V这颗芯片则把大量逻辑固化在专用的AI Core里更接近异构计算单元的专款专用。好处是单位功耗的推理性能非常猛坏处是环境配置和模型适配的门槛明显更高很多东西不能像CUDA那样无脑复制粘贴。拿它和NVIDIA T4类比会更直观T4是16GB显存、70W功耗主打推理Atlas 300V Pro的24GB内存容量更大适合跑BATCH大一点的目标检测任务。二者从设计哲学到软件栈几乎完全不同但放在同一个机柜里时干的事情确实高度重叠——都是给模型推理服务。小总结一下维度游戏显卡NVIDIA T4等推理卡Atlas 300V 24G核心目的图像渲染/游戏模型推理模型推理典型功耗200-450W70W左右70W左右内存GDDR显存GDDR6显存DDR4内存软件生态CUDACUDA/TRTCANN/AscendCL强度场景图形计算数据中心推理视频分析/目标检测1.2 24G显存其实是DDR但做推理绰绰有余这里有个很多人包括当初的我都会搞混的技术点Atlas 300V Pro上面的24G不是显存是DDR4内存。虽然叫法上大家经常说24G大显存但物理机制和GPU的GDDR显存不同。那问题来了推理场景下DDR4够用吗真实结果完全够。原因在于推理任务里最吃显存的东西其实是模型权重、中间特征图以及一个批次里的输入输出数据。YOLOv5s模型规模差不多15MB到35MB就算把输入BATCH撑到8路整体内存占用也就几个GB级别24G空间根本用不满。更关键的是推理卡对内存带宽的要求没有训练那么苛刻DDR4虽然带宽不如GDDR但配合AI Core足够的算力做视频流目标检测的吞吐量照样能打。我实测一版YOLOv5s模型单卡同时跑8路1080p视频流做检测内存占用不超过6GB。真正让内存飙高的不是模型反而是后处理、多路解码缓存这类日常业务逻辑。所以不要被才24G劝退关键看你是否把内存用在了刀刃上。1.3 什么样的项目适合选这张卡从成本、功耗、交付场景综合来看Atlas 300V 24G最合适的地方是边缘服务器和盒子整卡功耗低不需要改造机房散热很多弱电柜直接插就完事。视频流目标检测YOLO、OpenPose、OCR系列模型在昇腾上的适配成熟度已经很高。国产化要求高的政企/园区项目这是硬性需求驱动的市场没有太多可选项但至少把性能底线守住了。批量离线推理跑图片集、视频文件扫描用大BATCH吞吐很划算。反过来如果是大模型训练、超长序列模型调优、或者特别依赖TensorRT精确数值对齐的场景那还是老老实实用训练卡没必要跟Atlas 300V较劲。工具是拿来解决具体问题的选型选错了后面全是泪。2. 从拆箱到npu-smi info能跑通一晚搞定的真实路径2.1 硬件安装的第一必修课供电和PCIeAtlas 300V是PCIe卡标准x16物理接口。服务器里插slot之前先看PCIe供电能力。这块卡和显卡类似有辅助供电。插上去之后建议先用lspci | grep -i process确认系统有没有发现设备。如果找不到硬件不要急着装驱动先查物理槽位供电和是否插到底。我最初踩过一个低级坑服务器是上一代平台PCIe槽位本身正常但BIOS里那个slot的PCIe模式被设成Gen2结果驱动装完后npu-smi读到的带宽掉了一半。改回Gen3再配合驱动重置带宽才恢复正常。卖个关子性能章节再细聊。2.2 驱动固件与CANN工具链的安装顺序Atlas环境安装顺序有严格讲究先装驱动再装固件最后装CANN工具包。顺序错了很容易出现驱动loaded但NPU不识别的情况。我使用的基础信息如下版本号以官方发布为准不同版本命令参数略有差异下载驱动包、固件包、CANN Toolkit包。检查系统内核、gcc版本不满足要求先补依赖uname -a gcc --version以root身份安装驱动chmod x Ascend-hdk-*.run ./Ascend-hdk-*.run --full--full会一次性安装驱动、固件和工具链如果分开装顺序依然是驱动在前固件在后。安装CANN Toolkit./Ascend-cann-toolkit_7.0.RC1_linux-x86_64.run --install安装过程会在/usr/local/Ascend下生成一堆目录。装完记得source环境变量。source /usr/local/Ascend/ascend-toolkit/set_env.sh安装完工具链之后最后校验工具npu-smi info能看到卡的温度、频率、芯片型号、算力利用率就说明硬件和软件已经正常握手。2.3 第一次用npu-smi info验证是否烧好我觉得npu-smi相当于是Atlas卡上的任务管理器类比一下这个角色会更好想象。比如我第一次执行的时候输出类似的表格------------------------------------------------------------------------------------------- | npu-smi info Version: 7.0.0 | ----------------------------------------------------------------------------------------- | NPU Name ... | HBM-Usage | AICore | Temperature | | 0 300V ... | 0% | 0% | 32C | -----------------------------------------------------------------------------------------看到NPU状态是healthy的温度才32度基本可以断定这卡不是渲染卡的脾气散热压力小得很。这一步全部绿灯之后后续所有ATC和推理报错至少可以先排除环境问题。2.4 安装环境最容易踩的三个坑第一版本匹配。驱动版本、固件版本、Toolkit版本三者必须严格对应。官方在下载页提供了配套版本表建议直接按表中的组合下载别混搭。我曾在Toolkit升级后忘升固件导致ATC转换阶段报op type not support查了大半天多线程的一定是版本不对升级固件后问题立刻消失。第二环境变量污染。如果服务器上同时装了多个版本的CANNset_env.sh顺序很重要。不同版本的头文件和库混用编译ACL程序时会看到各种奇奇怪怪的undefined reference。我后来直接把非当前版本从/usr/local/Ascend下做软链接隔离才彻底消停。第三python版本与CANN的匹配。CANN自带的python接口需要对应Python 3.7-3.11的特定编译版本用系统自带python跑样例代码时经常出导入错误。建议为昇腾环境专门创建一个conda环境python版本按Toolkit支持列表来不要用默认的老python。3. 模型转换整个项目里翻车率最高的环节3.1 从PyTorch导出ONNX时的几个关键开关Atlas推理不能直接加载PyTorch的pth权重也不能直接跑原始torch模型。昇腾的后端支持的格式是OM而OM通常通过ONNX转换得到框架直转也有但ONNX这条路最通用坑也最少。我的模型是基于YOLOv5的导ONNX时用到了几个关键参数import torch from models.experimental import attempt_load model attempt_load(yolov5s.pt, map_locationcpu) model.eval() dummy_input torch.zeros(1, 3, 640, 640) torch.onnx.export( model, dummy_input, yolov5s.onnx, opset_version11, input_names[images], output_names[output], dynamic_axesNone )几个容易出问题的地方opset版本我用的11兼容性和ATC支持度最稳。有些高版本的ONNX算子比如GridSample、一些变形算子在ATC里的支持列表很靠后能不用就不用。dynamic_axes能不用就不用。固定batch为1、固定输入尺寸推理性能也能保持稳定。输出节点如果Pytorch模型里带了NMS后处理导出来的ONNX会包含一个巨大的非规则计算图ATC转换成功率会直线下降。正确做法是只导出模型的原生输出后处理放到ACL侧自己写。模型必须eval模式忘了切这个mode养出来的模型导出后算子行为不一样实测像素级精度对不上。3.2 ATC命令实战从ONNX到OM拿到ONNX之后用ATC工具做转换。我常用的命令如下atc --modelyolov5s.onnx \ --framework5 \ --outputyolov5s_aipp \ --input_shapeimages:1,3,640,640 \ --input_formatNCHW \ --soc_versionAscend310P3 \ --insert_op_confaipp_yolo.cfg \ --output_typeFP32参数里几个重点解释一下--framework5固定代表ONNX。--soc_version决定了生成的OM针对哪颗芯片优化填错了转换倒是能过但跑起来调度器匹配不上性能惨不忍睹。Atlas 300V系列用310P家族具体型号用--soc_version查一下对照表填我这里实际是Ascend310P3。--insert_op_conf是AIPP配置文件作用是把输入图预处理塞进模型第一层跑推理时前处理不再消耗额外CPU。3.3 AIPP配置文件详解AIPP是Atlas提高图像推理速度的重要利器能帮你在芯片侧完成resize、归一化、颜色通道转换等预处理。我的YOLO模型用的是RGB输入归一化参数是1/255所以AIPP配置大概长这样aipp_op { aipp_mode: static input_format: RGB888_U8 src_image_size_w: 640 src_image_size_h: 640 crop: 1 load_start_pos_h: 0 load_start_pos_w: 0 crop_size_w: 640 crop_size_h: 640 csc_switch: 0 rbuv_swap_switch: 1 min_chn_0: 0 min_chn_1: 0 min_chn_2: 0 var_reci_chn_0: 0.003921569 var_reci_chn_1: 0.003921569 var_reci_chn_2: 0.003921569 }这里的逻辑就是输入是RGB888的U8图片芯片先做裁剪再做swap保证RGB顺序最后用1/255做归一化。需要特别注意的是如果模型训练时用的是BGR或者mean/std方式这里对应的参数要跟着改不能照抄。3.4 算子不支持时的排查思路模型转换报错时最常见的ERROR长这样E10001: Unsupported ops or constraints.这意味着ONNX图里某些算子在310P的AI Core上没法直接跑。我的排查顺序先看报错算子名。ATC错误信息里会明确列出来比如RecognizeBox、CropAndResize。这多半是因为ONNX里带了一些object detection特有结构。能不用就不用。把ONNX导出端改掉例如把模型内部的resize算子改成固定模式把grid_sample替换成纯卷积等价实现。用Pass拆解。有些算子可以拆成多个支持的基础算子组合ATC允许通过--op_attrop_name:attr_keyvalue或离线改图来指导。实在不行就放CPU。OM支持指定一些算子跑在CPU上虽然性能打折但至少能通。命令里加--out_nodes或对应的自定义算子列表。转换成功后会生成yolov5s_aipp.om这个文件就是后面的推理核心资产。建议保留好转换用的yaml、cfg、onnx后续复现调优随时用。4. 写推理代码ACL的全流程和YOLO后处理4.1 初始化、加载模型、输入输出内存Atlas芯片的Python接口叫aclruntime底层是AscendCL。代码风格非常像C接口的Python绑定需要手动管理设备上下文和内存。初始化流程import acl # 初始化 acl.init() ret acl.rt.set_device(0) context, ret acl.rt.create_context(0) # 加载模型 model_id, ret acl.mdl.load_from_file(yolov5s_aipp.om)AIPP转换过的OM输入是经过预处理的图片代码里不再做标准化直接把原始图片字节喂进去。接着获取输入输出信息desc acl.mdl.create_desc() acl.mdl.get_desc(desc, model_id) input_size acl.mdl.get_input_size_by_index(desc, 0) output_size acl.mdl.get_output_size_by_index(desc, 0)需要特别说明的是ACL API里的create_desc是拿模型描述句柄而不是直接在Python里操作tensor。如果之前一直写PyTorch突然切到这来会很不适应但用过几次后就习惯了——所有内存都是手动管理明确每个字节去哪。4.2 输入输出buffer的使用与数据搬运输入内存必须通过ACL设备内存接口分配input_buffer, ret acl.rt.malloc(input_size, acl.const.MEM_MALLOC_NORMAL_ONLY) output_buffer, ret acl.rt.malloc(output_size, acl.const.MEM_MALLOC_NORMAL_ONLY)图片数据拷贝分两步先读入host内存再用acl.rt.memcpy搬到设备内存。import numpy as np from PIL import Image image Image.open(test.jpg).resize((640, 640)) image_np np.asarray(image).astype(np.uint8) # HWC # 拷贝到设备侧 acl.rt.memcpy(input_buffer, input_size, image_np.tobytes(), input_size, acl.const.MEMCPY_HOST_TO_DEVICE)这里有个默认前提ATC转换时如果没特别指定输入格式默认NCHWAIPP配置里固定为RGB888_U8后输入的排布方式要按配置来。我实际走的是HWC输入因为AIPP内部完成转换效率更好。推理动作本体只有一行ret acl.mdl.execute(model_id, [input_buffer], [output_buffer])如果是跑视频流这个execute通常放在一个线程循环里通过队列把待处理帧塞进去。Atlas支持多stream并行不过那是进阶话题后面调优再展开。4.3 YOLO的八倍下采样后处理OM输出的原始矢量就是模型head的原始预测通常会长这样1, 25200, 85的结构YOLOv5其中25200是三个scale层的anchor总数85是4个坐标 1个confidence 80个类别概率。输出buffer需要转成numpy数组output_np acl.util.numpy_from_buffer(output_buffer, output_size, np.dtype(float32), (1, 25200, 85))然后做decode这部分逻辑和ONNX里差不多取中心坐标、宽高xy output_np[..., 0:2] wh output_np[..., 2:4] obj_conf output_np[..., 4:5] cls_conf output_np[..., 5:]坐标换成xyxy格式。过滤低置信度框scores obj_conf * cls_conf mask scores 0.5最后做NMS去掉重叠框。为了性能这里我实际上在Python侧用numpy做了向量化避免for循环。在1080p图片上后处理总耗时能控制在几毫秒内。如果后续要上到几十路视频流建议把这段后处理写到C里或者用AOE优化Python的GIL会成为瓶颈。4.4 NMS别自己手搓但要懂原理目标检测的输出经常有大量重叠框。NMS就是对一个类别内按得分排序保留最大得分框删掉和它IoU过高的框循环往复。很多同学习惯直接调OpenCV的NMSBoxes在CUDA上跑习惯了。但在Atlas侧一切都要回归到轻量级实现numpy或者手写。我考虑到后续做性能优化自己写了一个简化版def nms(preds, iou_thres0.5): # preds: (n, 6) x1,y1,x2,y2,score,class_id order preds[:, 4].argsort()[::-1] keep [] while order.size 0: i order[0] keep.append(i) xx1 np.maximum(preds[i, 0], preds[order[1:], 0]) yy1 np.maximum(preds[i, 1], preds[order[1:], 1]) xx2 np.minimum(preds[i, 2], preds[order[1:], 2]) yy2 np.minimum(preds[i, 3], preds[order[1:], 3]) w np.maximum(0.0, xx2 - xx1) h np.maximum(0.0, yy2 - yy1) inter w * h iou inter / (area[i] area[order[1:]] - inter) inds np.where(iou iou_thres)[0] order order[inds 1] return preds[keep]这套逻辑不依赖任何外部库是纯numpy在Atlas上跑很顺手不引入OpenCV的额外负担。5. 实测数据、调优方向和排错记录5.1 第一次跑通的性能到底如何先放一个基准数据单batch输入640x640YOLOv5s模型不开启任何高级优化时端到端读图 推理 后处理单张延迟约30ms。其中ACL推理本身约15ms后处理10ms其余时间耗在读图、编码、调度上。这里有个现象让团队一度很沮丧15ms的推理延迟折算一下也有60多FPS但整体流程让并发一上来延迟立刻线性增加最后居然跑不满25FPS视频流。追踪半天才发现瓶颈根本不在NPU而在后处理numpy的线程调度和Python GIL上。于是调优分三步走把后处理从Python主线程挪到独立子进程用队列通信。推理线程和IO线程彻底分离不让图像解码阻塞ACL执行。用batch4做多帧batch推理把单次推理延迟摊薄到多帧上。做完之后整机单卡稳定跑到约120FPS的640x640输入大约能同时处理10路1080p视频流。5.2 多stream、AOE与更狠的优化如果还想进一步压榨还有几个方向多Stream并发ACL支持多个stream并行执行。一个stream可以理解成一条独立的命令队列多stream之间在AI Core上尽量并行适合多路视频流的场景。我在代码里开了4个stream每个stream绑定一路视频流整体吞吐又提了一截。AOE自动优化昇腾提供自动算子调优工具AOE跑一遍能对模型里的算子做最佳切分和调度搜索。我试过之后推理延迟从15ms降到11ms。代价是需要单独跑调优时间和一个可用的调优数据集不是开箱即时生效但投入产出比很高。AI Core绑核利用taskset或昇腾的npu_smi工具把进程绑定到和NPU就近的CPU核上减少跨NUMA访问。这一步在双卡服务器上尤其明显少则5%多则15%的吞吐提升。内存复用ACL里反复malloc又free会造成设备内存碎片。我的方案是启动时一次性分配好所有buffer池推理时直接复用避免频繁分配。这个优化让高并发下的延迟抖动明显变小。5.3 我遇到的8个常见问题及排查经验为了方便后来人把最常遇到的坑整理成表格现象根因解决方案npu-smi看不到卡驱动未装或固件版本不对重装驱动检查内核头文件ATC报Unsupported opsONNX算子太新或含NMS结构降低opset导出时不带NMSATC报内存不足模型BATCH过大减小BATCH或开启内存复用加载OM失败OM与当前芯片型号不匹配确认--soc_version参数推理结果全是零input memcpy没完成就执行检查memcpy返回值延迟偶发飙高后处理阻塞了推理线程分离线程/进程队列削峰CPU占用率100%但NPU利用率低数据搬运和D2H拷贝成为瓶颈使用AIPP在芯片侧完成预处理减少Host干预多卡利用率不平衡PCIe槽位带宽不一致插到Gen3 x16或使用多个NUMA节点5.4 别忽视的散热和功耗小细节Atlas 300V整卡功耗很低但服务器风道设计如果特别差连续高负载下NPU温度还是会超过75度。温度超过阈值后会触发降频帧率立刻掉下来。我的经验是机箱里尽量预留一个直吹风道或者在服务开始前用脚本监控npu-smi的温度超过70度就告警。推理服务稳定性永远比峰值性能更重要30度的余量不能丢。6. 一些我至今还在用的经验层面的感想Atlas 300V这块卡硬要对比的话不输给市面上主流同档推理卡但真正决定它的上限的是接入工程的能力。用习惯了CUDA全家桶的同学刚上手昇腾生态一定会有一段时间的转换期模型要转格式、环境要重新配、ACL没有tensorboard可视化、调试全靠print。这些不是产品缺陷而是生态差异带来的成本。就我个人经验来说有几个习惯对提效很有帮助每次模型转换成功后把onnx、om、cfg、对应的命令完整存档加一行注释写明模型来源和精度指标。调优阶段来回切模型没有记录等于返工。后处理和推理尽量分开能拆的线程都拆掉。Atlas芯片算力不是短板总线调度和Host侧逻辑才是。性能数据要用压测工具去跑不要拿单张图反复测试真实业务是持续加载的必须看长时间运行下的延迟分位数P99而不是平均帧率。我压测时用locust模拟视频流请求记录了P99从37ms到68ms的波动经排查是后处理子进程GIL导致的不稳定最终通过队列和独立进程解决。多和官方技术文档对照因为版本演进很快网上很多教程都过期了。遇到怪问题先升级到最新固件再谈其他。Atlas 300V不是万能的但在国产化推理这条路上它已经能让YOLO这类模型在生产环境里稳定落地。希望这篇实战记录能帮你少走几个我走过的弯路把更多精力放在业务本身。

相关推荐

昇腾Atlas 300V 24G推理卡实战:从模型转换到YOLO部署全解析
昇腾Atlas 300V 24G推理卡实战:从模型转换到YOLO部署全解析

如果你这两年一直在关注AI推理相关的硬件和部署方案,那“atlas”这个词一定不陌生。从数据中心的推理卡到边缘侧的智能小站,华为昇腾这个系列的曝光率越来越高。尤其是最近热搜里频繁出现的 atlas 300v 24g,很多人都在问:这块卡到… · 2026/9/25 7:38:14

AgnesCode实测:本地AI编程工作台如何落地生产环境
AgnesCode实测:本地AI编程工作台如何落地生产环境

1. 项目概述:这不是又一个“AI写代码”演示,而是真实开发流里的压力测试AgnesCode 这个名字最近在开发者圈子里冒得很快,尤其在中小团队和独立开发者中——不是因为它是某个大厂新推的闭源产品,而是因为它把“免费模型工作台”这个… · 2026/9/25 7:38:08

全连接网络实现喷码字符识别:预处理、训练与避坑全解析
全连接网络实现喷码字符识别:预处理、训练与避坑全解析

简介:面向机器学习与深度学习入门者,提供一套基于全连接神经网络的喷码字符分类识别完整方案。资源以牛奶盒生产日期这类喷码字符为典型对象,利用神经网络实现全自动训练与分类识别,适用于工业字符识别、图像分类等场景。压缩包共… · 2026/9/25 7:38:08

使用 AWS SDK for Java 2.x 操作 AWS HealthImaging:数据存储、DICOM 导入与影像集管理实战指南
使用 AWS SDK for Java 2.x 操作 AWS HealthImaging:数据存储、DICOM 导入与影像集管理实战指南

示例工程教程后端 【免费下载链接】aws-doc-sdk-examples Welcome to the AWS Code Examples Repository. This repo contains code examples used in the AWS documentation, AWS SDK Developer Guides, and more. For more information, see the Readme.md file below. 项目地… · 2026/9/25 8:02:32

django-debug-toolbar 示例工程全解:从一条 make 命令到异步 ASGI 服务的可复现调试环境
django-debug-toolbar 示例工程全解:从一条 make 命令到异步 ASGI 服务的可复现调试环境

后端开发工具调试器 【免费下载链接】django-debug-toolbar A configurable set of panels that display various debug information about the current request/response. 项目地址: https://gitcode.com/gh_mirrors/dj/django-debug-toolbar 点击查看 免费下载 d… · 2026/9/25 8:02:13

高效记忆训练:科学原理与多感官实践方法
高效记忆训练:科学原理与多感官实践方法

1. 记忆科学的基础原理人类大脑的记忆系统就像一座精密的图书馆,信息需要经过编码、存储和提取三个关键环节。海马体作为记忆的"中转站",负责将短期记忆转化为长期记忆。这个过程需要神经突触的可塑性变化,专业术语称为"长时程… · 2026/9/25 8:02:13

企业流程管理数字化转型:从流程建模到运营优化的落地指南
企业流程管理数字化转型:从流程建模到运营优化的落地指南

简介:一份关于企业流程管理的数字智慧方案PPT,共76页,面向企业管理者、流程优化人员及数字化转型相关从业者,系统讲解如何通过流程管理打破部门壁垒、提升组织效率。资源为1个pptx文件,压缩包约814KB。整套内容按七大模… · 2026/9/25 8:02:07

VulnTarget-B综合靶机渗透测试实战:从信息收集到提权全流程解析
VulnTarget-B综合靶机渗透测试实战:从信息收集到提权全流程解析

VulnTarget-B 是我搭在自己实验环境里的一台综合靶机,主要用来练手渗透测试全流程。最近又完整地把它打了一遍,从信息收集到内网提权、权限维持、痕迹清理都走了个遍,顺手把报告整理了出来。这篇文章就相当于把“进攻路径”从头讲一遍&#x… · 2026/9/25 8:02:07

楚慧杯初赛Writeup:从SQL注入绕过到隐写与RSA攻击的CTF实战
楚慧杯初赛Writeup:从SQL注入绕过到隐写与RSA攻击的CTF实战

第十届“楚慧杯”初赛考完那天晚上,我在群里看到好几个参赛队都在问同一道Web题,当时心里就有点数了——今年的初赛跟往年不一样,题目明显往实战对抗和数据安全方向倾斜了。趁着Flag的截图和解题脚本还没吃灰,我把整场参赛过程的思… · 2026/9/25 8:02:07

数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)
数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)

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

创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战
创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战

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

MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX
MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX

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

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码