人工智能之华为云ModelArts的深度使用体验与AI Gallery应用开发实践丨【华为云AI贺新年】

网友投稿 1071 2022-05-30

一、ModelArts 简介

① 什么是 ModelArts?

ModelArts 是面向 AI 开发者的一站式开发平台,提供海量数据预处理及半自动化标注、大规模分布式训练、自动化模型生成及端-边-云模型按需部署能力,帮助用户快速创建和部署模型,管理全周期 AI 工作流。

“一站式”是指 AI 开发的各个环节,包括数据处理、算法开发、模型训练、模型部署都可以在 ModelArts 上完成。从技术上看,ModelArts 底层支持各种异构计算资源,开发者可以根据需要灵活选择使用,而不需要关心底层的技术。同时,ModelArts 支持 Tensorflow、PyTorch、MXNet 等主流开源的 AI 开发框架,也支持开发者使用自研的算法框架,匹配您的使用习惯。

ModelArts 的理念就是让 AI 开发变得更简单、更方便,它是面向 AI 开发者的一站式开发平台,通过 AI 开发全流程管理助您智能、高效地创建 AI 模型和一键模型部署到云、边、端。

面向不同经验的 AI 开发者,提供便捷易用的使用流程。例如,面向业务开发者,不需关注模型或编码,可使用自动学习流程快速构建 AI 应用;面向 AI 初学者,不需关注模型开发,使用预置算法构建 AI 应用;面向 AI 工程师,提供多种开发环境,多种操作流程和模式,方便开发者编码扩展,快速构建模型及应用。

ModelArts 的 AIGallery 中预置了大量的模型、算法、数据和 Notebook 等资产,供初学者快速上手使用;ModelArts 的自动学习功能,可以帮助用户零代码构建 AI 模型;ModelArts 同时也提供了开发环境,用户可以在云上的 JupyterLab 或者本地 IDE 中编写训练代码,进行 AI 模型开发。

② ModelArts 架构

ModelArts 是一个一站式的开发平台,能够支撑开发者从数据到 AI 应用的全流程开发过程。包含数据处理、模型训练、模型管理、模型部署等操作,并且提供 AI Gallery 功能,能够在市场内与其他开发者分享模型。

ModelArts 支持应用到图像分类、物体检测、视频分析、语音识别、产品推荐、异常检测等多种 AI 应用场景。

ModelArts 架构如下所示:

③ ModelArts 产品优势

一站式:开“箱”即用,涵盖AI开发全流程,包含数据处理、模型开发、训练、管理、部署功能,可灵活使用其中一个或多个功能。

易上手:

提供多种预置模型,开源模型想用就用。

模型超参自动优化,简单快速。

零代码开发,简单操作训练出自己的模型。

支持模型一键部署到云、边、端。

高性能:

自研 MoXing 深度学习框架,提升算法开发效率和训练速度。

优化深度模型推理中 GPU 的利用率,加速云端在线推理。

可生成在 Ascend 芯片上运行的模型,实现高效端边推理。

灵活:

支持多种主流开源框架(TensorFlow、Spark_MLlib、MXNet、Caffe、PyTorch、XGBoost-Sklearn、MindSpore)。

支持主流 GPU 和自研 Ascend 芯片。

支持专属资源独享使用。

支持自定义镜像满足自定义框架及算子需求。

④ ModelArts 功能

繁多的 AI 工具安装配置、数据准备、模型训练慢等是困扰 AI 工程师的诸多难题。为解决这个难题,将一站式的 AI 开发平台(ModelArts)提供给开发者,从数据准备到算法开发、模型训练,最后把模型部署起来,集成到生产环境,一站式完成所有任务。

ModelArts 的特色功能如下所示:

数据治理:支持数据筛选、标注等数据处理,提供数据集版本管理,特别是深度学习的大数据集,让训练结果可重现。

极“快”致“简”模型训练:自研的 MoXing 深度学习框架,更高效更易用,大大提升训练速度。

云边端多场景部署:支持模型部署到多种生产环境,可部署为云端在线推理和批量推理,也可以直接部署到端和边。

自动学习:支持多种自动学习能力,通过“自动学习”训练模型,用户不需编写代码即可完成自动建模、一键部署。

AI Gallery:预置常用算法和常用数据集,支持模型在企业内部共享或者公开共享。

