端到端图像分类算法开发实战:从 Arm 虚拟硬件到 Grove Vision AI Module V2 物理硬件

news2024/11/24 7:03:51
端到端图像分类算法开发实战:从 Arm 虚拟硬件到 Grove Vision AI Module V2 物理硬件

文章目录

  • 1. 写在前面
  • 2. 产品简介
    • 2.1 Arm 虚拟硬件镜像产品简介
    • 2.2 Grove - Vision AI V2 产品简介
  • 3. 实验前准备
  • 4. 实验步骤
    • 4.1 模型训练
    • 4.2 Arm 虚拟硬件镜像上的部署测试
      • 4.2.1 克隆实验代码
      • 4.2.2 配置环境
      • 4.2.3 应用构建与测试
      • 4.2.4 部署效果对比
    • 4.3 Grove - Vision AI V2 上的部署测试
      • 4.3.1 配置开发环境
      • 4.3.2 连接开发板
      • 4.3.3 构建编译工程
      • 4.3.4 生成烧录固件
      • 4.3.5 查看运行结果
  • 5. 实验感悟
  • 6. 参考文档


本实验过程中所显示的优惠价格及费用报销等相关信息仅在【Arm AI 开发体验创造营】体验活动过程中有效,逾期无效,请根据实时价格自行购买和体验。
同时,感谢本次体验活动 Arm 导师 Liliya 对于本实验手册的共创与指导。
详见活动地址:https://marketing.csdn.net/p/a11ba7c4ee98e52253c8608a085424be

1. 写在前面

传统的嵌入式开发流程中,往往需要用到物理开发板才能进行相应的软件开发。但是,对于诸如:物理开发板运送途中、缺货或想要尝试一些新推出的处理器产品(例如:Arm® Cortex®-M55,Cortex-M85, Ethos™-U 系列 NPU 等)但市场上硬件资源较为稀缺,或需要等待较长的时间(短至几个月,长至几年)才能拿到相应的物理开发板的情况下,是否有办法在相应的处理器平台上早早地进行软件开发呢?没有新型处理器平台的开发经验,又希望规避高昂的试错成本,有没有什么好的开发方式呢?

答案自然是有的,这就是我们本期博客要给大家介绍的一个非常强大的开发工具:Arm 虚拟硬件(Arm Virtual Hardware)。Arm 虚拟硬件可以极大地助力端侧人工智能应用的开发,让传统的 AI/ML 开发者和数据科学家们都可以轻松地上手端侧嵌入式设备上的 AI 应用开发。

本项目案例正是基于此背景。在基于 Cortex-M55 处理器 IP 的芯片和物理开发板还未在市场流通时,我们首先使用 Arm 虚拟硬件中含有 Cortex-M55 处理器的参考设计系统 Corstone-300 的虚拟硬件模型完成了基于百度飞桨 PaddlePaddle 深度学习框架的图像分类应用的开发,验证了整个软件技术栈的可行性。约两年后的今天,在 seeed studio 发布的搭载 Himax 的 WiseEye2 AI 处理器芯片(内含 Cortex-M55 处理器 IP)的 Grove Vision AI Module V2 开发板大规模上市后,我们快速轻松地完成了物理开发板上图像分类应用的部署与调试。

2. 产品简介

2.1 Arm 虚拟硬件镜像产品简介

Arm 虚拟硬件(Arm Virtual Hardware)提供了一个 Ubuntu Linux 镜像,包括用于物联网、机器学习和嵌入式应用程序的 Arm 开发工具:例如,Arm 编译器、 FVP 模型和其他针对 Cortex-M 系列处理器的开发工具帮助开发者快速入门。Arm 虚拟硬件限时免费提供用于评估用途,例如,评估 CI/CD、MLOps 和 DevOps 工作流中的自动化测试工作流等。订阅访问和使用此版本的 Arm 虚拟硬件,您需同意产品最终用户许可协议中与免费测试版许可相关的条款和协议。

Arm 虚拟硬件产品的技术概览示意图如下所示。开发者也可访问 Arm 虚拟硬件产品介绍页和产品技术文档了解更多关于 Arm 虚拟硬件产品知识。


