• [问题求助] modelarts token服务如何申请提升TPM额度?
    在当前并发量=10的情况下,就频繁遇到"当前分组上游负载已饱和,请稍后再试"的问题。如何提升该限额?我主要使用deepseek-v3.2-exp模型 
  • [问题求助] 代码无法运行
    因为前期调研不足,在申请AI百校计划之前代码使用的GPU进行运行;但目前代码确实无法在NPU上进行,这种情况怎么办呢
  • [问题求助] modelarts专属资源池如何开通
    想开通专属资源池应该怎么做?
  • [技术干货] 零基础必看!新手必备的10款AI工具合集,轻松上手无压力
    随着AI技术的普及,越来越多零基础用户想借助AI工具提升效率、解决实际问题,但面对市面上五花八门的工具,往往陷入“选不对、用不好、上手难”的困境——要么工具功能复杂门槛高,要么收费隐性不透明,要么与新手需求不匹配,最终浪费时间还没效果。本文专为零基础用户筛选10款高适配性AI工具,覆盖办公、创作、学习、设计等核心场景,均具备“操作简单、功能实用、免费版够用”的特点,无需专业技能,跟着步骤就能快速上手,真正帮新手避开选择误区,用AI降低做事成本。  一、办公效率类:新手也能快速搞定复杂工作工具1:WPS AI核心痛点:新手面对文档格式转换、文字提取、内容润色等需求时,需切换多个软件,操作繁琐且效率低下。工具详细介绍:集成于WPS办公套件的内置AI工具,无需额外下载安装,打开文档即可调用。支持PDF与Word、Excel、PPT等多格式互转,能批量提取图片或扫描件中的文字,还可一键润色文档、优化排版。Excel场景中支持自然语言生成公式,输入通俗需求就能自动计算数据,完全无需掌握函数知识。适用场景:简历优化、报告整理、合同文字提取、课件格式转换、表格数据统计等。上手技巧:首次使用点击文档界面右侧“AI助手”,选择“新手模式”后,界面仅保留核心功能按钮。处理文档时直接上传文件,转换或提取结果可实时预览,不满意可一键重新处理,全程无需复杂设置。工具2:讯飞星火认知大模型核心痛点:新手在会议记录、语音转写、多模态内容生成等场景中,常因操作复杂或准确率低影响效率。工具详细介绍:融合语音识别与多模态生成能力的综合AI工具,语音转文字准确率达98%以上,支持实时会议转写、多语言翻译、文本生成、代码编写等七大核心功能。会议场景中可自动提炼待办事项、责任人和截止时间,会后快速生成标准纪要;还能精准定位代码语法错误并生成测试数据,兼顾办公与轻量专业需求。适用场景:会议记录、语音笔记整理、跨语言沟通、教育课件制作、简单代码辅助编程等。上手技巧:打开APP后选择“会议助手”模式,支持录音实时转写,结束后输入“生成行动项清单”即可快速整理成果。语音转写时保持环境安静,语速适中,可自动区分不同发言人,免费版完全能满足日常办公需求。二、内容创作类:告别“卡壳”,新手也能快速产出优质内容工具3:豆包核心痛点:新手写作时容易陷入“无思路、语句不通、逻辑混乱”的困境,尤其职场文案、总结报告等场景不知如何下笔。工具详细介绍:字节跳动推出的中文AI助手,中文理解能力出色,免费无广告,支持多场景文案生成、内容润色、逻辑优化等功能。输入核心需求和关键信息,即可快速生成结构化初稿,还能自定义语气风格(正式/口语/活泼),支持多轮对话优化。支持语音输入,适合不方便打字的场景,输出内容无明显AI痕迹,稍作修改即可使用。适用场景:职场周报、会议纪要、社交平台文案、产品推广文案、求职邮件、学习心得撰写等。上手技巧:创作时采用“场景+核心信息”的输入方式,例如“作为电商运营,写300字月度总结,含涨粉5万、转化3000单”,10秒即可生成初稿。对结果不满意可补充指令“更简洁”“突出数据成果”,工具会快速优化调整。工具4:Kimi Chat核心痛点:新手处理长篇文档(如行业报告、学术论文、合同条款)时,难以快速抓取核心信息,总结效率极低。工具详细介绍:专注长文本处理的AI工具,支持200万中文字符的无损上下文处理,单次可上传并分析整本书籍、百页级报告或合同文件。具备精准的多轮对话记忆能力,能按用户需求提炼核心结论、梳理逻辑框架、提取关键数据,还可一键转换为PPT大纲或思维导图。操作界面简洁,无复杂参数设置,新手友好度高。适用场景:学术论文梳理、法律文书审核、行业报告总结、企业知识库问答、长篇文档核心提取等。上手技巧:上传长文档时尽量分段整理,避免杂乱格式影响识别。输入指令时明确需求,例如“总结这份报告的3个核心结论+2个关键数据支撑”,1分钟即可获得精炼结果,生成的思维导图可下载打印,方便后续复习使用。三、学习辅助类:降低学习门槛,零基础也能高效吸收知识工具5:通义千问核心痛点:新手学习专业知识时,面对复杂概念难以理解,找不到重点,解题或论文写作缺乏思路。工具详细介绍:阿里巴巴推出的中文大模型,逻辑推理能力突出,堪称“随身百科全书”。支持用通俗语言解释专业术语,输入复杂概念即可获得结构化解读;能帮学生党梳理论文大纲、解答数理难题、整理知识点框架,还可定制个性化学习计划。中文语境适配度拉满,对国内教材和学习场景的适配性优于多数国外工具。适用场景:考证学习、专业课复习、论文写作辅助、数理化难题解答、技能入门(如编程、会计基础)等。上手技巧:询问专业知识时加上“通俗易懂”指令,例如“用通俗语言解释量子计算的核心原理”,工具会避免晦涩表述。梳理知识点时输入“整理Excel函数学习的核心考点”,可获得分点清单,便于碎片化时间复习。工具6:DeepSeek核心痛点:新手想使用AI工具辅助学习,但部分国外工具需科学上网,且英文界面操作复杂,使用门槛高。工具详细介绍:国产免费AI工具,无需科学上网,支持中文交互,功能覆盖资料查询、作文写作、错题解析、学习方法推荐等。针对零基础用户优化了输出逻辑,回答条理清晰、重点突出,可根据需求调整内容深度。支持多轮追问,例如解答数学题后可继续询问“有没有更简便的解题方法”,工具会逐步引导理解。适用场景:英语单词背诵、作文批改、错题解析、学习计划制定、碎片化知识积累等。上手技巧:输入需求时明确场景和难度,例如“整理3个上班族碎片时间背英语单词的方法,适合零基础”,工具会精准匹配需求。遇到不理解的内容可直接追问,无需重新输入背景信息,交互体验流畅。四、设计创意类:无需设计基础,新手也能做出高颜值作品工具7:Canva AI(可画)核心痛点:新手不懂专业设计软件,想制作海报、配图时,要么效果粗糙,要么需要付费找人设计,成本高且效率低。工具详细介绍:零门槛设计工具,内置AI辅助功能,提供海量免费模板(海报、社交媒体配图、PPT封面、电商主图等)。支持拖拽式操作,输入文本描述即可生成设计方案,例如“ins风咖啡探店海报,暖色调”,AI会自动匹配元素和风格。可自定义文字、图片、颜色,无需设计技巧,几分钟就能完成高颜值作品,免费版导出无水印且支持商用。适用场景:活动海报制作、朋友圈配图、PPT封面设计、简历配图、电商主图制作、自媒体封面设计等。上手技巧:优先选择“新手模板”,替换核心信息(文字、图片)后,利用工具的“同色系推荐”功能调整颜色搭配,避免过多元素堆砌。生成后可预览不同尺寸效果,适配微信、小红书、抖音等不同平台需求。工具8:Runway ML核心痛点:专业视频剪辑软件操作复杂,新手难以掌握,想制作短视频、Vlog时,不知如何剪辑、配乐、加字幕。工具详细介绍:视频创作全能工具,操作界面简洁,无需专业剪辑技能。核心功能包括文本生成视频、图像动态扩展、视频风格迁移等,其Gen-3模型能生成1080P高清视频。支持智能剪接,上传素材后自动生成成片,提供海量免费配乐和字幕模板,可一键添加转场效果,还能实现语音自动转字幕,省去手动输入麻烦。适用场景:短视频创作、Vlog剪辑、学习课件视频制作、工作汇报视频、产品宣传短片等。上手技巧:首次使用选择“快速剪辑”模式,工具会自动筛选优质素材片段生成30-180秒成片。字幕功能可直接识别语音生成,支持自动校正错别字,风格迁移可选择“复古”“卡通”等预设模式,无需手动调整参数。五、生活实用类:解决日常痛点,提升生活便捷度工具9:文心一言核心痛点:新手遇到外语翻译、生活服务需求(如菜谱生成、行程规划)时,需切换多个工具,体验碎片化且效果不佳。工具详细介绍:百度推出的多模态大模型,中文理解能力出众,支持文本、语音、图片多形式翻译,覆盖数十种语言,翻译结果精准且符合语境。除翻译功能外,还能生成菜谱、定制健身计划、规划出行路线、解答生活常识问题。具备图像生成、语音合成能力,可满足多样化生活需求,免费版功能完全覆盖日常使用场景。适用场景:外语资料阅读、跨境购物沟通、出国旅游交流、菜谱生成、健身计划制定、出行路线规划等。上手技巧:翻译长文本时分段输入,提高准确性;语音翻译时保持环境安静,语速适中,工具会自动识别语言类型。生成生活服务内容时明确需求细节,例如“适合减脂的晚餐菜谱,做法简单、耗时不超过30分钟”,工具会精准匹配需求。工具10:Heygen核心痛点:新手想制作口播视频(如知识分享、电商带货),但不想露脸或缺乏拍摄条件,专业数字人工具操作复杂、收费高昂。工具详细介绍:零门槛数字人口播工具,无需露脸即可生成专业口播视频。输入文字脚本后,可选择不同风格的虚拟主播(职场、亲和、搞笑等),支持调整语速、语调,虚拟主播口型与语音精准同步。提供海量免费背景模板,支持添加字幕、LOGO和产品图片,生成的视频可直接导出用于自媒体平台或电商带货,适合新手快速产出内容。适用场景:知识付费课程制作、电商带货口播、自媒体内容输出、企业宣传视频、教培讲课视频等。上手技巧:脚本控制在每段30-60秒,避免过长导致观众注意力分散。选择虚拟主播时匹配内容风格,例如知识分享选“专业职场”风格,电商带货选“热情亲和”风格。生成前预览效果,可调整主播位置和背景元素,免费版可满足日常内容创作需求。零基础使用AI工具的核心原则&避坑指南1. 核心原则- 优先选择“免费版够用”的工具:新手无需追求功能全面的付费工具,豆包、WPS AI、Canva AI等免费版已能满足日常需求,熟练后再根据需求升级。- 拒绝“工具堆砌”:按核心场景选择2-3款深耕使用,例如职场人可选“豆包+讯飞星火”,设计需求多可选“Canva AI+Runway ML”,避免同时下载多款同类工具导致操作混乱。- 以“解决问题”为导向:使用工具前明确核心需求,不盲目探索无关功能,聚焦目标提升效率,例如用Kimi Chat就专注长文档处理,无需纠结其绘图功能。2. 避坑指南- 警惕“隐性收费”:选择工具时优先查看“免费功能说明”,明确核心功能是否免费、导出是否有水印,避免使用后才发现关键功能需付费解锁。- 商用变现注意版权:Canva AI、Runway ML免费版可商用,Midjourney等工具默认禁止商用,需购买对应套餐,避免侵权风险。- 注重数据安全:处理公司机密、论文初稿、个人证件等敏感信息时,优先选择WPS AI、文心一言等正规平台工具,避免使用来源不明的小众工具。总结对于零基础用户而言,优质的AI工具不是“复杂功能的堆砌”,而是“用简单操作解决实际问题”。以上10款工具覆盖工作、学习、生活、创作等核心场景,均经过市场验证,具备“低门槛、高实用、易上手”的特点,无需专业技能,跟着上手技巧操作就能快速掌握。AI工具的核心价值是“降低做事成本、提升效率”,新手无需畏惧技术门槛,从一款工具、一个场景开始尝试,逐步解锁AI带来的便捷体验。随着使用熟练度的提升,还能根据自身需求探索更多功能,让AI真正成为工作学习的“得力助手”。如果在使用过程中遇到具体问题,可查找工具官方教程或在相关社区提问,新手只要保持“实用为先”的心态,就能快速玩转AI工具,告别低效努力。
  • [问题求助] Modelarts的notebook里面的EVS存储,可以外挂访问吗?
    比如这个存储显示是15G的EVS,在启动notebook后当然是可以用的,但是如果不启动notebook(比较贵,节省点),我可以访问EVS上的内容吗?我到EVS产品上看了下,并看不到这个存储,所以目前我无法挂载,比如说挂载到ECS上去访问其内容,所以有办法可以访问到吗?
  • [交流吐槽] 华为开发者空间MaaS商用大模型DeepSeek-R1-64K/DeepSeek-V3-64K,案例体验/案例建议反馈贴
    华为开发者空间是为全球开发者打造的专属开发者空间,致力于为每位开发者提供一台云主机、一套开发工具和云上存储空间,汇聚昇腾、鸿蒙、鲲鹏、GaussDB、欧拉等华为各项根技术的开发工具资源,并提供配套案例指导开发者 从开发编码到应用调测,基于华为根技术生态高效便捷的知识学习、技术体验、应用创新。华为开发者空间,激励管理 > 非计划权益提供MaaS商用DeepSeek-R1-64K/DeepSeek-V3-64K大模型Tokens福利,欢迎体验案例,留下您的宝贵意见或建议。
  • [问题求助] modelart的cuda版本太低(11.4)且cuda冲突
    驱动的cuda为11.4,现在的pytorch基本很少支持,然后预装的镜像基本与驱动的cuda版本不一致。导致跑代码的时候总是提示cuda太旧。华为云也没有支持cuda114版本的torch,torchvision,torchaudio等等如何解决?
  • [大赛资讯] 【转载自中国青年报专题报道】华为:一石激发 千层浪起
    中青报·中青网记者 武欣中 通讯员 张苗 刘晓琳来源:中国青年报(2025-12-10  07版)转载自中国青年报 :https://zqb.cyol.com/pc/content/202512/10/content_419799.html “推理大模型的训练调优与性能加速,助力全栈自主AI”——2025年度中国青年科技创新“揭榜挂帅”擂台赛上,华为抛出一道紧扣技术前沿的赛题。面对这一极具挑战性的课题,高校学子踊跃参赛,经过层层严格筛选,华为最终收到了36份充满创新思维的解决方案。正如华为创始人任正非先生在2025年民营企业座谈会上强调的:“人工智能是未来发展的重要方向,企业应积极布局,加强基础研究与人才培养,以增强中国在全球人工智能领域的竞争力。”参与“揭榜挂帅”擂台赛,是华为践行这一战略的生动写照。大赛也为华为搭建了一个绝佳平台,使其能将产业前沿的迫切需求,转化为青年人才的实战课题。据介绍,华为已连续3年在“揭榜挂帅”擂台赛上发布战略级赛题,华为云开发者支持与运营部部长林华鼎表示,赛场是根技术从“能用”到“好用”的试炼场,此次赛题聚焦推理大模型调优,正是看准了其在推动AI技术普惠化进程中的核心作用。2025年,大语言模型的推理能力和运行效率成为影响AI技术广泛应用的关键要素。华为此次设计的赛题直击产业痛点:如何在确保模型精度不受影响的前提下,大幅提升模型推理性能。这一赛题设计也体现了华为对构建自主AI生态的长远考量:参赛团队需使用华为昇腾AI处理器架构、CANN软件栈与ModelArts开发环境,这不仅考验学生的算法能力,更考验他们对昇腾AI全栈技术的掌握与运用能力。本届“揭榜挂帅”擂台赛,上海交通大学团队提出的“基于昇腾NPU的训推一体加速优化方案”脱颖而出,荣获本次华为赛道擂主。该方案从训练端减负、推理端提效、算子端深挖三个层面同时发力,在NPU上发挥出模型的极致性能。林华鼎对参赛作品给予高度评价:“每秒707tokens的惊人速度,不仅是算法的胜利,更是驱动我们产品性能持续飞跃、引领行业技术推广的强劲新标杆。我们期待将这一突破性成果快速转化为用户体验与技术领先优势。”林华鼎透露,华为还将持续在产品的开发者体验提升上投入,在高校人才培养方面持续耕耘,支持更多青年在自主创新的舞台上绽放光彩。
  • [技术干货] RK3588部署CNN-LSTM驾驶行为识别模型
    RK3588部署CNN-LSTM驾驶行为识别模型CNN(卷积神经网络)擅长提取图像的空间特征,LSTM(长短期记忆网络)则擅长处理序列数据的时间特征。首先使用CNN提取视频每一帧特征,之后将提取出的所有特征送入LSTM捕捉视频中的时空特征并对视频特征序列进行分类,实现正常驾驶、闭眼、打哈欠、打电话、左顾右盼5种驾驶行为的识别。一. 模型训练我们在ModelArts创建Notebook完成模型的训练,使用规格是GPU: 1*Pnt1(16GB)|CPU: 8核 64GB,镜像为tensorflow_2.1.0-cuda_10.1-py_3.7-ubuntu_18.04,首先下载数据集:import os import moxing as mox if not os.path.exists('fatigue_driving'): mox.file.copy_parallel('obs://modelbox-course/fatigue_driving', 'fatigue_driving') if not os.path.exists('rknn_toolkit2-2.3.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl'): mox.file.copy_parallel('obs://modelbox-course/rknn_toolkit2-2.3.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl', 'rknn_toolkit2-2.3.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl') 该数据集包含1525段视频,总共有5个类别:0:正常驾驶、1:闭眼、2:打哈欠、3:打电话、4:左顾右盼我们从原视频中裁剪出主驾驶位画面,并将画面缩放到特征提取网络的输入大小:def crop_driving_square(frame): h, w = frame.shape[:2] start_x = w // 2 end_x = w start_y = 0 end_y = h return frame[start_y:end_y, start_x:end_x] 使用在imagenet上预训练的MobileNetV2网络作为卷积基创建并保存图像特征提取器:def get_feature_extractor(): feature_extractor = keras.applications.mobilenet_v2.MobileNetV2( weights = 'imagenet', include_top = False, pooling = 'avg', input_shape = (IMG_SIZE, IMG_SIZE, 3) ) preprocess_input = keras.applications.mobilenet_v2.preprocess_input inputs = keras.Input((IMG_SIZE, IMG_SIZE, 3)) preprocessed = preprocess_input(inputs) outputs = feature_extractor(preprocessed) model = keras.Model(inputs, outputs, name = 'feature_extractor') return model feature_extractor = get_feature_extractor() feature_extractor.save('feature_extractor') feature_extractor.summary() Model: "feature_extractor" _________________________________________________________________ Layer (type) Output Shape Param # ================================================================= input_2 (InputLayer) [(None, 256, 256, 3)] 0 _________________________________________________________________ tf_op_layer_truediv (TensorF [(None, 256, 256, 3)] 0 _________________________________________________________________ tf_op_layer_sub (TensorFlowO [(None, 256, 256, 3)] 0 _________________________________________________________________ mobilenetv2_1.00_224 (Model) (None, 1280) 2257984 ================================================================= Total params: 2,257,984 Trainable params: 2,223,872 Non-trainable params: 34,112 设置网络的输入大小为256x256,每隔6帧截取一帧提取视频的图像特征,特征向量的大小为1280,最终得到每个视频的特征序列,序列的最大长度为40,不足用0补齐:def load_video(file_name): cap = cv2.VideoCapture(file_name) frame_interval = 6 frames = [] count = 0 while True: ret, frame = cap.read() if not ret: break if count % frame_interval == 0: frame = crop_driving_square(frame) frame = cv2.resize(frame, (IMG_SIZE, IMG_SIZE)) frame = frame[:, :, [2, 1, 0]] frames.append(frame) count += 1 return np.array(frames) def load_data(videos, labels): video_features = [] for video in tqdm(videos): frames = load_video(video) counts = len(frames) # 如果帧数小于MAX_SEQUENCE_LENGTH if counts < MAX_SEQUENCE_LENGTH: # 补白 diff = MAX_SEQUENCE_LENGTH - counts # 创建全0的numpy数组 padding = np.zeros((diff, IMG_SIZE, IMG_SIZE, 3)) # 数组拼接 frames = np.concatenate((frames, padding)) # 获取前MAX_SEQUENCE_LENGTH帧画面 frames = frames[:MAX_SEQUENCE_LENGTH, :] # 批量提取图像特征 video_feature = feature_extractor.predict(frames) video_features.append(video_feature) return np.array(video_features), np.array(labels) video_features, classes = load_data(videos, labels) video_features.shape, classes.shape((1525, 40, 1280), (1525,)) 总共提取了1525个视频的特征序列,按照8:2的比例划分训练集和测试集(batchsize的大小设为16):batch_size = 16 dataset = tf.data.Dataset.from_tensor_slices((video_features, classes)) dataset = dataset.shuffle(len(videos)) test_count = int(len(videos) * 0.2) train_count = len(videos) - test_count dataset_train = dataset.skip(test_count).cache().repeat() dataset_test = dataset.take(test_count).cache().repeat() train_dataset = dataset_train.shuffle(train_count).batch(batch_size) test_dataset = dataset_test.shuffle(test_count).batch(batch_size) train_dataset, train_count, test_dataset, test_count(<BatchDataset shapes: ((None, 40, 1280), (None,)), types: (tf.float32, tf.int64)>, 1220, <BatchDataset shapes: ((None, 40, 1280), (None,)), types: (tf.float32, tf.int64)>, 305) 之后创建LSTM提取视频特征序列的时间信息送入Dense分类器,模型的定义如下:def video_cls_model(class_vocab): # 类别数量 classes_num = len(class_vocab) # 定义模型 model = keras.Sequential([ layers.Input(shape=(MAX_SEQUENCE_LENGTH, NUM_FEATURES)), layers.LSTM(64, return_sequences=True), layers.Flatten(), layers.Dense(classes_num, activation='softmax') ]) # 编译模型 model.compile(optimizer = keras.optimizers.Adam(1e-5), loss = keras.losses.SparseCategoricalCrossentropy(from_logits=False), metrics = ['accuracy'] ) return model # 模型实例化 model = video_cls_model(np.unique(labels)) # 保存检查点 checkpoint = keras.callbacks.ModelCheckpoint(filepath='best.h5', monitor='val_loss', save_weights_only=True, save_best_only=True, verbose=1, mode='min') # 模型结构 model.summary() 网络的输入大小为(N, 40, 1280),使用softmax进行激活,输出5个类别的概率:Model: "sequential" _________________________________________________________________ Layer (type) Output Shape Param # ================================================================= lstm (LSTM) (None, 40, 64) 344320 _________________________________________________________________ flatten (Flatten) (None, 2560) 0 _________________________________________________________________ dense (Dense) (None, 5) 12805 ================================================================= Total params: 357,125 Trainable params: 357,125 Non-trainable params: 0 _________________________________________________________________实验表明模型训练300个Epoch基本收敛:history = model.fit(train_dataset, epochs = 300, steps_per_epoch = train_count // batch_size, validation_steps = test_count // batch_size, validation_data = test_dataset, callbacks=[checkpoint]) plt.plot(history.epoch, history.history['loss'], 'r', label='loss') plt.plot(history.epoch, history.history['val_loss'], 'g--', label='val_loss') plt.title('LSTM') plt.xlabel('Epoch') plt.ylabel('Loss') plt.legend() plt.plot(history.epoch, history.history['accuracy'], 'r', label='acc') plt.plot(history.epoch, history.history['val_accuracy'], 'g--', label='val_acc') plt.title('LSTM') plt.xlabel('Epoch') plt.ylabel('Accuracy') plt.legend() 加载模型最优权重,模型在测试集上的分类准确率为95.8%,保存为saved_model格式:model.load_weights('best.h5') model.evaluate(dataset.batch(batch_size)) model.save('saved_model') 96/96 [==============================] - 0s 5ms/step - loss: 0.2169 - accuracy: 0.9580 [0.21687692414949802, 0.9580328] 二、模型转换首先将图像特征提取器feature_extractor转为tflite格式,并开启模型量化:import tensorflow as tf converter = tf.lite.TFLiteConverter.from_saved_model('feature_extractor') converter.target_spec.supported_ops = [tf.lite.OpsSet.TFLITE_BUILTINS, tf.lite.OpsSet.SELECT_TF_OPS] converter.post_training_quantize = True # 模型量化 tflite_model = converter.convert() with open('mbv2.tflite', 'wb') as f: f.write(tflite_model) 再将视频序列分类模型转为onnx格式,由于lstm参数量较少,不需要进行量化:python -m tf2onnx.convert --saved-model saved_model --output lstm.onnx --opset 12 最后导出RKNN格式的模型,可根据需要设置target_platform为rk3568/rk3588:from rknn.api import RKNN rknn = RKNN(verbose=False) rknn.config(target_platform="rk3588") rknn.load_tflite(model="mbv2.tflite") rknn.build(do_quantization=False) rknn.export_rknn('mbv2.rknn') rknn.release() rknn = RKNN(verbose=False) rknn.config(target_platform="rk3588") rknn.load_onnx( model="lstm.onnx", inputs=['input_3'], # 输入节点名称 input_size_list=[[1, 40, 1280]] # 固定输入尺寸 ) rknn.build(do_quantization=False) rknn.export_rknn('lstm.rknn') rknn.release() 三、模型部署我们在RK3588上部署MobileNetV2和LSTM模型,以下是板侧的推理代码:import os import cv2 import glob import shutil import imageio import numpy as np from IPython.display import Image from rknnlite.api import RKNNLite MAX_SEQUENCE_LENGTH = 40 IMG_SIZE = 256 NUM_FEATURES = 1280 def crop_driving_square(img): h, w = img.shape[:2] start_x = w // 2 end_x = w start_y = 0 end_y = h result = img[start_y:end_y, start_x:end_x] return result def load_video(file_name): cap = cv2.VideoCapture(file_name) # 每隔多少帧抽取一次 frame_interval = 6 frames = [] count = 0 while True: ret, frame = cap.read() if not ret: break # 每隔frame_interval帧保存一次 if count % frame_interval == 0: # 中心裁剪 frame = crop_driving_square(frame) # 缩放 frame = cv2.resize(frame, (IMG_SIZE, IMG_SIZE)) # BGR -> RGB [0,1,2] -> [2,1,0] frame = frame[:, :, [2, 1, 0]] frames.append(frame) count += 1 cap.release() return np.array(frames).astype(np.uint8) # 获取视频特征序列 def getVideoFeat(frames): frames_count = len(frames) # 如果帧数小于MAX_SEQUENCE_LENGTH if frames_count < MAX_SEQUENCE_LENGTH: # 补白 diff = MAX_SEQUENCE_LENGTH - frames_count # 创建全0的numpy数组 padding = np.zeros((diff, IMG_SIZE, IMG_SIZE, 3)) # 数组拼接 frames = np.concatenate((frames, padding)) # 取前MAX_SEQ_LENGTH帧 frames = frames[:MAX_SEQUENCE_LENGTH,:] frames = frames.astype(np.float32) # 提取视频每一帧特征 feats = [] for frame in frames: frame = np.expand_dims(frame, axis=0) result = rknn_lite_mbv2.inference(inputs=[frame]) feats.append(result[0]) return feats rknn_lite_mbv2 = RKNNLite() rknn_lite_lstm = RKNNLite() rknn_lite_mbv2.load_rknn('model/mbv2.rknn') rknn_lite_lstm.load_rknn('model/lstm.rknn') rknn_lite_mbv2.init_runtime(core_mask=RKNNLite.NPU_CORE_0_1_2) rknn_lite_lstm.init_runtime(core_mask=RKNNLite.NPU_CORE_0_1_2) files = glob.glob("video/*.mp4") for video_path in files: label_to_name = {0:'正常驾驶', 1:'闭眼', 2:'打哈欠', 3:'打电话', 4:'左顾右盼'} frames = load_video(video_path) frames = frames[:MAX_SEQUENCE_LENGTH] imageio.mimsave('test.gif', frames, durations=10, loop=0) display(Image(open('test.gif', 'rb').read())) feats = getVideoFeat(frames) feats = np.concatenate(feats, axis=0) feats = np.expand_dims(feats, axis=0) preds = rknn_lite_lstm.inference(inputs=[feats])[0][0] for i in np.argsort(preds)[::-1][:5]: print('{}: {}%'.format(label_to_name[i], round(preds[i]*100, 2))) rknn_lite_mbv2.release() rknn_lite_lstm.release() 最终的视频识别效果如下:🚀四、本文小结本文详细阐述了基于RK3588平台的CNN-LSTM驾驶行为识别模型全流程,利用MobileNetV2提取图像的空间特征、LSTM处理视频的时序特征完成对正常驾驶、闭眼、打哈欠、打电话和左顾右盼5类驾驶行为的精准识别,在ModelArts上训练达到95.8%分类准确率,并分别将mbv2.tflite和lstm.onnx转换为RKNN格式实现板侧的高效推理部署。
  • [问题求助] 如何在训练作业中使用 OBS 桶的超大规模的训练数据
    我的训练数据大约是16TB的图像数据和光流真值(.pfm文件)。我目前想要尝试使用该数据训练模型,但是在创建训练作业的时候,并没有选项支持从OBS桶中读取这些数据。我查阅了相关使用指南,在  cid:link_0  中提到,在训练代码中通过OBS SDK实现操作OBS中的数据,并且说明了有400GB的磁盘空间可以直接挂载。但是这一空间还是太少了,不满足我当前的需求。而直接访问obs桶的话,数据读取速度又太慢了,npu长时间处于等待状态。有没有方法可以进一步提高obs中的数据访问速度?或者,能否提供更大的 ssd 存储空间,以支持大规模数据训练?
  • 【话题交流】2025年已悄然步入尾声~这一年,大家有哪些悄然生长的收获?
    【话题交流】2025年已悄然步入尾声~这一年,大家有哪些悄然生长的收获?华为云的ModelArts Studio(MaaS)让我们更好的调用deepseek等大模型;对象存储,让海量数据存得下、管得好、用得快。
  • [技术干货] 算力券购买范围
    1. 目前的操作指南我只能用券购买Notebook或者workflow,是否可以用来购买云空间ECS呢~2.是否可以用券购买算力集群~在申请的时候,目前看无法配置实例
  • [问题求助] 为了在modelarts的notebook中引出服务端口,使用了ngrok,但是不能成功
    打扰请问,为了在modelarts的notebook中引出ComfyUI的服务端口,使用了ngrok如在notebook中把comfyUI服务的8818端口引出来,使用了ngrok ,设置了connect.ngrok-agent.com不走代理no proxy=127.0.0.1, localhost,172.16.*,obs.cn-soutimest-2.myuaweicloud.com, iam.cn-southwest-2.huaweicloud.com,pip.modelarts,private.com,connect.ngrok-agent.com但是./ngrok http 8818之后,还是不能正常连接,unset https_proxy  HTTPS_PROXY HTTP_PROXY http_proxy ,unset了这些参数也不能成功,出现以下错误,可否解决该问题?
  • [校园大使专区] 华为开发者空间走进贵州电子科技职业学院
    一、系统性技术传播,构建完整知识体系本次活动通过"社团获奖成果展示"和"华为开发者空间核心技术介绍"两大环节,系统性地普及了华为云、ModelArts、昇腾AI算力等技术矩阵。针对不同基础的学生群体,设计了差异化的技术传播路径:为初学者解析"开箱即用"的开发便利性,为技术骨干展示"ICT大赛训练营"的实战价值,形成了多层次、立体化的技术知识传播体系。二、沉浸式实践体验,推动技术能力转化活动创新设置"动手工坊"实践环节,提供"AI图像识别模型运行"与"鸿蒙云应用调试"两大技术实践方向。在技术助教团队的指导下,参与者通过15分钟的高效实践,完成了从理论认知到动手实操的完整流程,亲身体验了华为开发平台的技术优势,实现了技术能力的实质性提升。  三、学习社群持续运营,构建技术交流生态活动后成功建立"华为技术学习"微信社群,通过定期分享《新手任务清单》、技术资料包及实战案例,打造了持续活跃的技术交流平台。社群形成了良性的"学习-实践-分享"循环机制,为学生提供了长期的技术成长支持,确保了技术传播的持续性和深入性。四、人才培养初见成效,完善技术传承体系通过本次活动,成功吸引了多名技术骨干关注并意向加入HCSD计划,初步构建了"以学生影响学生"的技术传承模式。这种模式不仅壮大了校园技术布道师队伍,更形成了良好的技术传播氛围,为后续持续开展技术活动奠定了人才基础。五、学训赛创深度融合,验证技术应用路径活动成功将华为开发者空间嵌入学生"学习-训练-竞赛-创新"的成长体系,通过获奖学生的真实案例展示,生动呈现了如何将平台技术能力转化为个人技术实力和竞赛成果。这种模式为参与者提供了清晰的技术成长路径,验证了"技术学习-实践应用-创新产出"的可行性。  六、生态建设持续推进,夯实未来发展基础本次活动不仅是技术知识的传播,更是华为开发者生态在校园的深度落地。通过技术体验、实践应用和社群建设等多个维度,初步构建了可持续发展的校园开发者生态。未来将继续深化与华为开发者生态的合作,通过系列技术工作坊、项目实战和竞赛培育,持续推动创新技术能力培养工作。
  • [热门活动] 「赛后点亮星光,分享铸就未来」技术征文活动,赢取机械背光键盘等好礼!
    ✨活动背景与宗旨祝贺各位选手圆满完赛!赛场上的奇思妙想与卓越技术,共同呈现了一场精彩纷呈的技术盛宴。赛事虽已落幕,思考与成长永不止步。每一行代码都蕴含着独特思路,每一次调试都沉淀为宝贵经验。为延续这份技术热情,共建共享共进的开发者社区,我们正式启动赛后征文活动。我们相信,个人的经验是火花,众人的分享可汇成照亮前路的星光。诚邀您留下技术干货、备赛心得与真诚建议,为未来的开发者点亮引路明灯,共同滋养我们的开发者技术生态。✨活动主题我们诚挚地邀请您,围绕但不限于以下方向,分享您的故事:技术干货深挖掘:分享您在比赛中解决某个棘手技术难题的思路、算法优化技巧、架构设计心得或使用的炫酷工具/框架。备赛心路全记录:回顾您的备赛历程,如何平衡学业与备赛?有哪些高效的学习方法和资源推荐?心态上是如何调整的?赛事体验与建言:谈谈您对本次赛事组织、赛题设置、平台体验的感受,并提出您宝贵的改进建议,帮助我们做得更好。致未来选手的话:作为一名“过来人”,您最想对下一届的学弟学妹们说些什么?有哪些“避坑”指南或“必胜”秘诀?✨参与对象揭榜挂帅华为赛道获奖团队✨活动时间征文期:即日起至2025年12月7日评审与公示期:征文结束后10个工作日内。✨参与方式在 [挑战杯揭榜挂帅华为赛道-大赛官方论坛-热门活动分享] 以发帖形式参与。帖子标题格式:【赛后分享】+ 自定义标题 (例如:【赛后分享】我是如何用XX算法实现性能突破的】)。论坛链接:cid:link_0🎁奖励机制(重磅激励!)奖项数量奖品“技术之光”头奖8名机械背光键盘“经验之谈”优秀奖10名华为云键盘“积极参与”奖 (若干)若干所有按要求完成投稿的选手,都将获得官方定制的赛事礼品一份(如数据收纳包/折叠双肩包/公牛插座等,仓库随机发送其一)        ✨评选标准内容质量 (50%):技术深度、逻辑清晰度、实用性;分享价值 (30%):对后来者的指导与启发意义;互动热度 (20%):帖子在社区内的回复与讨论情况。✨作品要求作品必须为原创首发,不得抄袭;内容需积极向上,与技术、赛事或开发者生态相关;字数建议不少于800字,图文并茂更佳(也可参考链接以下附件征文模版参考)。 🚀🚀你们不仅是比赛的参与者,更是这个技术社区的建设者。您的每一次分享,都可能成为他人前行路上的关键一步。让我们携手,将短暂的比赛,延伸为长久的影响力。期待在论坛中,读到您独一无二的精彩故事!