⑤ 如何访问 ModelArts?

云服务平台提供了 Web 化的服务管理平台,即管理控制台和基于 HTTPS 请求的 API(Application programming interface)管理方式。

管理控制台方式:

ModelArts 提供了简洁易用的管理控制台,包含自动学习、数据管理、开发环境、模型训练、AI 应用管理、部署上线、AI Gallery 等功能,您可以在管理控制台端到端完成您的 AI 开发。

使用 ModelArts 管理控制台,需先注册华为云。如果您已注册华为云,可从主页选择“EI 企业智能 > 人工智能>AI 基础平台 > AI 开发平台 ModelArts”直接登录管理控制台。

SDK 方式:

如果需要将 ModelArts 集成到第三方系统,用于二次开发,可选择调用 SDK 方式完成目的。ModelArts 的 SDK 是对 ModelArts 服务提供的 REST API 进行的 Python 封装,简化用户的开发工作。

除此之外,在管理控制台的 Notebook 中编写代码时,也可直接调用 ModelArts SDK。

API 方式:如果您需要将 ModelArts 集成到第三方系统,用于二次开发,请使用 API 方式访问 ModelArts。

二、环境配置和准备工作

① 注册华为云帐号

进入华为云官网,单击页面右上角的“注册”:

注册华为帐号:

输入手机号:

请使用中国大陆的手机号码;

一个手机号可以注册 3 个华为帐号,如帐号数量已达到 3 个,将不支持使用该手机号注册新的华为帐号。

获取并输入手机收到的验证码;

设置帐号密码:

至少包含 8 个字符;

包含字母和数字,不能包含空格;

单击“注册”。

查看授权信息,确认无误后,单击“授权并登录”。

勾选服务条款, 单击“开通”,系统提示开通成功。

② 登录华为云

华为帐号登录:

通过华为云 App 扫码登录方法如下:

华为云帐号登录:

其他帐号登录:

③ 配置访问授权(全局配置)

ModelArts 使用过程中涉及到 OBS、SWR、IEF 等服务交互,需要用户配置委托授权,允许 Modelarts 访问这些依赖服务。若没有授权,ModelArts 的部分功能将不能正常使用。

使用华为云帐号登录ModelArts管理控制台,在左侧导航栏单击“全局配置”,进入“全局配置”页面,单击“添加授权”:

在弹出的“访问授权”窗口中,选择需要授权的“用户名”及其对应的“委托”(默认 modelarts_agency 即可),勾选“我已经详细阅读并同意《ModelArts 服务声明》”,然后单击“同意授权”,如下所示,使用委托授权:

用户名:在右侧下拉框中选择帐号,默认选择“所有用户”,该选项表示会给下拉框中所有子用户包含当前帐号进行授权,在下拉框中,将显示当前帐号下的所有 IAM 用户,您也可以选择为其中某一IAM用户配置委托;

委托:

自动创建(推荐使用此方式):默认 modelarts_agency 即可,若暂无可用委托,此时您可以单击“自动创建”,系统自动为用户名中选择的用户创建一个可用的委托,自动创建的委托;

选择已有委托:如果您已在 IAM 中创建委托,则可以在下拉框中选择一个可用的委托为上述选择的用户授权;

到 IAM 手动创建:如果自动创建的委托无法满足您的需求,需要为某一用户配置更多或更少的权限,也可单击“到 IAM 手动创建”,跳转至 IAM 管理控制台,重新创建一个委托。

完成配置后,在全局配置列表,可查看到某一帐号或 IAM 用户的委托配置信息:

自动创建的委托详细信息:

删除授权:

删除某一用户的授权:在“全局配置”页面,展示当前帐号下为其 IAM 用户配置的授权列表,针对某一用户,您可以单击“操作”列的“删除”,删除此用户的授权,删除生效后,此用户将无法继续使用 ModelArts 的相关功能;

批量清空所有授权:在“全局配置”页面,单击授权列表上方的“清空授权”,可删除当前帐号下的所有授权,删除生效后,此帐号及其所有 IAM 子用户将无法继续使用 ModelArts 的相关功能:

③ 创建 OBS 桶