Arm 虚拟硬件产品概览
图2-1. Arm 虚拟硬件产品概览

2.2 Grove - Vision AI V2 产品简介

Grove - Vision AI 模块 V2 人工智能模块是一个基于单片机的视觉 AI 模块,由 Arm Cortex-M55 和 Ethos-U55 驱动。它支持 TensorFlow 和 PyTorch 框架,并与 Arduino IDE 兼容。通过 SenseCraft AI 算法平台,可以将训练好的 ML 模型部署到传感器上,而不需要编码。它具有标准的 CSI 接口、车载数字麦克风和 SD 卡插槽,非常适合各种嵌入式 AI 视觉项目。该模块具有以下特点:

  • 强大的 AI 处理能力:搭载 WiseEye2 HX6538 处理器,配备双核 Arm Cortex-M55 和集成的 Arm Ethos-U55 神经网络单元。
  • 多样化的 AI 模型支持:轻松部署 SenseCraft AI 提供的现成或自定义 AI 模型,包括 Mobilenet V1、V2、Efficientnet-lite、Yolo v5 & v8 等。支持 TensorFlow 和 PyTorch 框架。
  • 丰富的外设设备:包括 PDM 麦克风、SD 卡槽、Type-C、Grove 接口等其他外设,功能更加丰富。
  • 完全开源:所有代码、设计文件和原理图均可进行修改和使用。
  • 更多关于该物理开发板产品介绍和使用方法,可以参考 seeed studio 的官方 wiki 文档平台。

需注意,本项目实验并不直接使用 SenseCraft AI 算法平台进行图像分类应用的开发。由于所使用的图像分类模型的框架的特殊性(基于 PaddlePaddle 深度学习框架),因此本项目将使用 Himax 公司提供的 SDK 套件对该开发板进行自定义开发,该 SDK 目前可以通过 GitHub 仓库获取和使用。


Grove - Vision AI Module V2
图2-2. Grove - Vision AI Module V2 开发板

3. 实验前准备

1. 订阅 Arm 虚拟硬件镜像的百度智能云云服务器 BCC 实例

  • 访问 Arm 虚拟硬件产品介绍网站或 Arm 公司 官网了解 Arm 虚拟硬件产品信息。微信搜索并关注 “Arm 社区” 微信公众号(二维码见文末),回复 “AVH” 和 “AI” 即可获取更全面的关于 Arm 虚拟硬件产品和 Arm AI 技术的最新资讯和技术指南博客。
  • 订阅使用 Arm 虚拟硬件镜像的百度智能云云服务器 BCC 实例,可以参考【帮助文档】 完成订阅流程。
  • 登录所购买的云服务器 BCC 实例并熟悉 Arm 虚拟硬件镜像环境。

2. 购买 Grove - Vision AI V2 物理开发板

  • 订购 Grove - Vision AI V2 物理开发板及相关开发调试配件(例如:CMSIS-DAP 兼容的高速仿真器、摄像头模块等)。推荐通过官方销售渠道或 seeedstudio 淘宝企业店铺购买。CMSIS-DAP 仿真器可参考文末购买链接。
  • 熟悉 Grove - Vision AI V2 物理开发板的组件,安装相应驱动并根据【官方入门教程】快速测试开发板的功能,确认是否有异常。
  • 了解【官方文档平台】提供的开发板的相关资源。

4. 实验步骤

本项目实验将展示一个端到端图像分类应用开发的案例。包括:从飞桨模型的训练到使用 Arm 虚拟硬件上进行部署测试,最终再将整个应用完整地部署到物理开发板 Grove - Vision AI V2上,完整地展示了如何通过 Arm 以及 Arm 的生态系统合作伙伴的解决方案来实现高效的 MLOps 工作流

4.1 模型训练

