1. 先回答“运算加速卡”这个问题Atlas 300V 24G的定位与价值1.1 一张专为AI推理设计的加速卡我第一次拿到Atlas 300V 24G时第一反应是拆开包装后确认它到底是不是一张标准PCIe显卡。单从外观来看它确实和普通GPU加速卡摆在同一个槽位里没太大区别但如果你打开官方规格书或者跑一遍npu-smi info看设备信息就会发现它和显卡走的是完全不同的技术路线。这里要把标题里那个问题先讲清楚Atlas 300V 24G是运算加速卡吗答案是“是”但更准确的说法是“AI推理加速卡”。它不是用来跑3D渲染、也不是一张通用计算卡而是一张专门为神经网络推理设计的加速卡。昇腾平台上常见的型号有310、310P、910等芯片Atlas 300V这类PCIe形态的推理卡用的就是昇腾310系列芯片目标场景是数据中心或边缘服务器里的AI推理任务。24G这个参数尤其关键。它意味着这张卡能装下比同价位GPU更大的模型或者在同一张卡上同时跑多路较小模型。对比目前主流的AI推理卡T4是16G显存部分边缘场景下用游戏卡改装的方案也就12G、24G但Atlas 300V 24G的优势在于功耗低、价格比同显存的数据中心卡便宜且专门做了推理侧的算子优化。对做YOLO目标检测部署的人来说24G显存足够把YOLOv5的s、m、l甚至x模型都放进去还能留出batch处理的余量。不过要提前打个预防针这卡不是插上就能用的。它依赖一整套昇腾软件栈包括驱动、固件、CANN工具链、推理运行时整套环境配下来比装CUDA要复杂一些。这也是很多人拿到卡之后第一周最容易卡住的地方。1.2 为什么选它做YOLO部署而不是NVIDIA显卡如果你所在的团队已经有成熟的CUDA部署栈那换到Atlas确实要付出迁移成本。但如果你面临两种情况Atlas 300V是非常值得考虑的方案。第一种是项目对单卡功耗和TCO敏感。数据中心机房对单槽位功耗有严格限制一张300W的GPU和一卡功耗不到它一半的Atlas 300V在长时间跑推理业务的场景下差异非常大。尤其是做视频结构化、安防监控、工业质检这类7x24小时在线推理的项目功耗直接决定单路视频流的边际成本。第二种是国产化或国产算力适配需求。不少项目明确要求整套系统使用国产芯片和国产软件栈这时候昇腾是绕不开的选择。Atlas 300V 24G属于昇腾生态里PCIe形态中比较成熟的推理卡在服务器里的部署方式和GPU类似不需要改装整机普通x86服务器插上就能用。从推理性能来看YOLO这类目标检测模型是最适合在昇腾上跑的场景之一。YOLO网络结构以卷积和拼接操作为主昇腾的AI Core对这类算子有专门优化转换到离线模型后推理效率相当不错。相比在同一张卡上去跑Transformer大模型YOLO这种“老牌CNN检测器”反而更容易获得理想的性能表现。所以“Atlas部署YOLO”这个组合在实操里出现频率非常高是有原因的。2. Atlas部署YOLO的完整链路与工具链选型2.1 部署链路从PyTorch到OM离线模型在GPU上部署YOLO最顺手的做法是PyTorch训练完直接导出TorchScript或者用TensorRT加速。在昇腾平台上流程要绕一个弯PyTorch训练好的权重不能直接扔给昇腾推理卡跑必须先把模型转换成一种叫做OMOffline Model的离线模型格式。为什么要多这一步因为昇腾的推理引擎ACLAscend Computing Language设计时采用了“编译执行”的思路。模型在运行前会经过ATCAscend Tensor Compiler工具做算子调度优化、内存规划、图优化编译成一个结构固定的离线文件。推理时ACL直接加载这个OM文件省去了动态构图、算子选择和内存分配的开销这对服务化推理场景特别重要。从PyTorch到OM的完整链路通常是这样的PyTorch模型 - ONNX文件 - ATC离线转换 - OM文件 - ACL推理接口 - 后处理这个链路里最常出问题的是ONNX导出和ATC转换这两步。PyTorch的动态结构导出成ONNX后有些算子表达和昇腾的算子库对不上比如某些版本的YOLOv5里用到的Focus层、SiLU激活、Bilinear上采样在ATC阶段可能会遇到不支持或者性能不佳的情况。应对思路有两种一种是在导出ONNX时用算子替换把不支持的层改写成等价的卷积、拼接组合另一种是升级CANN版本新版本对YOLO系列的支持力度一直在提升。2.2 CANN工具链哪些组件必须装哪些可以免很多人第一次接触Atlas部署时光看华为官方的软件包清单就懵了。其实核心就几个东西我按依赖关系给你捋一遍。第一层是驱动Driver和固件Firmware。驱动负责让操作系统识别设备装上后npu-smi info能看到卡的信息固件属于设备底层运行环境。这两样不装好后面全部白搭。第二层是CANN Toolkit。这是一个大的开发工具集合里面包含了ATC转换工具、推理运行时、算子开发框架、各种依赖库。如果需要在服务器上做模型转换Toolkit必须装。如果只是在一台已经配好环境的机器上跑推理可以只装NNRtNeural Network Runtime那个运行时子集体积更小、依赖更少。第三层是AI框架适配层。PyTorch框架本身不需要在昇腾服务器上跑因为模型转换只要在普通CPU环境里导出ONNX就行但推理时的Python接口acl库需要依赖CANN toolkit或者nnrt提供。如果你习惯用MindSpore那直接走MindSpore的昇腾后端会更顺滑但大多数YOLO项目显然是PyTorch训练出来的所以我这篇主要讲PyTorch ONNX ATC的路线。版本问题是大坑。昇腾的驱动、固件、CANN toolkit之间有严格的版本配套关系不匹配很容易出现ATC转换报错、ACL初始化失败之类的问题。我自己的做法是先去昇腾社区查“版本配套表”确定好一个组合后全部按照该组合安装比如CANN 6.0系列配套哪一版驱动哪一版固件严格对齐。不要踩完一个坑再升级另一个组件那样只会引入更多不确定因素。2.3 版本匹配为什么是最大坑我见过不少同行在部署时遇到这种报错[ERROR] FMK: 2019 E19999: Inner Error!这个E19999是一个非常经典的“伞形”错误所有内部错误可能都会归类到这里但90%的情况都是版本匹配问题。要么是驱动和固件版本不一致要么是CANN toolkit和芯片型号不匹配要么是ATC转换时指定的--soc_version和实际芯片型号对不上。还有更隐蔽的情况服务器上以前装过旧版CANN的残留环境变量新版本跑起来后引用了旧库导致莫名其妙的行为异常。遇到这类问题我的排查顺序是固定的先npu-smi info确认驱动识别正常再ls /usr/local/Ascend确认软件目录完整接着执行官方自带的环境检查脚本最后再看具体报错。很多时候问题不是出在卡上而是出在系统里残留了多套环境变量。3. 实操记录把YOLOv5部署到Atlas 300V 24G3.1 硬件检查与环境准备拿到Atlas 300V 24G之后我先检查服务器是否满足几个基础条件有没有空闲的PCIe x16插槽供电是否足够机箱散热能不能支撑长时间满载运行。这卡的功耗比游戏显卡低不少但服务器机箱里如果风道不好连续跑满负载后被动散热片也会烫手。上机之后先确认设备被识别npu-smi info如果输出正常你能看到类似下面这样的信息---------------------------------------------------------------------------- | npu-smi 23.0.rc1 Version: 23.0.rc1 | -------------------------------------------------------------------------- | NPU Name | Health | Power | HBM Memory | | 0 | OK | 35W | 24576 MB | --------------------------------------------------------------------------设备号、健康状态、功耗、显存都能看到说明驱动正确加载了。如果执行这个命令提示找不到设备优先检查ls /dev/davinci*是否存在设备节点再用dmesg | grep -i npu查看内核日志基本能定位到是PCIe枚举失败还是驱动加载失败。接着设置环境变量把这几个路径加进~/.bashrcexport ASCEND_TOOLKIT_HOME/usr/local/Ascend/ascend-toolkit/latest source /usr/local/Ascend/ascend-toolkit/set_env.sh export LD_LIBRARY_PATH$ASCEND_TOOLKIT_HOME/runtime/lib64:$ASCEND_TOOLKIT_HOME/atc/lib64:$LD_LIBRARY_PATH export PATH$ASCEND_TOOLKIT_HOME/atc/ccec_compiler/bin:$ASCEND_TOOLKIT_HOME/atc/bin:$PATH export PYTHONPATH$ASCEND_TOOLKIT_HOME/runtime/python/site-packages:$ASCEND_TOOLKIT_HOME/tools/akg/python:$PYTHONPATH不同版本CANN的路径稍有差异装完后先执行官方自带的set_env.sh再补充自定义路径是最稳妥的方式。3.2 PyTorch模型导出ONNX我这里以YOLOv5为例因为它的导出链路最成熟网上资料也多。训练好的yolov5s.pt先要在PyTorch环境里导出成ONNX命令大致是python export.py --weights yolov5s.pt --include onnx --opset 11 --batch-size 1导出时有一个关键参数要盯住--opset。昇腾ATC对ONNX算子版本有要求太低或太高都可能导致转换报错。以我常用的CANN 6.0为例opset 11是一个稳定区间其他版本可能需要调成12或13具体以对应版本兼容列表为准。导出后立刻用onnx.checker或者onnxruntime简单验证一下python -m onnxruntime.quantization.check_onnx_model yolov5s.onnx这一步很快但能筛掉很多低级错误。我遇到最多的情况是PyTorch版本太新导出的ONNX里带了新算子昇腾的ATC还不认识。这时候要么降PyTorch版本要么在导出后手动修改ONNX图把不支持的算子替换成等价组合。3.3 ATC转换生成离线OM模型环境没问题后进入核心环节用ATC工具把ONNX转换成OM。我实际使用的命令长这样atc --modelyolov5s.onnx \ --framework5 \ --outputyolov5s_bs1.om \ --soc_versionAscend310P3 \ --input_shapeimages:1,3,640,640 \ --input_formatNCHW \ --output_typeFP32 \ --insert_op_confaipp.cfg几个参数逐个说明一下--model输入ONNX文件路径。--framework5固定写法5代表ONNX。--output输出OM文件名。--soc_version芯片型号。Atlas 300V对应昇腾310P系列具体值建议用Ascend310P3试一下如果报错再根据提示调整。--input_shape固定输入尺寸。YOLOv5导出时默认输入是1,3,640,640这里的顺序是NCHW不能写错。--insert_op_confAIPP预处理配置文件。如果推理前不做额外的resize和归一化可以通过AIPP把图像预处理下沉到硬件。AIPP配置示例aipp.cfgaipp_op { aipp_mode: static input_format: RGB888_U8 src_image_size_w: 640 src_image_size_h: 640 crop: false mean_chn_0: 0 mean_chn_1: 0 mean_chn_2: 0 var_reci_chn_0: 0.003921569 var_reci_chn_1: 0.003921569 var_reci_chn_2: 0.003921569 }这里var_reci_chn对应的是1/255也就是把图像像素从0-255归一化到0-1。YOLOv5推理前通常还会做letterbox缩放如果你不想在主机侧写那段resize逻辑可以把AIPP的src_image_size_w/h设成letterbox后的尺寸或者干脆保留cropfalse在主机侧统一处理好再喂给模型。转换成功后你会得到一个yolov5s_bs1.om文件大小通常比ONNX略小或者相近。如果转换过程出现算子不支持日志里会明确指出是哪个算子处理方法是回PyTorch侧修改导出方式或者用ATC支持的原语替换。注意--soc_version填错是最多见的坑。填成Ascend310会导致部分算子找不到填成Ascend910则可能在加载模型时直接报设备不匹配。先确认清楚你手里卡的具体型号再填对应的值。3.4 Python ACL推理Demo拿到OM文件后要用ACL接口写推理代码。CANN的Python接口叫acl装好CANN后通常在Python site-packages里能找到。下面这个demo是精简化骨架核心流程是初始化、加载模型、准备输入输出、执行推理、释放资源。import acl import numpy as np import cv2 def init_device(device_id0): acl.init() ret acl.rt.set_device(device_id) if ret ! 0: raise RuntimeError(fset_device failed, ret{ret}) def load_model(model_path): model_id, ret acl.mdl.load_from_file(model_path) if ret ! 0: raise RuntimeError(fload model failed, ret{ret}) return model_id def prepare_input(model_id, image): # 获取模型输入输出的描述信息 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) # 分配device内存 input_ptr, ret acl.rt.malloc(input_size, 2) output_ptr, ret acl.rt.malloc(output_size, 2) # 图片预处理这里假设已经把图resize到640x640并转成float32的numpy数组 image_data image.astype(np.float32) / 255.0 image_data np.ascontiguousarray(image_data) acl.rt.memcpy(input_ptr, input_size, image_data.tobytes(), input_size, 1) # 1表示host-device return input_ptr, output_ptr, output_size def inference(model_id, input_ptr, output_ptr, output_size): ret acl.mdl.execute(model_id, input_ptr, output_ptr) if ret ! 0: raise RuntimeError(fexecute failed, ret{ret}) output_data np.zeros(output_size, dtypenp.uint8) acl.rt.memcpy(output_data.tobytes(), output_size, output_ptr, output_size, 2) # 2表示device-host return output_data def release(model_id, input_ptr, output_ptr): acl.rt.free(input_ptr) acl.rt.free(output_ptr) acl.mdl.unload(model_id) acl.rt.reset_device(0) acl.finalize() if __name__ __main__: init_device(0) model_id load_model(yolov5s_bs1.om) img cv2.imread(test.jpg) img cv2.cvtColor(img, cv2.COLOR_BGR2RGB) img cv2.resize(img, (640, 640)) input_ptr, output_ptr, output_size prepare_input(model_id, img) result inference(model_id, input_ptr, output_ptr, output_size) print(done) release(model_id, input_ptr, output_ptr)看着简单但真实工程里要注意几个点。acl.mdl.execute是同步接口会阻塞直到推理完成。如果要做高并发推理需要开多线程或者多个stream这属于性能优化层面的内容。YOLOv5的原始输出形状是1,25200,85也就是说针对640x640输入模型会生成25200个候选框每个框有85个值包括中心坐标x、y、宽度w、高度h、目标置信度以及80个类别的分类概率。拿到这堆原始输出后还需要做坐标解码和NMS后处理。核心解码逻辑大家用YOLOv5官方repo里的non_max_suppression即可只需要把张量从device拷回来后再做。因为OM模型输出的shape可能是1,25200,85也可能因为ATC优化而变成其他排列先打印output_shape再写后处理代码能省很多调试时间。YOLOv8的情况略有不同它的输出是1,84,8400这种转置过的格式坐标信息从第1个维度开始就是x、y、w、h没有单独的目标置信度后处理时要区分清楚。4. 故障排查实录这些问题我几乎都踩过4.1 常见报错速查表部署过程中遇到的问题千奇百怪但大量问题属于同一个套路。我整理了一个速查表照着对应处理基本能解决80%的情况。现象可能原因处理方式npu-smi info看不到卡驱动未安装、PCIe未识别、权限不够先ls /dev/davinci*再用dmesg看内核日志确认设备枚举和驱动加载ATC转换报E19999版本不匹配、算子不支持、soc_version填错核对版本配套表换个ATC版本或--soc_version再不行看日志里的详细算子信息加载OM时报设备不匹配转换模型时的--soc_version和实际硬件不符用npu-smi info确认型号重新转换OMacl.rt.set_device失败设备被占用、驱动异常、权限不足确认设备号、重启服务检查当前用户是否在ascend用户组推理结果全是0或乱码输入数据未归一化、图像通道顺序不对、AIPP配置错误打印输入tensor的均值和shape核对预处理流程单张推理很慢模型是动态shape、batch1、没开AIPP转换时固定shape、增大batch、把预处理下沉到AIPP长时间运行后显存泄漏ACL缓存未释放推理后统一释放acl.rt.free模型不再使用时卸载4.2 一个“卡死”问题的完整排查过程有一次我在跑连续多帧推理时程序跑到几百帧后突然卡住CPU占用也不高看起来像是死锁。排查过程是这样的。第一步确认不是后处理的问题。我把推理接口单独抽出来循环跑1000次复现了卡死排除了NMS代码的影响。第二步看显存和进程状态。通过npu-smi info发现设备显存没满但卡上活跃进程在持续增加。这说明每个推理周期分配的内存没有及时释放长时间运行后设备缓存被撑满新的内存申请失败程序陷入等待。第三步检查代码里的资源释放逻辑。问题出在我每次循环里都用acl.rt.memcpy把结果拷回来但是忘了在拷贝完成后释放临时创建的device内存。ACL接口设计上提供了内存池使用时要确保同一块device内存在一次推理后归还池中。把内存分配挪到循环外在循环内只做拷贝和推理问题就解决了。这个坑在官方示例代码里不会出现因为示例往往只跑一次推理演示。真实做视频流推理时循环里的内存管理一定要格外注意。4.3 性能上不去的三个隐藏原因如果你发现Atlas 300V 24G跑YOLO的速度远低于预期先别急着怀疑硬件按这三个方向排查。第一个方向是“模型没有真正静态化”。如果ATC转换时没有指定固定输入尺寸或者用了dynamic_batch_size之类的动态配置推理时很多优化无法生效性能会明显下降。部署到生产环境时尽量使用固定的batch和分辨率把动态部分留在业务层处理而不是让推理引擎去适配。第二个方向是“预处理没下沉”。YOLO推理前有resize、归一化、通道转换等操作这些如果全写在主机侧用Python跑每一帧都要产生多次主机和设备之间的数据传输。通过AIPP把这些操作下沉到设备侧推理耗时能降低一个量级。AIPP的配置看起来只是改了一个配置文件实际影响非常大。第三个方向是“没有利用多batch”。单张推理只喂一张图设备的算力并没有打满。在视频流场景里把多帧图像组成一个batch再推理吞吐量往往能提升到原来的2-4倍。Atlas 300V 24G的24G显存就是为了让你能塞下更大的batch不要白白浪费。5. 一点个人体会整套流程跑下来我的总体感受是Atlas 300V 24G的硬件本身并不难用难的是软件栈的整合与调试。相比CUDA生态里已经把TensorRT、DeepStream这些东西拼装得接近“开箱即用”昇腾的部署链路更偏向自己动手。你需要能读懂ATC的报错日志、理解ONNX算子结构、会写ACL内存管理代码整套能力要求比“pip install 跑起来”高不少。但正因为如此一旦把环境调通你会获得一个功耗低、显存大、推理效率不输同类GPU的部署方案。对目标检测这类确定性较强的场景Atlas 300V 24G是一个很值得纳入选型对比的选项。如果你手头正在犹豫要不要从CUDA迁移过来我的建议是先找一块卡用一周时间把你最常用的模型跑通对比一下单帧延迟和整机功耗再决定是否值得把生产环境迁过来。手里已经有卡并且正在踩坑的朋友希望这篇能帮你少走几个弯路。
企业数字化 ERP 产品动态
相关推荐
Linux面试实战指南:高频考点与排查思路 在准备Linux方向的技术面试时,很多人习惯一头扎进命令大全里,把ls、cd、grep背得滚瓜烂熟,结果一进面试房间,被一句"你平时怎么排查线上CPU飙高"问得哑口无言。这不是个例,我作为一位长期在运维一线打滚、也… · 2026/9/27 0:20:21
分布式任务调度系统设计实践:触发、状态与高可用核心机制解析 做调度系统这么多年,我一直觉得它是最容易被低估的基础设施。业务代码写得好不好,影响的是某个功能;调度系统写得稳不稳,影响的是整个线上环境的“确定性”。我们团队内部有一套跑了很久的调度平台,代号就叫 ax&#x… · 2026/9/27 0:20:15
网站用国外的服务器打不开?3个免费工具自查原因 网站用国外的服务器打不开?3个免费工具自查原因 域名解析指向了海外IP,结果国内用户打开全是转圈圈,甚至直接超时。这种“域名服务器搞不懂”的崩溃感,很多刚接手网站的老手都经历过。别慌,这通常不是代码写错了,而是网络链路被“掐断”或“绕行”了… · 2026/9/27 0:20:08
ISO/IEC 20000-1中文版实操指南:从标准条款到可执行清单 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 1:00:31
微信小程序跳转全流程实战:从配置到回跳的避坑指南 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 1:00:31
菲涅尔透镜设计实战:环带计算、加工选型与工程避坑指南 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 1:00:31
高精度时间测量模块:原理、选型与工业落地实践 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 1:00:31
CLLC谐振变换器参数设计:MATLAB增益分析与优化实战 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 1:00:31
嵌入式四大串行协议详解:I2C、SPI、UART、I2S选型与排障 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 1:00:25
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现 简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01
汕头网站建设制作厂家避坑指南:5大注意事项救急 汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习 简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现 简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01
汕头网站建设制作厂家避坑指南:5大注意事项救急 汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习 简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01