-
基于华为开发者空间云开发环境搭建CodeArts代码智能体,实现探途AI智能旅行规划助手一、概述1.1 适用对象企业开发者个人开发者高校学生1.2 案例介绍CodeArts代码智能体(CodeArts Doer)是面向 DevSecOps 全流程的智能化解决方案,当前已开放 CodeArts Doer for Coding 功能模块。本案例将指导您完成以下目标:通过 VS Code 远程连接华为开发者空间云开发环境(容器)集成 CodeArts Doer for Coding 插件搭建代码智能体利用智能体模式快速构建"探途AI"智能旅行规划助手1.3 案例流程流程说明:VS Code 远程连接云开发环境(容器)VS Code 集成 CodeArts Doer for Coding 插件,搭建 CodeArts 代码智能体配置智能体模式,快速构建探途AI智能旅行规划助手1.4 资源总览本案例预计花费 1元。案例完成后请及时释放资源,避免产生额外费用。资源名称规格单价(元)时长(分钟)华为开发者空间 - 云开发环境(容器)通用计算增强型 kc1 | 4vCPUs | 8G | HCE免费60CodeArts代码智能体(CodeArts Doer)系统标配免费60华为开发者空间 - DeepSeek-R1/V3 千万Tokens代金券DeepSeek-R1-64K/DeepSeek-V3-64K1160二、环境和资源准备2.1 领取华为云MaaS平台商用大模型Tokens福利参考案例华为云MaaS平台商用大模型Tokens领取使用指导最后获取到模型的API地址、模型名称和API Key。请妥善记录 API Key、API 地址以及模型名称,后续步骤将会使用。2.2 远程连接云开发环境我们进入 华为云开发者平台 创建容器。选择 All in one,点击确定。输入开发环境名称,选择规格后点击创建开发环境。选择创建好的容器,点击更多 > 开机。2.2.2 连接开发容器打开 VS Code 插件市场,搜索Huawei Developer Space,点击Install,安装插件。若本地尚未安装 VS Code,请自行下载安装。插件安装完成后,左侧新增 Huawei Developer Space 图标。点击图标,点击Sign in。提示打开开发者空间官网授权登录,选择Open。若账号处于登录状态,在确认授权页面确认授权后,提示登录成功。若账号位处于未登录状态,则在确认授权页面点Authorize,跳转华为云登录界面。页面提示登录成功。回到VS Code,显示登录成功欢迎界面。这样就连接成功了。平台操作系统选择Linux。点击Trust Folder & Continue。2.2.3 安装 CodeArts Agent 插件在 VS Code 插件市场搜索并找到CodeArts Agent插件,点击Install。安装结束后,重启 VS Code,重新连接云开发环境(容器)。重启后,状态如下:2.2.4 登录 CodeArts 代码智能体此时 CodeArts 代码智能体还不能直接使用,需要进行登录,点击华为账号登录,弹出窗口提示:是否打开外部网站,点打开。浏览器自动打开“批准登录”确认页面。若此时未登录账号,则跳转华为账号登录。若账号已登录,则选中并点登录。若为首次使用 CodeArts 代码智能体,会进入开通页面。需要勾选**“我已阅读并同意”后,单击“立即开通”**,等待套餐开通完成。返回 VS Code,显示登陆成功:2.2.5 配置智能体模式在 CodeArts 代码智能体对话框下侧点 Agent 模式,在弹出的菜单最后侧点设置按钮。在设置界面,点“自动批准”右侧的已启用。进入授权所有自动化操作界面,分别勾选读取文件和目录、编辑文件、执行命令、更新代办。配置完成后测试智能体:“你好,请自我介绍一下”3.1 投喂架构设计文档将以下架构设计及开发计划文档输入给代码智能体,让其理解项目需求:# 探途AI - 项目架构与开发计划 > **项目名称**:探途AI - 智能旅行规划助手 > **技术栈**:Go (后端) + Vue 3 (前端) > **预计开发时间**:2-3天 --- ## 一、项目概述 ### 1.1 项目目标 构建一个智能旅行规划助手 Web 应用,用户输入目的地、出行天数、预算和偏好后,AI 自动生成个性化旅行攻略。 ### 1.2 核心功能 | 功能模块 | 描述 | |---------|------| | 🎯 智能行程规划 | 根据用户输入生成每日详细行程 | | 🏛️ 景点推荐 | 推荐热门景点及游玩建议 | | 🍜 美食攻略 | 推荐当地特色美食和餐厅 | | 💰 预算规划 | 智能分配交通、住宿、餐饮等费用 | | 💬 智能对话 | 支持追问和行程优化 | | 📱 响应式设计 | 支持PC和移动端访问 | --- ## 二、技术架构 ### 2.1 架构图 ```text ┌─────────────────────────────────────────────────────────────────┐ │ 用户浏览器 │ │ (Vue 3 SPA / 响应式UI) │ └─────────────────────────────────────────────────────────────────┘ │ │ HTTP/HTTPS ▼ ┌─────────────────────────────────────────────────────────────────┐ │ Nginx (可选) │ │ 静态资源 + 反向代理 │ └─────────────────────────────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────────────┐ │ Go Backend (Gin) │ │ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ │ │ Router │ │ Handler │ │ Service │ │ │ │ 路由层 │─▶│ 控制层 │─▶│ 业务层 │ │ │ └──────────────┘ └──────────────┘ └──────────────┘ │ │ │ │ │ ▼ │ │ ┌──────────────┐ │ │ │ AI Client │ │ │ │ DeepSeek │ │ │ └──────────────┘ │ └─────────────────────────────────────────────────────────────────┘ │ │ HTTPS ▼ ┌─────────────────────────────────────────────────────────────────┐ │ 华为云 ModelArts │ │ DeepSeek-R1/V3 API │ └─────────────────────────────────────────────────────────────────┘``` ### 2.2 技术选型 #### 后端 (Go) | 组件 | 技术选型 | 说明 | |------|---------|------| | Web框架 | **Gin** | 轻量高性能,适合API开发 | | 配置管理 | **Viper** | 支持多种配置格式 | | HTTP客户端 | **net/http** | 标准库,调用AI API | | 日志 | **Zap** | 高性能结构化日志 | | 热重载 | **Air** | 开发时自动重载 | #### 前端 (Vue 3) | 组件 | 技术选型 | 说明 | |------|---------|------| | 框架 | **Vue 3** | 组合式API,响应式 | | 构建工具 | **Vite** | 极速开发体验 | | UI组件 | **原生CSS** | 自定义渐变主题 | | Markdown | **marked.js** | 渲染AI返回的Markdown | | HTTP | **Axios** | API请求 | --- ## 三、项目结构 ### 3.1 整体目录结构 ```text tantu-ai/ ├── backend/ # Go后端 │ ├── cmd/ │ │ └── server/ │ │ └── main.go # 程序入口 │ ├── internal/ │ │ ├── config/ │ │ │ └── config.go # 配置管理 │ │ ├── handler/ │ │ │ ├── handler.go # Handler接口 │ │ │ └── travel.go # 旅行规划Handler │ │ ├── service/ │ │ │ ├── service.go # Service接口 │ │ │ └── ai_service.go # AI服务(调用DeepSeek) │ │ ├── model/ │ │ │ └── travel.go # 数据模型 │ │ └── router/ │ │ └── router.go # 路由配置 │ ├── pkg/ │ │ └── deepseek/ │ │ └── client.go # DeepSeek API客户端 │ ├── config.yaml # 配置文件 │ ├── go.mod │ └── go.sum │ ├── frontend/ # Vue前端 │ ├── src/ │ │ ├── assets/ │ │ │ └── styles/ │ │ │ └── main.css # 全局样式 │ │ ├── components/ │ │ │ ├── TravelForm.vue # 输入表单组件 │ │ │ ├── ResultCard.vue # 结果展示组件 │ │ │ └── Loading.vue # 加载动画组件 │ │ ├── views/ │ │ │ └── Home.vue # 主页 │ │ ├── api/ │ │ │ └── travel.js # API封装 │ │ ├── App.vue │ │ └── main.js │ ├── index.html │ ├── vite.config.js │ └── package.json │ ├── docs/ # 文档 │ └── api.md # API文档 │ ├── Makefile # 构建脚本 ├── docker-compose.yml # Docker编排(可选) └── README.md``` ### 3.2 后端分层说明 ```text ┌─────────────────────────────────────────────────┐ │ Router │ │ 路由注册和中间件 │ └─────────────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────┐ │ Handler │ │ 请求解析、参数校验、响应封装 │ └─────────────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────┐ │ Service │ │ 业务逻辑、Prompt构建 │ └─────────────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────┐ │ DeepSeek Client │ │ HTTP调用AI API │ └─────────────────────────────────────────────────┘``` --- ## 四、API设计 ### 4.1 接口列表 | 方法 | 路径 | 描述 | |------|------|------| | POST | `/api/v1/plan` | 生成旅行规划 | | POST | `/api/v1/chat` | 追问对话 | | GET | `/api/v1/health` | 健康检查 | ### 4.2 接口详情 #### POST /api/v1/plan **请求体**: ```json { "destination": "成都", "days": 3, "budget": "中等", "preference": "美食探店" }``` **响应体**: ```json { "code": 0, "message": "success", "data": { "plan": "## 🌟 行程概览\n...", "destination": "成都", "days": 3, "generated_at": "2026-01-29 12:00:00" } }``` #### POST /api/v1/chat **请求体**: ```json { "question": "第二天下午还有什么推荐?", "context": "之前生成的行程内容..." }``` **响应体**: ```json { "code": 0, "message": "success", "data": { "answer": "除了武侯祠,您还可以..." } }``` --- ## 五、核心模块设计 ### 5.1 DeepSeek Client ```go // pkg/deepseek/client.go type Client struct { baseURL string apiKey string modelName string httpClient *http.Client } type ChatRequest struct { Model string `json:"model"` Messages []Message `json:"messages"` Temperature float64 `json:"temperature"` MaxTokens int `json:"max_tokens"`} type Message struct { Role string `json:"role"` Content string `json:"content"`} func (c *Client) Chat(ctx context.Context, req *ChatRequest) (*ChatResponse, error)``` ### 5.2 Travel Service ```go // internal/service/ai_service.go type TravelService struct { aiClient *deepseek.Client } func (s *TravelService) GeneratePlan(ctx context.Context, req *model.PlanRequest) (*model.PlanResponse, error) { // 1. 构建Prompt // 2. 调用DeepSeek API // 3. 解析响应 // 4. 返回结果 }``` ### 5.3 Prompt模板 ```go const TravelPlanPrompt = `你是"探途AI",一位专业的旅行规划师。 【用户需求】 - 目的地:{{.Destination}} - 天数:{{.Days}}天 - 预算:{{.Budget}} - 偏好:{{.Preference}} 请生成详细的旅行攻略,包含: 1. 行程概览 2. 每日详细行程(景点、美食、交通) 3. 预算分配 4. 温馨提示 ```` --- ## 六、开发计划 ### Phase 1: 项目初始化 (Day 1 上午) - [ ] 创建Go项目结构 - [ ] 初始化go.mod,安装依赖(Gin、Viper、Zap) - [ ] 创建Vue项目(Vite) - [ ] 配置开发环境(Air热重载) ### Phase 2: 后端核心开发 (Day 1 下午) - [ ] 实现DeepSeek Client - [ ] 实现配置管理(config.yaml) - [ ] 实现Travel Handler - [ ] 实现Travel Service + Prompt模板 - [ ] 配置路由和中间件(CORS、日志) ### Phase 3: 前端开发 (Day 2 上午) - [ ] 设计整体布局和样式(渐变主题) - [ ] 实现TravelForm组件 - [ ] 实现Loading组件 - [ ] 实现ResultCard组件(Markdown渲染) - [ ] API封装和联调 ### Phase 4: 集成测试 (Day 2 下午) - [ ] 前后端联调 - [ ] 不同目的地测试 - [ ] 响应式适配测试 - [ ] 错误处理优化 ### Phase 5: 部署与文档 (Day 3) - [ ] 编写README - [ ] 编写API文档 - [ ] 准备案例截图 - [ ] 更新案例文档 --- ## 七、配置文件示例 ### backend/config.yaml ```yaml server: port: 8080 mode: debug # debug / release deepseek: base_url: "https://api.modelarts.cn-southwest-2.huaweicloud.com/v1/infers/你的推理服务ID" api_key: "你的API_Key" model: "DeepSeek-R1-64K" timeout: 120s max_tokens: 3000 log: level: info format: json``` --- ## 八、部署方案 ### 8.1 本地开发 ```bash # 后端 cd backend go run cmd/server/main.go # 前端 cd frontend npm run dev``` ### 8.2 生产部署 ```bash # 后端编译 cd backend go build -o tantu-ai cmd/server/main.go # 前端构建 cd frontend npm run build # 将 dist/ 目录部署到Nginx或由Go serve``` --- ## 九、风险与注意事项 | 风险 | 缓解措施 | |------|---------| | API调用超时 | 设置合理超时时间(120s),添加重试机制 | | Token消耗过快 | 优化Prompt,限制max_tokens | | 前后端跨域 | Gin配置CORS中间件 | | 敏感信息泄露 | API Key存储在配置文件,不提交到Git | --- ## 十、扩展规划(可选) - [ ] 用户收藏功能 - [ ] 行程导出PDF - [ ] 多语言支持 - [ ] 接入地图API展示路线 - [ ] 接入酒店/机票API 输入完成后,点击"开始开发"按钮,智能体将自动生成项目代码。代码生成完成后的效果如下图所示:点击"全部接受"按钮,将生成的代码应用到项目中。3.2 首次运行后端服务步骤一:配置API密钥打开 config.yaml 文件,填写之前申请的 API Key、调用地址和模型名称:步骤二:安装依赖并启动服务执行以下命令安装 Go 依赖:go get ./...当控制台输出以下信息时,表示后端服务启动成功:2026/01/30 14:39:45 Server starting on port 8080...3.3 首次运行前端服务启动前端开发服务器,当控制台输出以下信息时,表示前端服务启动成功: VITE v7.3.1 ready in 227 ms ➜ Local: http://localhost:5173/ ➜ Network: use --host to expose ➜ press h + enter to show help 在浏览器中访问以下地址:http://127.0.0.1:5173/即可看到前端UI界面的初始版本:3.4 项目优化3.4.1 前端UI界面优化向智能体发送以下优化指令:前端UI 字体显示进行相关细节优化优化后的界面字体更加清晰:3.4.2 前后端联调测试在前端界面中填写测试数据:字段值目的地北京出行天数3天预算豪华型旅行偏好历史文化、美食探店AI 生成的行程规划结果如下:3.4.3 局部细节优化向智能体发送优化指令,进一步完善前后端功能:还有什么细节上的优化吗?包括前后端本次优化新增了以下5项功能:3.5 成果验收输入测试数据进行功能验收。前端交互优化:新增生成进度条组件,解决了用户点击"生成计划"按钮后等待期间右侧内容区域空白的问题,提升了用户体验。流式响应:后端实现了流式响应机制,AI 生成的行程规划可以实时展示:四、释放资源云开发环境(容器)开机状态,会持续消耗华为开发者空间核时,在案例结束后需要进行关机操作。左侧打开开发者空间,在对应的容器后侧点关机。根据弹窗提示,点确认,当前云开发环境(容器)自动断开连接。若该环境后续不再使用,可对其进行删除操作。五、总结本案例演示了如何基于华为开发者空间云开发环境,利用 CodeArts 代码智能体快速构建一个完整的 AI 应用。通过智能体模式,开发者可以:高效开发:通过自然语言描述需求,智能体自动生成前后端代码快速迭代:通过对话式交互持续优化和完善功能降低门槛:无需深入掌握每个技术栈的细节,即可构建完整应用【案例相关源码】: 【https://gitcode.com/weixin_52568491/Tantu_AI_Demo】希望本案例能够帮助您快速上手 CodeArts 代码智能体,开启智能化开发之旅!我正在参加 【案例共创】【第9期】基于开发者空间-云开发环境(容器)+ CodeArts代码智能体完成应用开发/调试实践
-
一、概述1.1 适用对象AI应用开发者Python开发者旅游爱好者想要学习多模态大模型应用的开发者1.2 案例流程本案例将使用CodeArts代码智能体生成程序完成以下工作:准备旅行照片,获取华为云ModelArts API密钥和百度地图API密钥使用Python程序读取照片EXIF信息(GPS坐标、拍摄时间)调用Qwen2.5-VL-72B视觉模型分析图片内容使用百度地图API进行逆地理编码,获取详细地址和附近景点调用DeepSeek-R1文本模型生成小红书风格旅游文案自动生成精美的HTML格式旅行手账案例流程如下图所示:说明:VS Code远程连接云开发环境(容器);VS Code集成CodeArts Doer for Coding插件,搭建CodeArts代码智能体;设置智能体模式,快速构建华为云智能旅行手账程序。1.3 资源总览本案例预计花费2元(假设照片不超过10张,分析一张手机照片一般需要1.5千tokens)。体验完成后请及时释放资源,避免产生多余的费用。资源名称规格单价(元)时长(分钟)华为云ModelArts APIDeepSeek-R1130华为云ModelArts APIQwen2.5-VL-72B输入:¥0.016 / 千tokens输出:¥0.048 / 千tokens30百度地图API逆地理编码 + 景点搜索免费额度30云开发环境Python 3.7+免费30二、环境和资源准备2.1 领取华为云MaaS平台商用大模型Tokens福利登录华为开发者空间,参考案例《华为云MaaS平台商用大模型Tokens领取使用指导》中的“二、 领取MaaS平台商用大模型Tokens”章节内容,领取MaaS平台DeepSeek-R1商用大模型Tokens代金券,购买ModelArts Studio DeepSeek Tokens套餐包,开通商用模型服务,最后获取到模型的API地址、模型名称和API Key。开通商用模型服务,获取以下信息:API地址:https://api.modelarts-maas.com/v1/chat/completions视觉模型名称:qwen2.5-vl-72b文本模型名称:DeepSeek-R1API Key:您的API密钥注意:记录API Key、API地址以及模型名称留作后面步骤使用。2.2 获取百度地图API密钥访问百度地图开放平台:cid:link_4注册并登录账号创建应用,获取AK(API Key)开启"逆地理编码"和"地点检索"服务权限,前者将GPS坐标转换为地址信息,后者查找该地址最可能的旅游景点,从而获得照片所对应的景点信息注意:记录API Key留作后面步骤使用。2.3 创建云开发环境参考案例《基于华为开发者空间 - 云开发环境(容器)搭建CodeArts代码智能体》中的“二、VS Code远程连接云开发环境(容器)”和“三、搭建CodeArts代码智能体”步骤,完成VS Code远程连接云开发环境(容器)并搭建CodeArts代码智能体。2.4 准备开发环境本案例使用Python 3.7+,需要安装以下依赖:pip install Pillow==10.0.0 requests==2.31.0三、构建智能旅行手账应用3.1 部署项目代码在CodeArts代码智能体对话框中输入如下问题,使智能体自动构建智能旅行手账程序:# 华为云智能旅行手账 # 功能 使用Python语言开发程序,具备以下功能: 1. 读取指定目录中的图片,使用视觉大模型进行图片内容分析,利用文本大模型针对图片内容和图片的地理位置信息、拍摄时间等生成旅游手账。 2. 地理位置信息逆解析采用百度地图API,解析后在该地点找到最近的旅游景点。 3. 旅游手账格式为HTML,语言风格类似小红书的游记。 4. 生成以下单元测试程序,方便调试程序 * 获得图片中地理位置信息并进行逆解析的单元测试程序 * 视觉理解的单元测试程序 * 文本生成的单元测试程序 # 配置 * 数据目录:./data * 视觉模型配置信息 APIKey: <2.1节获得的API Key> model: qwen2.5-vl-72b url: https://api.modelarts-maas.com/v1/chat/completions * 文本大模型配置信息 APIKey: <2.1节获得的API Key> model: DeepSeek-R1 url: https://api.modelarts-maas.com/v1/chat/completions * 百度地图API APIKey: <2.2节获得的API Key> 此时可以看到,智能体开始自动构建任务步骤:生成开发方案、编写代码与安装依赖,全程不需要我们操作。如遇到智能体提问,可根据实际情况回答或确认。注意:这里我们让CodeArts代码智能体生成3个单元测试,因为这样复杂的程序,CodeArts代码智能体很难一次性生成正确,采用单元测试程序可以方便对程序中重要的环节进行单独测试,提高调试效率。3.2 调试和部署项目代码1)项目结构说明项目生成后一般会包括以下模块(由于CodeArts代码智能体每次生成的程序都不完全相同,读者得到的结果可能与此处不是完全相同,但是大致应该差不多):华为云智能旅行手账 ├── config.py # 配置文件 ├── exif_extractor.py # EXIF数据提取 ├── baidu_map_service.py # 百度地图服务 ├── vision_service.py # 视觉模型服务 ├── text_service.py # 文本生成服务 ├── html_generator.py # HTML生成器 ├── main.py # 主程序 ├── requirements.txt # 依赖包 ├── data/ # 图片数据目录 └── tests/ # 单元测试 ├── test_location.py # 位置解析测试 ├── test_vision.py # 视觉理解测试 └── test_text.py # 文本生成测试2)单元测试准备测试图片将旅行照片放入 ./data 目录支持的格式:.jpg, .jpeg, .png, .heic, .webp建议照片包含GPS信息和拍摄时间运行单元测试测试位置解析和百度地图服务:python tests/test_location.py测试视觉理解功能:python tests/test_vision.py测试文本生成功能:python tests/test_text.py3个单元测试程序运行过程中如果出现错误,将错误信息发送给CodeArts代码智能体,它会自动完成修复工作。全部单元测试都通过之后,一般主程序也没有什么问题了。3)运行主程序输入如下命令执行主程序python3 main.py程序将自动:读取 data/ 目录中的所有图片提取每张图片的GPS坐标和拍摄时间调用视觉模型分析图片内容使用百度地图获取地址和景点信息生成小红书风格的旅游文案生成HTML格式的旅行手账4)查看结果生成的HTML文件将保存在当前目录,文件名格式为:travel_journal_YYYYMMDD_HHMMSS.html在浏览器中打开HTML文件,即可查看精美的旅行手账。下面是部分例子:四、释放资源4.1 删除云开发环境进入云开发环境列表,选择环境容器,点击"删除"按钮。在对话框中确认删除,释放计算资源。4.2 停止API服务如果不再需要使用华为云ModelArts API和百度地图API,可以在相应的控制台停止服务,删除API Key,避免产生额外费用。五、扩展资料说明5.1 相关技术文档华为云AI开发平台ModelArts文档百度地图API文档: cid:link_4faq/api?title=webapi/guide/webservice-geocoding-abroadPillow文档:https://pillow.readthedocs.io/Python requests库文档:https://docs.python-requests.org/5.2 扩展功能建议多语言支持:添加英文、日文等多语言旅行手账生成社交媒体分享:一键分享到微博、小红书等平台PDF导出:支持导出为PDF格式地图集成:在HTML中嵌入交互式地图语音讲解:使用TTS技术生成语音讲解附录:常见问题Q1: 图片没有GPS信息怎么办?A: 程序会自动检测GPS信息,如果没有GPS,仍然可以生成旅行手账,只是缺少地理位置信息。Q2: 如何提高生成速度?A: 可以在配置文件中调整 timeout 参数,或者使用更快的模型版本,比如DeepSeek-V3。Q3: 支持哪些图片格式?A: 支持 .jpg, .jpeg, .png, .heic, .webp 等常见图片格式。Q4: 如何自定义旅行手账样式?A: 可以修改 html_generator.py 中的CSS样式,自定义页面布局和颜色。我正在参加【案例共创】【第9期】基于开发者空间-云开发环境(容器)+ CodeArts代码智能体完成应用开发/调试实践 https://bbs.huaweicloud.com/forum/thread-0212720434463368503-1-1.html?fid=557
-
利用公共预置镜像安装vllm-ascend报错,原因是gcc版本过低。
-
在当前并发量=10的情况下,就频繁遇到"当前分组上游负载已饱和,请稍后再试"的问题。如何提升该限额?我主要使用deepseek-v3.2-exp模型
-
因为前期调研不足,在申请AI百校计划之前代码使用的GPU进行运行;但目前代码确实无法在NPU上进行,这种情况怎么办呢
-
想开通专属资源池应该怎么做?
-
随着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工具,告别低效努力。
-
比如这个存储显示是15G的EVS,在启动notebook后当然是可以用的,但是如果不启动notebook(比较贵,节省点),我可以访问EVS上的内容吗?我到EVS产品上看了下,并看不到这个存储,所以目前我无法挂载,比如说挂载到ECS上去访问其内容,所以有办法可以访问到吗?
-
华为开发者空间是为全球开发者打造的专属开发者空间,致力于为每位开发者提供一台云主机、一套开发工具和云上存储空间,汇聚昇腾、鸿蒙、鲲鹏、GaussDB、欧拉等华为各项根技术的开发工具资源,并提供配套案例指导开发者 从开发编码到应用调测,基于华为根技术生态高效便捷的知识学习、技术体验、应用创新。华为开发者空间,激励管理 > 非计划权益提供MaaS商用DeepSeek-R1-64K/DeepSeek-V3-64K大模型Tokens福利,欢迎体验案例,留下您的宝贵意见或建议。
-
驱动的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驾驶行为识别模型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格式实现板侧的高效推理部署。
-
我的训练数据大约是16TB的图像数据和光流真值(.pfm文件)。我目前想要尝试使用该数据训练模型,但是在创建训练作业的时候,并没有选项支持从OBS桶中读取这些数据。我查阅了相关使用指南,在 cid:link_0 中提到,在训练代码中通过OBS SDK实现操作OBS中的数据,并且说明了有400GB的磁盘空间可以直接挂载。但是这一空间还是太少了,不满足我当前的需求。而直接访问obs桶的话,数据读取速度又太慢了,npu长时间处于等待状态。有没有方法可以进一步提高obs中的数据访问速度?或者,能否提供更大的 ssd 存储空间,以支持大规模数据训练?
-
【话题交流】2025年已悄然步入尾声~这一年,大家有哪些悄然生长的收获?华为云的ModelArts Studio(MaaS)让我们更好的调用deepseek等大模型;对象存储,让海量数据存得下、管得好、用得快。
-
1. 目前的操作指南我只能用券购买Notebook或者workflow,是否可以用来购买云空间ECS呢~2.是否可以用券购买算力集群~在申请的时候,目前看无法配置实例
推荐直播
-
华为云码道-玩转OpenClaw,在线养虾2026/03/11 周三 19:00-21:00
刘昱,华为云高级工程师/谈心,华为云技术专家/李海仑,上海圭卓智能科技有限公司CEO
OpenClaw 火爆开发者圈,华为云码道最新推出 Skill ——开发者只需输入一句口令,即可部署一个功能完整的「小龙虾」智能体。直播带你玩转华为云码道,玩转OpenClaw
回顾中 -
华为云码道-AI时代应用开发利器2026/03/18 周三 19:00-20:00
童得力,华为云开发者生态运营总监/姚圣伟,华为云HCDE开发者专家
本次直播由华为专家带你实战应用开发,看华为云码道(CodeArts)代码智能体如何在AI时代让你的创意应用快速落地。更有华为云HCDE开发者专家带你用码道玩转JiuwenClaw,让小艺成为你的AI助理。
回顾中 -
Skill 构建 × 智能创作:基于华为云码道的 AI 内容生产提效方案2026/03/25 周三 19:00-20:00
余伟,华为云软件研发工程师/万邵业(万少),华为云HCDE开发者专家
本次直播带来两大实战:华为云码道 Skill-Creator 手把手搭建专属知识库 Skill;如何用码道提效 OpenClaw 小说文本,打造从大纲到成稿的 AI 原创小说全链路。技术干货 + OPC创作思路,一次讲透!
回顾中
热门标签