本应用中图像分类模型的开发将使用 Arm AI 生态系统合作伙伴百度飞桨 PaddlePaddle 提供的 PaddleClas 套件来进行模型的训练。飞桨图像识别套件 PaddleClas 是飞桨为工业界和学术界所准备的一个图像识别和图像分类任务的工具集,助力使用者训练出更好的视觉模型和应用落地。更多关于如何使用 PaddleClas 套件训练自定义的模型可参考其 GitHub 仓库中的帮助文档,本文不做过多陈述。

AI Studio 是基于百度深度学习平台飞桨的人工智能学习与实训社区,提供在线编程环境、免费GPU算力、海量开源算法和开放数据,帮助开发者快速创建和部署模型。为了便于开发者快速体验本案例,作者在 AI Studio 创建了项目《基于 TVM 在 Cortex-M55 系列 MCU 上部署 PaddleClas 模型》,提供了完整的模型训练步骤。开发者可以借助 AI Studio 提供的 GPU 算力资源(每日可领取免费时长)运行本项目,进行飞桨模型训练。

需要注意的是,模型训练的过程本身即具有一定随机性,因此即使在完全相同的训练配置(同一个训练配置文件)的情况下,每次所训练出的模型在推理结果的精度上也会存在一定的差异。在下一章节中提供的代码仓库中,我们提供了两个模型 BaseMobileNetV1 和 BaseMobileNetV2 即为同一配置文件下,两次独立的训练过程获得的模型文件。借助 Arm 提供的 Arm 虚拟硬件平台,我们可以快速地在众多模型中筛选出性能效果较优的模型,并将其最终部署到物理开发板上。整个筛选过程不仅可以自动化、并行化,也节省了物理开发板上的刷机时间,降低了对物理硬件的损耗,大大地加速了端侧人工智能应用开发的流程。

4.2 Arm 虚拟硬件镜像上的部署测试

4.2.1 克隆实验代码

参考第三章中的内容登录所购买的云服务器 BCC 实例并熟悉 Arm 虚拟硬件镜像环境后,参考以下代码将实验代码克隆(下载)至 BCC 服务器实例中。

git clone https://github.com/ArmDeveloperEcosystem/Paddle-examples-for-AVH.git
cd Paddle-examples-for-AVH/
git checkout EW24