ModelArts 使用对象存储服务(Object Storage Service,简称 OBS)进行数据存储以及模型的备份和快照,实现安全、高可靠和低成本的存储需求。因此,建议您在使用 ModelArts 之前先创建一个 OBS 桶,然后在 OBS 桶中创建文件夹用于存放数据。

登录OBS管理控制台,在桶列表页面右上角单击“创建桶”,创建 OBS 桶。例如,创建名称为“c-flowers”的 OBS 桶:

在桶列表页面,单击桶名称,进入该桶的概览页面:

单击左侧导航的“对象”,在对象页面单击新建文件夹,创建 OBS 文件夹。例如,在已创建的 OBS 桶“c-flowers”中新建一个文件夹“flowers”:

三、开发工具

① ModelArts Notebook 云上云下,无缝协同

代码开发与调测,云化 JupyterLab 使用,本地 IDE+ModelArts 插件远程开发能力,贴近开发人员使用习惯;

云上开发环境,包含AI计算资源,云上存储,预置 AI 引擎;

运行环境自定义,将开发环境直接保存成为镜像,供训练、推理使用;

ModelArts CodeLab(JupyterLab),让 AI 探索&教学更简单;

云原生Notebook,案例内容秒级接入与分享;

Serverless 化实例管理,资源自动回收;

免费算力,规格按需切换。

② 远程开发 - 支持本地 IDE 远程访问 Notebook

新版 Notebook 提供了远程开发功能,通过开启 SSH 连接,用户本地 IDE 可以远程连接到 ModelArts 的 Notebook 开发环境中,调试和运行代码。

对于使用本地 IDE 的开发者,由于本地资源限制,运行和调试环境大多使用团队公共搭建的 CPU 或 GPU 服务器,并且是多人共用,这带来一定的环境搭建和维护成本。

而 ModelArts 的 Notebook 的优势是即开即用,它预先装好了不同的框架,并且提供了非常多的可选规格,用户可以独占一个容器环境,不受其他人的干扰。只需简单配置,用户即可通过本地 IDE 连接到该环境进行运行和调试。

本地 IDE 远程访问 Notebook 开发环境:

ModelArts 的 Notebook 可以视作是本地 PC 的延伸,均视作本地开发环境,其读取数据、训练、保存文件等操作与常规的本地训练一致。

对于习惯使用本地 IDE 的开发者,使用远程开发方式,不影响用户的编码习惯,并且可以方便快捷的使用云上的 Notebook 开发环境。

本地 IDE 当前支持 VSCode、PyCharm,还有专门的插件 PyCharm ToolKit 和 VSCode ToolKit,更方便将云上资源作为本地的一个扩展。

③ 预置镜像 - 即开即用,优化配置,支持主流 AI 引擎

每个镜像预置的 AI 引擎和版本是固定的,在创建 Notebook 实例时明确 AI 引擎和版本,包括适配的芯片。

为了简化操作,ModelArts 的新版 Notebook,同一个 Notebook 实例中不支持不同引擎之间的切换。

不同 Region 支持的 AI 引擎不一样,请以控制台实际界面为准。

④ 提供在线的交互式开发调试工具 JupyterLab

ModelArts 集成了基于开源的 JupyterLab,可为您提供在线的交互式开发调试工具。您无需关注安装配置,在 ModelArts 管理控制台直接使用 Notebook,编写和调测模型训练代码,然后基于该代码进行模型的训练。

JupyterLab 是一个交互式的开发环境,是 Jupyter Notebook 的下一代产品,可以使用它编写 Notebook、操作终端、编辑 MarkDown 文本、打开交互模式、查看 csv 文件及图片等功能。

⑤ 管理 Notebook 实例

创建 Notebook 实例:

登录 ModelArts 管理控制台,在左侧导航栏中选择“开发环境 > Notebook”,进入“Notebook”新版管理页面:

单击“创建”,进入“创建Notebook”页面,填写 Notebook 的基本信息,包含名称、描述、是否自动停止:

填写 Notebook 详细参数,如工作环境、资源规格等:

参数填写完成后,单击“立即创建”进行规格确认。

参数确认无误后,单击“提交”,完成 Notebook 的创建操作,进入 Notebook 列表,正在创建中的 Notebook 状态为“创建中”,创建过程需要几分钟,请耐心等待。当 Notebook 状态变为“运行中”时,表示 Notebook 已创建并启动完成。