4.2.2 配置环境

  • 更新 CMSIS Toolbox 工具。

    sudo bash scripts/config_cmsis_toolbox.sh
    
  • 安装项目依赖的 Python 软件包。因网络问题,安装过程若出现报错,可多次运行直至全部成功安装。

    sudo bash scripts/config_tvm.sh
    
  • 【可选】手动安装项目依赖的 CMSIS Packs 软件包。请注意,此步骤可跳过,若跳过后则在构建工程的工程中会自动安装。只是因网络环境和带宽等问题的影响,可能出现下载速度较慢的情况,耐心等待即可。若想比较快速的安装,则可以参考下面步骤进行手动安装。

    cd object_classification
    csolution list packs object_classification.csolution.yml -m
    

    出现提示信息可能如下所示。可以忽略前几行的 warning 提示,模型编译操作完成之后相应路径和文件会出现。

    /home/ubuntu/Paddle-examples-for-AVH/object_classification/object_classification.cproject.yml:60:17 - warning csolution: path 'cls/codegen/host/src/cls_lib0.c' was not found
    /home/ubuntu/Paddle-examples-for-AVH/object_classification/object_classification.cproject.yml:61:17 - warning csolution: path 'cls/codegen/host/src/cls_lib1.c' was not found
    /home/ubuntu/Paddle-examples-for-AVH/object_classification/object_classification.cproject.yml:62:17 - warning csolution: path 'cls/runtime/src/runtime/crt/common/crt_backend_api.c' was not found
    /home/ubuntu/Paddle-examples-for-AVH/object_classification/object_classification.cproject.yml:16:11 - warning csolution: path 'cls/codegen/host/include' was not found
    /home/ubuntu/Paddle-examples-for-AVH/object_classification/object_classification.cproject.yml:17:11 - warning csolution: path 'cls/runtime/include' was not found
    ARM::CMSIS@5.9.0
    ARM::CMSIS-DSP@1.15.0
    ARM::CMSIS-NN@4.1.0
    ARM::V2M_MPS3_SSE_300_BSP@1.4.0
    ARM::V2M_MPS3_SSE_310_BSP@1.3.0
    Keil::ARM_Compiler@1.7.2
    

    因此我们需要安装的 CMSIS Packs 软件包即为如下 6 个。

    ARM::CMSIS@5.9.0
    ARM::CMSIS-DSP@1.15.0
    ARM::CMSIS-NN@4.1.0
    ARM::V2M_MPS3_SSE_300_BSP@1.4.0
    ARM::V2M_MPS3_SSE_310_BSP@1.3.0
    Keil::ARM_Compiler@1.7.2
    

    通过 CMSIS Packs 软件包下载网址逐个手动下载,并上传至所创建的 Arm 虚拟硬件镜像中。例如:使用 scp -r ARM.CMSIS.5.9.0.pack ubuntu@ip:/home/ubuntu 命令将该软件包从主机上上传至云端的 Arm 虚拟硬件镜像中的目录 /home/ubuntu 下面。然后切换至该目录下后使用 cpackget add ARM.CMSIS.5.9.0.pack 命令完成安装。一个简单的安装示例如下所示:

    ubuntu@ip:~$ cpackget add ARM.CMSIS.5.9.0.pack
    I: Adding pack "ARM.CMSIS.5.9.0.pack"
    I: Extracting files to /home/ubuntu/packs/ARM/CMSIS/5.9.0...
    I: 100% |████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████  | (8642/8642, 8219 it/s)    
    

    参考下面命令逐个将缺失的软件包安装完毕(需先将相应的 CMSIS Packs 软件包提前下载并上传至所创建的 Arm 虚拟硬件镜像中)。

    cpackget add ARM.CMSIS.5.9.0.pack
    cpackget add ARM.CMSIS-DSP.1.15.0.pack
    cpackget add ARM.CMSIS-NN.4.1.0.pack
    cpackget add ARM.V2M_MPS3_SSE_300_BSP.1.4.0.pack
    cpackget add ARM.V2M_MPS3_SSE_310_BSP.1.3.0.pack
    cpackget add Keil.ARM_Compiler.1.7.2.pack
    

4.2.3 应用构建与测试

运行以下命令我们可以测试将前一章节中训练获得的 BaseMobileNetV1 模型部署在含有 Cortex-M55 处理器的 Corstone-300 虚拟硬件 FVP 模型上的效果。需注意,若前一章节未手动安装 CMSIS Packs 软件包,第一次运行(第一次)此脚本可能花较长时间自动下载和安装相应的软件包,耐心等待即可。

bash run_demo.sh --model BaseMobileNetV1 --device cortex-m55

run_demo.sh 脚本中主要包括里以下几个步骤的处理(其余命令的说明请参考 run_demo.sh 脚本的注释):

  • line 80-112:飞桨模型的转换与编译。
  • line 120-124:输入输出数据及标签预处理。
  • line 126-138:使用 cbuild 工具构建该图像分类应用。
  • line 141-151:调用 Corstone-300 的 FVP 模型 FVP_Corstone_SSE-300 执行所构建好的应用获取部署效果的测试结果。
    具体命令如下:
    FVP_Corstone_SSE-300  -C cpu0.CFGDTCMSZ=15 \
             -C cpu0.CFGITCMSZ=15 \
             -C mps3_board.uart0.out_file=\"-\" \
             -C mps3_board.uart0.shutdown_tag=\"EXITTHESIM\" \
             -C mps3_board.visualisation.disable-visualisation=1 \
             -C mps3_board.telnetterminal0.start_telnet=0 \
             -C mps3_board.telnetterminal1.start_telnet=0 \
             -C mps3_board.telnetterminal2.start_telnet=0 \
             -C mps3_board.telnetterminal5.start_telnet=0 \
             "out/object_classification/PaddleClas$RUN_DEVICE_NAME/object_classification.axf" \
             --stat
    
    其中,
    - FVP_Corstone_SSE-300 即为所使用的含有 Cortex-M55 处理器平台的 FVP 模型。
    - object_classification.axf 为所构建的图像分类应用的可执行文件。
    - --stat 指定打印运行信息。
    - -C 指定 FVP 模型运行的具体参数。

同样地,运行以下命令可以将前文所述的 BaseMobileNetV2 模型部署在含有 Cortex-M55 处理器的 Corstone-300 虚拟硬件 FVP 模型上。

bash run_demo.sh --model BaseMobileNetV2 --device cortex-m55

4.2.4 部署效果对比

如下图所示,经过测试结果比较,不难发现模型 BaseMobileNetV2 的推理性能优于 BaseMobileNetV1。因此,我们仅需要将 BaseMobileNetV2 模型导出并作为我们最终在物理开发板上部署的端侧图像分类模型即可。


BaseMobileNetV1(左侧) 和 BaseMobileNetV2 (右侧)运行效果对比示意图
图4-1. BaseMobileNetV1(左侧) 和 BaseMobileNetV2 (右侧)运行效果对比示意图

4.3 Grove - Vision AI V2 上的部署测试

4.3.1 配置开发环境

本实验项目在 Windows 系统环境下使用 Keil MDK μVision 集成开发环境进行开发(可参考 Himax 提供的帮助文档 How to run WE2 Keil example?)。值得一提的是,因为本项目符合 Open-CMSIS-Pack 工程标准,因此开发者也可以使用 Visual Studio Code 在 Mac,Linux,Windows 等多种环境下体验和测试本项目(参考 Arm Keil Studio Visual Studio Code Extensions User Guide 帮助指南以及 How to debug a program in VS Code using SWD Interface? 了解更多细节)。

整个开发环境的软件要求,可参考以下配置:

  • Keil MDK μVision v5.38
  • Python 3.9.10
  • pyOCD v0.34.3

1. 安装 Keil MDK μVision:参考 µVision User’s Guide(推荐) 以及 Arm Keil Microcontroller Development Kit (MDK) Getting Started Guide 下载并安装 Keil MDK μVision 开发环境。

2. 下载并安装 WE2 系列的 CMSIS Packs 软件包:访问 CMSIS Packs 下载仓库 直接下载或访问 Himax 提供的 GitHub 仓库 下载和解压整个工具包。解压完成后,双击 Himax.WE2_DFP.1.0.0.pack 即可启动自动的软件包安装程序 Pack Installer。根据提示信息逐步操作并完成安装即可。

3. 安装 pyOCD:参考 How to install pyOCD? 进行安装。也可以直接参考以下代码:

python -m pip uninstall pyocd
python -m pip uninstall pyocd_hx
python -m pip install pyocd_hx-0.34.3.dev0+dirty-py3-none-any.whl

4.3.2 连接开发板

参考下图,将 CMSIS-DAP 兼容的高速仿真器(图示为参考文档 7 提及的猛龙仿真器)与 Grove - Vision AI V2 开发板的 SWD 接口相连。即,将仿真调试器上的 DIO 、CLK 、GND 接口分别与 Grove - Vision AI V2 开发板上的 D2 、TXD 、GND 引脚通过杜邦线(公-母头)相连。具体原理图以及 SWD 接口的调试使用说明可参考 Himax 在 GitHub 上提供的帮助文档。需注意,除了仿真器和开发板之间的连线外,还需要为开发板和仿真烧录器供电。可以考虑通过将 Type-C 线连接至主机的 USB 接口上供电,也可以额外使用合适的电源适配器等等其他方式。


硬件连接示意图
图4-2. 硬件连接示意图

连接完成后,可以通过 Keil MDK μVision 集成开发环境中 Options for Target ...(位于 Project 栏目下面)中 Debug 选项下的 Debugger Setting 设置里查看是否有相应的串口信息(Serial No.) 来确认是否开发板已经成功连接。