在 Notebook 列表,单击实例名称,进入实例详情页,查看 Notebook 实例配置信息,包括Notebook实例名称、规格、状态、镜像类型、用户ID、存储路径、存储容量、Notebook地址和端口号、允许远程访问的白名单IP地址、认证密钥文件名。

在白名单右侧单击修改,可以修改允许远程访问的白名单 IP 地址,单击“添加数据存储”,可以挂载 OBS 并行文件系统,方便读取数据。

启动/停止/删除实例:

启动/停止实例

由于运行中的 Notebook 将一直耗费资源,您可以通过停止操作,停止资源消耗。对于停止状态的 Notebook,可通过启动操作重新使用 Notebook。

登录 ModelArts 管理控制台,在左侧菜单栏中选择“开发环境 > Notebook”,进入新版 Notebook 管理页面。

执行如下操作启动或停止 Notebook:

启动 Notebook:单击“操作”列的“启动”。只有处于“停止”状态的 Notebook 可以执行启动操作。

停止 Notebook:单击“操作”列的“停止”。只有处于“运行中”状态的 Notebook 可以执行停止操作。

删除实例:

针对不再使用的 Notebook 实例,可以删除以释放资源。

登录 ModelArts 管理控制台,在左侧菜单栏中选择“开发环境>Notebook”,进入新版 Notebook 管理页面。

在 Notebook 列表中,单击操作列的“删除”,在弹出的确认对话框中,确认信息无误,然后单击“确定”,完成删除操作。

变更 Notebook 实例运行规格:

登录 ModelArts 管理控制台,在左侧菜单栏中选择“开发环境 > Notebook”,进入新版 Notebook 管理页面。

在 Notebook 列表,单击某个 Notebook 实例规格栏的,在下拉框中选择对应规格资源。

⑥ 安装 VSCode 软件及插件

下载并安装 VSCode:

Windows 用户直接单击此处下载:VSCode;

其他系统用户的-: VSCode。

用户本地 PC 或服务器的操作系统中建议先安装 Python 环境,详见VSCode官方指导。

设置禁止自动升级 VSCode 版本:

执行 Ctrl+Shift+P;

搜 Open Settings(JSON)

在配置文件settings.json中添加如下参数 “update.mode”: “manual”。

设置禁止自动升级 VSCode 的插件版本:

执行 Ctrl+Shift+P;

搜 Open Settings(JSON);

在配置文件 settings.json 中添加如下参数:“extensions.autoUpdate”: false

注意:如果不禁止 VSCode 自动更新,关闭打开后会默认更新至最新版 VSCode。

VSCode 的插件工具包 VSCode-ToolKit 集成在 ModelArts 管理控制台中,请先下载并安装 VSCode 插件工具包。

在本地的 VSCode 开发环境中,如下图所示,选择本地的 VSCode 插件并单击“安装”:

安装过程预计1~2分钟,请耐心等待。

安装完成后,系统右下角提示安装完成,导航左侧出现 ModelArts 图标和 SSH 远程连接图标,表示 VSCode 插件安装完成:

在本地的 VSCode 开发环境中,单击 ModelArts 图标,单击“User Settings”,配置用户登录信息:

输入如下用户登录信息,单击“登录”:

Name:自定义用户名,仅用于VSCode页面展示,不与任何华为云用户关联;

AK:在华为云“帐号中心 > 我的凭证 > 访问密钥”中创建访问密钥,获取 AK;

SK:在华为云“帐号中心 > 我的凭证 > 访问密钥”中创建访问密钥,获取SK。

选择区域:例如“上海一”,此处的区域必须和远程连接的 Notebook 在同一个区域,否则插件无法显示需要连接的实例列表。

登录成功后显示 Notebook 实例列表。

四、第一个 AI 应用

① 创建应用工程

使用 VSCode 连接到云上开发环境后,需要先创建应用工程。

单击 VSCode 左侧导航栏的ModelArts图标,单击“Create Project”创建工程:

输入项目名称,不输入直接按下回车则默认项目名称为“my_project”:

输入项目路径,不输入直接按回车键则会创建在默认路径下:

创建完成后右下角会弹出信息,单击“是”打开工程:

工程打开后,VSCode 弹出的确认信息框选择“Yes”选项:

此时左侧 Explorer 栏可以看到创建好的工程结构:

工程中的目录作用介绍如下:

manage.py:工程套件命令行入口;

src:工程开发代码主目录,可包含多个 AI 应用,每个AI应用单独为一个目录,例如traffic;

.vscode:vscode 配置文件,包含工程设置和运行的配置文件

tools:项目构建依赖工具;

test:测试代码及测试数据:该工程包含已经配置好的 CMakeList 文件,开发者在 src 目录下进行 AI 应用开发后,不修改或少量修改 CMakeList 即可直接编译运行,开发者也可以将该工程目录直接上传至自己的 git 代码仓库。

② 应用样例:视频车辆检测

工程的“src/traffic”目录下预置了视频车辆检测的应用样例,它包含“flowunit”和“graph”两个目录,分别代表功能单元和图。

在基于 ModelBox 框架的AI应用开发中,AI 应用是由图构成的。其中,功能单元可以理解为一段相对独立的数据处理功能,所有功能单元编排连线后构成图,代表一个 AI 应用,在 ModelBox 中的呈现形式为 toml 文件,在该样例中位于如下路径:

src/traffic/graph/vehicle_detection/vehicle_detection.toml

该 toml 文件代表的数据处理流程如下:

流程图中的各个功能单元的实现,一部分是直接使用 ModelBox 框架预置的功能单元,预置功能单元位于“/usr/local/lib64/”目录下,以二进制so文件的形式提供;另一部分是自己开发的功能单元,位于“src/traffic/flowunit”目录下:

每一个功能单元中即为该单元模块的实现代码,功能单元有三种类型,分别为“cpp”、“python”和“infer”,即c++ 功能单元、python 功能单元以及推理功能单元如下所示是一个 C++ 功能单元的样例,Process 函数为数据处理主函数:

③ 运行 AI 应用

首先下载并本地安装PotPlayer 播放器,用于播放 AI 应用运行结果视频流。

在 VSCode 中配置端口转发, 操作方法:执行“Ctrl+Shift+P”,输入“Forward a Port”,输入“1554”端口。

编译运行 AI 应用:

在“.vscode/task.json”中配置编译的工程名称,这里预置为样例目录名称“traffic”:

在“.vscode/launch.json”配置运行的图路径,预置为样例:

在“.vscode/launch.json”配置日志级别,默认为“debug”:

单击“Run>Run Without Debugging”或者使用快捷键 Ctrl+F5 运行程序:

查看运行结果:命令执行后,会自动进行项目的编译构建和运行,单击“Terminal”控制台,可以查看实时运行日志:

运行时,modelbox 框架会先加载和解析图,然后运行视频流推理,运行视频推理时日志会很快速的打印,此时在浏览器中输入如下地址可打开 rtsp 流播放:

rtsp://localhost:1554/video

视频播放推理结果:

如果无视频播输出可能是播放早了或者已经播放完了,可以再运行一次图,待控制台开始快速输出大量推理日志后,在浏览器输入地址查看结果。如果运行图时看到如下日志,代表当前样例使用的模型和开发环境带的 GPU 类型不符,例如创建开发环境时选择的 V100 GPU,样例的 TensorRT 模型是适配T4 GPU,则会报如下错误:

此时需要重新将 TensorRT 模型转换成当前开发环境的模型,或者重新创建和模型对应的开发环境。

结束运行:在 VSCode 上方单击停止按钮,或者在 Terminal 命令行窗口执行“Ctrl + c”,即可结束运行:

五、自动学习“声音分类”实例分析

① 声音分类的数据准备

音频只支持 16bit 的 WAV 格式,支持 WAV 的所有子格式;

单条音频时长应大于 1s,大小不能超过 4MB。

适当增加训练数据,会提升模型的精度,声音分类建议每类音频至少 50 条,每类音频总时长至少 5 分钟;

建议训练数据和真实识别场景的声音保持一致并且每类的音频尽量覆盖真实环境的所有场景;

训练集的数据质量对于模型的精度有很大影响,建议训练集音频的采样率和采样精度保持一致;

标注质量对于最终的模型精度有极大的影响,标注过程中尽量不要出现误标情况。

② 创建声音分类的项目

登录 ModelArts 管理控制台,在左侧导航栏单击“自动学习”,进入“自动学习”页面:

在您需要的自动学习项目列表中,单击“创建项目”,进入创建自动学习项目界面:

在创建自动学习项目页面,计费模式默认“按需计费”,设置相应参数,然后单击“创建项目”,待页面提示“创建项目成功”完成创建,创建成功后页面自动跳转到“数据标注”,也可以在“自动学习”页面查看创建成功的项目,单击项目名称进入“数据标注”。

③ 标注数据

音频标注:

选择未标注音频,在“数据标注”页面单击“未标注”页签,此页面展示所有未标注的音频数据,依次单击选中待标注的音频,或勾选“选择当前页”选中该页面所有音频,在页面右侧进行标注:

添加标注:先对音频进行播放识别,然后选中音频文件,在右侧“标签”区域,输入“标签名”或从下拉列表中选择已添加的标签,同时可在下拉菜单中选择标签“快捷键”,单击“确定”,完成选中音频的标注操作:

当目录中所有音频都完成标注后,可以在“已标注”页签下查看已完成标注的音频,或者通过右侧的“全部标签”列表,了解当前已完成的标签名称和标签数量。

同步或添加音频:

在“自动学习”页面,单击项目名称,进入自动学习“数据标注”页面,声音分类项目创建时,音频来源有两种,通过本地添加或同步 OBS 中的数据;

添加音频:可以将本地音频快速添加到 ModelArts,同时自动上传至创建项目时所选择的 OBS 路径中,单击“添加音频”,在弹出的对话框中单击“添加音频”并添加(仅支持 16bit WAV 格式音频文件,单个音频文件不能超过 4MB,且单次上传的音频文件总大小不能超过 8MB);

数据源同步:为了快速获取用户 OBS 桶中最新音频,单击“数据源同步”,快速将通过 OBS 上传的音频数据添加到 ModelArts。

删除音频:可以依次单击选中音频,或勾选“选择当前页”选中该页面所有音频进行删除操作(所有的删除操作均不可恢复)。

修改标注:

当数据完成标注后,还可以进入“已标注”页签,对已标注的数据进行修改;

基于音频修改:在数据集详情页,单击“已标注”页签,然后在音频列表中选中待修改的音频(选择一个或多个),在右侧标签信息区域中对标签进行修改。

修改标签:在“选中文件标签”区域中,单击操作列的编辑图标,然后在文本框中输入正确的标签名,然后单击确定图标完成修改。

删除标签:在“选中文件标签”区域中,单击操作列的删除图标,在弹出的对话框中单击“确定”删除该标签。

基于标签修改:在数据标注页面,单击“已标注”页签,在音频列表右侧,显示全部标签的信息。

修改标签:单击操作列的编辑图标,在弹出的对话框中输入修改后的标签名、选择修改后的快捷键,然后单击“确定”完成修改。修改后,之前添加了此标签的音频,都将被标注为新的标签名称。

删除标签:单击操作列的删除图标,在弹出的对话框中,根据提示选择删除对象,然后单击“确定”。

④ 模型训练

模型训练的目的是得到满足需求的声音分类模型,由于用于训练的音频,至少有 2 种以上的分类,每种分类的音频数不少于 5 个,因此在发布训练之前,请确保已标注的音频符合要求,否则下方“开始训练”按钮会处于灰色状态。

人工智能之华为云ModelArts的深度使用体验与AI Gallery应用开发实践丨【华为云AI贺新年】

在自动学习页面,单击创建成功的项目名称,进入“数据标注”页面,完成数据标注:

在“数据标注”页面,单击右上角“开始训练”,然后在弹出的“训练设置”对话框中,填写相关参数,然后单击“确定”,开始进行模型训练:

训练参数设置完成后,单击“下一步”进入配置页,确认规格后单击“提交”进行模型的自动训练,训练时间相对较长,建议您耐心等待。如果关闭或退出此页面,系统仍然在执行训练操作。

在“模型训练”页签中,待训练状态由“运行中”变为“已完成”,即完成模型的自动训练。

训练完成后,可以在界面中查看训练详情,如“准确率”、“评估结果”、“训练参数”、“分类统计表”等。

【华为云AI贺新年】有奖征文火热进行中:https://bbs.huaweicloud.com/blogs/325842

AI AI开发平台ModelArts

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:【第12篇】Sparse R-CNN: End-to-End Object Detection with Learnable P
下一篇:ThreadLocal
相关文章