4.3.3 构建编译工程

  • 1. 下载示例工程:本示例工程代码位于 GitHub 仓库 主分支下。将示例代码下载后,使用 Keil MDK μVision 集成开发环境打开工程文件。需注意,我们已经提前将 Arm 虚拟硬件环境中测试出的效果较优的 BaseMobileNetV2 模型经 TVM 编译后生成的 cls 软件包解压至相应的工程目录下。若开发者需要测试自己的模型,则可将 TVM 编译后生成的 cls 软件压缩包从云端导出直接替换示例工程中的软件包即可(测试图片、标签等数据的处理方法也一致,可从 Arm 虚拟硬件镜像中直接导出并覆盖相应的工程目录即可)。

  • 2. 编译示例工程:在 Keil MDK μVision 集成开发环境中点击本示例工程进行编译和构建。工程编译完成后,项目根目录下会出现项目名.elf (例如: PaddleClasDemo.elf)文件。关于 Keil MDK μVision 的使用方法,本文不做过多赘述。开发者可自行参考 µVision User’s Guide 相关章节学习和了解。

4.3.4 生成烧录固件

  • 1. 生成固件:本项目使用了 Himax 仓库中提供的固件生成工具(位于 GitHub 仓库 下的 tool.7z 压缩包)。为便于开发者体验,本文对该工具包做了一定的精简和修改并随项目工程一并提供,位于 tool 目录下。
    • 将 4.3.3 编译中生成的 .elf 文件拷贝至工具包目录下的 /tool/we2_image_gen_local_exe_release_177231/input_secboot 路径下。可选地,也可以在 .elf 文件生成的目录下,运行以下命令执行拷贝操作。
      copy *.elf "./tool/we2_image_gen_local_exe_release_177231/input_secboot"
      
    • 切换至 tool/we2_image_gen_local_exe_release_177231 路径。可选地,运行以下命令进行路径切换操作。
      cd ./tool/we2_image_gen_local_exe_release_177231
      
    • 运行以下命令生成相应的镜像。当显示如下图所示,即提示 IMAGE GEN DONE 则说明已经成功地打包生成了相应的固件。
      we2_local_image_gen PaddleClasDemo.json
      

      固件生成示意图
      图4-3. 固件生成示意图

  • 2. 烧录固件:同上,本项目使用了 Himax 仓库中提供的固件烧录工具并随工程一并提供。切换到 tool/swdflash 目录下,并运行以下命令进行固件的烧录操作。当显示如下图所示,则说明已经成功地将生成的固件烧录至开发板中了。
    python swdflash.py --addr=0x00000 --bin=../we2_image_gen_local_exe_release_177231/output/output.img
    

    烧录完成示意图
    图4-4. 烧录完成示意图

4.3.5 查看运行结果

烧录完成后,即可去掉仿真烧录器与开发板的连接,仅通过串口将开发板连接至主机上(通过 Type-C 线与主机 USB 接口相连)。在主机上打开串口工具(例如:作者使用的 Tera Term )并将串口通讯的波特率调整至 115200 保持其他选项不变,查看串口输出的结果,并将其与 Arm 虚拟硬件镜像中 Corstone-300 FVP 模型仿真的结果进行比较(图4-1)。可以看出来该结果与 Arm 虚拟硬件上的运行结果高度一致。通过代码比较,也可以轻松地发现我们虚拟硬件上运行的代码与物理开发板上运行的代码仅有非常少量的相关接口代码改动,也体现出了 Open-CMSIS-Pack 工程的优势之一。


运行结果示意图
图4-5. 运行结果示意图

5. 实验感悟

  • Arm 拥有很强大的 AI 生态系统可以帮助开发者快速地在基于 Arm 的平台上开发 AI 应用。Arm 与其多元化的生态系统合作伙伴(例如:百度飞桨,Seeed Studio, Himax等)合作为开发者提供了端到端的 MLOps 的解决方案,从模型到硬件。
  • Arm 虚拟硬件可以帮助我们快速地验证我们所开发的 AI 应用能否在设备资源有限的端运行起来。同时,利用 Arm 虚拟硬件上云的优势,通过撰写自动化测试脚本等方式,我们可以并行高效地完成模型的筛选,提高了整体的开发效率。
  • 借助 Arm 的 Open-CMSIS-Pack 项目的软件工具和生态,我们可以快速地将 Arm 虚拟硬件上验证完成的项目在物理开发板上运行起来,极大地加速了端侧人工智能应用开发。

6. 参考文档

  1. Arm 虚拟硬件产品简介
  2. Arm 虚拟硬件帮助文档
  3. Arm 虚拟硬件开发者资源
  4. 【中文技术指南】Arm 虚拟硬件实践专题一:产品订阅指南(百度智能云版)
  5. 【中文技术指南】Arm 虚拟硬件实践专题二:Arm 虚拟硬件 FVP 模型入门指南
  6. 【中文视频直播课】加速AI开发,1小时快速入门Arm虚拟硬件
  7. 【可选】CMSIS-DAP 高速仿真调试器可参考购买链接:猛龙 或 树莓派调试器
  8. Arm 社区微信公众号
    Arm 社区微信公众号

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1869143.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【HarmonyOS NEXT】har 包的构建生成过程

Har模块文件结构 构建HAR 打包规则 开源HAR除了默认不需要打包的文件(build、node_modules、oh_modules、.cxx、.previewer、.hvigor、.gitignore、.ohpmignore)和.gitignore/.ohpmignore中配置的文件,cpp工程的CMakeLists.txt,…

【Python机器学习】自动化特征选择——迭代特征选择

在单变量测试中,没有使用模型;在基于模型的选择中,使用单个模型来选择特征。而在迭代特征选择中,将会构造一系列模型,每个模型都使用不同数量的特征。有两种基本方法: 1、开始时没有特征,然后逐…

【MySQL基础篇】概述及SQL指令:DDL及DML

数据库是一个按照数据结构来组织、存储和管理数据的仓库。以下是对数据库概念的详细解释:定义与基本概念: 数据库是长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。 数据库不仅仅是数据的简单堆积,而是遵循一定的规则…

聚合项目学习

首先建立一个总的工程目录,里边后期会有我们的父工程、基础工程(继承父工程)、业务工程(依赖基础工程)等模块 1、在总工程目录中(open一个空的文件夹),首先建立一个父工程模块(通过spring init…

Unity中模拟抛物线(非Unity物理)

Unity中模拟抛物线非Unity物理 介绍剖析问题以及所需公式重力加速度公式:h 1/2*g*t*t(h 1/2 * g * t ^ 2)速度公式:Vt V初 a * t 主要代码总结 介绍 用Unity物理系统去做的抛物线想要控制速度或者想要细微的控制一些情况是非常困难的。所以想要脱离U…

【Linux系列】Fedora40安装VMware Workstation Pro报错

问题描述 由于Fedora 40使用的Linux内核是6.9,导致安装VMware Workstation Pro 时,安装依赖无法成功,具体报错如下 ..................CC [M] /tmp/modconfig-a8Fcf5/vmnet-only/smac.oCC [M] /tmp/modconfig-a8Fcf5/vmnet-only/vnetEvent.oCC [M] /tmp/modconfig-a8Fcf…

《数据勒索防范手册(1.0版)》

当前,数据勒索攻击已成为全球最严重的数据安全威胁之一攻击方式呈现 APT 化、平台化、多重化、AI驱动化等发展趋势:据统计,近年来针对制造业、公共事业、卫生保健、电力、交通、能源等领域的勒索攻击显著增加。随着云计算、边缘计算等技术的不断发展&…

深入探究小型语言模型 (SLM)

使用 Microsoft Bing Image Creator 创建 大型语言模型 (LLM) 已经流行了一段时间。最近,小型语言模型 (SLM) 增强了我们处理和使用各种自然语言和编程语言的能力。但是,一些用户查询需要比在通用语言上训练的模型所能提供的更高的准确性和领域知识。此外…

大疆车载的第一款油车智驾:上汽大众途观L Pro的智能辅助驾驶系统

引言 在自驾行业中,有一个低调但迅速崭露头角的选手——大疆车载。自2016年成立以来,大疆车载(现已更名为卓御)通过其先进的智能驾驶技术,逐渐在市场上赢得了声誉。此次,上汽大众途观L Pro成为大疆车载首款…

如何科学减肥先从了解自己在到饮食运动

在这个以瘦为美的时代,许多人被肥胖所困扰着, 今天就来教大家如何科学减脂。 一、如何判断自己是否需要减脂? 第一步就是判断自己的体重指数(BMI)是否在正常标准。BMI是国际上衡量人体胖瘦程度及是否健康的一个常用指…

打破生态「孤岛」,Catizen将开启Telegram小游戏2.0时代?

Catizen:引领Telegram x TON生态的顶级猫咪链游 在区块链游戏领域,吸引玩家的首要因素往往是游戏的趣味性。然而,仅靠趣味性无法评估一个项目的长期价值和发展潜力。真正能在区块链游戏市场中取得长久成功的项目,无一例外都依靠扎…

软件自动化测试有哪些流程?可替代手工测试吗?

随着科技的不断发展,软件在我们生活中的地位越来越重要。然而,在软件开发过程中,必然会出现各种各样的问题和bug,为了提高软件的质量和稳定性,保证用户的使用体验,软件自动化测试应运而生。 那么&#xff…

百元蓝牙耳机哪款性价比高?盘点性价比高的百元蓝牙耳机品牌

在如今快节奏的生活中,蓝牙耳机已经成为人们日常生活中不可或缺的配件。然而,市面上百元左右性价比高的蓝牙耳机琳琅满目,消费者往往难以选择到一款质量好、耐用的产品。我们希望可以为广大消费者提供一些参考和建议,接下来&#…

基于强化学习DQN的股票预测【股票交易】

强化学习笔记 第一章 强化学习基本概念 第二章 贝尔曼方程 第三章 贝尔曼最优方程 第四章 值迭代和策略迭代 第五章 强化学习实例分析:GridWorld 第六章 蒙特卡洛方法 第七章 Robbins-Monro算法 第八章 多臂老虎机 第九章 强化学习实例分析:CartPole 第十章 时序差分法 第十一…

商家转账到零钱开通指南

商家转账到零钱功能是微信支付开发的一款商家可以直接向个人微信发放零钱的产品,商家可通过此功能手动或者自动向多个微信用户发起转账。不过因为人工审核门槛的问题,不少商家很难自主通过申请,以下是经过我们上万次开通操作的经验总结&#…

观成科技:证券行业加密业务安全风险监测与防御技术研究

摘要:解决证券⾏业加密流量威胁问题、加密流量中的应⽤⻛险问题,对若⼲证券⾏业的实际流量内容进⾏调研分析, 分析了证券⾏业加密流量⾯临的合规性⻛险和加密协议及证书本⾝存在的⻛险、以及可能存在的外部加密流量威 胁,并提出防…

缓冲区溢出

本文作者:杉木涂鸦智能安全实验室 前置知识点 栈 栈(Stack)是计算机中的一种数据结构,用于存储临时数据。它的特点是后入先出(LIFO),只能在栈顶添加或删除数据。在程序中,栈被用于…

【JavaScript】JS对象和JSON

目录 一、创建JS对象 方式一:new Object() 方式二:{属性名:属性值,...,..., 方法名:function(){ } } 二、JSON格式 JSON格式语法: JSON与Java对象互转: 三、JS常见对象 3.1数组对象API 3.2 其它对象API 一、创建JS对象 方式一:new…

创新前沿:Web3如何颠覆传统计算机模式

随着Web3技术的快速发展,传统的计算机模式正面临着前所未有的挑战和改变。本文将深入探讨Web3技术的定义、原理以及它如何颠覆传统计算机模式,以及对全球科技发展的潜在影响。 1. 引言:Web3技术的兴起与背景 Web3不仅仅是技术创新的一种&…

OpenAI 开启买买买模式:接连收购 Rockset 与 Multi,科技巨头创新布局

引言 最近,OpenAI 在科技领域引起了广泛关注,通过接连收购两家初创公司 Rockset 和 Multi,开启了所谓的“买买买模式”。这一战略举措不仅展现了 OpenAI 对于技术发展的深远布局,也预示着未来更多创新产品的推出。本文将详细探讨…