自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(30)
  • 收藏
  • 关注

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

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

2024-06-27 15:11:19 5840

原创 基于 Arm 虚拟硬件实现人脸特征提取模型的部署

本文将详细介绍如何基于 AVH 部署一个人脸特征提取模型。通过利用 AVH,我们可以在不依赖实际硬件的情况下进行高效开发和测试,从而大大缩短开发周期。配置 AVH 开发环境配置并编译人脸特征提取模型编译基于 AVH 实现的人脸特征提取 Demo在 AVH 上进行部署和测试本项目使用的人脸识别特征提取模型是Adaface,你可以在中找到它的详细介绍。受限于 MCU 设备极为紧张的内存,我们这里选用了 backbone 为MobileFace的Adafacelfwcfp_fpagedb30。

2024-06-18 14:02:31 7955 3

原创 [C++][CMake] set_target_properties called with incorrect number of arguments

这篇文章将探讨了在使用CMake构建C++项目时,调用set_target_properties函数时参数数量不正确所引发的问题。

2024-06-03 16:59:23 469

原创 【Paddle2ONNX】为 Paddle2ONNX 升级自适应ONNX IR Version功能

ONNX (Open Neural Network Exchange) IR (Intermediate Representation) Version 的作用是定义和描述 ONNX 模型文件的结构和格式。兼容性管理模型文件解析演进管理显然,对于 Runtime 来说,指定 ONNX IR 是提升程序鲁棒性的方式之一,因此一般会对 ONNX IR 有所要求。

2024-05-30 18:18:56 1201

原创 [C++][libusb] 如何使用libusb打开多个VID和PID相同的设备

操作步骤基本可以按以下流程来进行1 初始化 libusb 库并创建 libusb_context2 获取连接的USB设备列表3 遍历设备列表查找指定VID和PID的设备3.1 获取设备描述符3.2 检查VID和PID3.2.1 打开设备获取设备句柄3.2.2 关闭设备句柄4 释放设备列表5 关闭libusb库并释放libusb_context。

2024-05-30 17:49:36 519

原创 [C++][MSVC][Error] __acrt_first_block == header

当你使用 MSVC 编译器时遇到的错误通常与内存管理问题有关,特别是涉及到 C 运行时库 (CRT)。这个错误通常是由于不同模块(如 DLL 和 EXE)在使用不同 CRT 时分配和释放内存的方式不匹配引起的。具体来说,当使用 /MTd 标志时,每个模块都会链接到其自己的 CRT 静态副本。这意味着每个模块都有自己的堆管理器,从而导致一个模块分配的内存在另一个模块中释放时发生冲突。

2024-05-29 16:50:48 690

原创 [C++][MSVC][Error] 检测到“RuntimeLibrary”的不匹配项_ 值“MT_StaticRelease”不匹配值“MD_DynamicRelease”

该错误仅在Windows的MSVC编译器下会出现。

2024-05-29 16:24:21 537

原创 [C++][Warning] Default arguments on virtual or override methods are prohibited

在本文中,我们深入探讨了C++中的警告 “Default arguments on virtual or override methods are prohibited”,并解释了为什么在虚拟或重写方法中使用默认参数可能会导致问题。希望通过避免在虚拟或重写方法中使用默认参数,你能够提高代码的可维护性和稳定性,编写更健壮和高质量的C++代码。

2024-05-27 09:20:16 666

原创 [C++][enum] enum和enum class的差异

总体来说,使用 enum class 更加安全和强类型化,可以避免一些常见的问题,如名称冲突和意外的隐式转换。如果你希望枚举类型具有更严格的类型检查和作用域限定性,建议使用 enum class。

2024-05-27 09:19:40 530

原创 [C++][const] 定义函数时,const关键字在函数前后的区别

const放在函数后主要是限制类中的成员函数,const放在函数前是限制函数返回类型为指针时通过指针对返回值的修改。

2024-05-22 11:21:13 539

原创 【Paddle2ONNX】为Paddle2ONNX升级Opset版本到18

在深度学习模型的部署过程中,模型格式的转换是一个至关重要的环节。Paddle2ONNX是一个开源工具,用于将飞桨(PaddlePaddle)模型转换为ONNX格式,以便在各种不同的深度学习框架中进行推理和部署。随着ONNX标准的不断更新,保持Paddle2ONNX与最新版本的兼容性显得尤为重要。本篇文章《【Paddle2ONNX】为Paddle2ONNX升级ONNX版本》将详细介绍如何为Paddle2ONNX项目升级其依赖的ONNX版本。

2024-05-22 10:42:15 1155

原创 [C++][algorithm][Eigen] 基于Eigen实现NormalizeL2函数

在机器学习和数据分析领域,相似度度量是评估两个对象之间相似性的重要工具。其中,余弦相似度(Cosine Similarity)是一种广泛使用的度量方法,它通过测量两个向量的夹角的余弦值来确定它们的相似性。本博客文章《【Eigen】使用Eigen实现CosineSimilarity函数》将深入探讨如何使用Eigen库来实现余弦相似度计算。

2024-05-21 10:39:50 437

原创 [C++][algorithm][Eigen] 基于Eigen实现Softmax函数

Softmax函数是机器学习和深度学习中一个非常重要的激活函数,它在多分类问题中尤其关键。Softmax函数能够将一个向量或一组实数转换成概率分布,使得每个元素的值都在0到1之间,并且所有元素的和为1。本博客文章《【Eigen】基于Eigen实现Softmax函数》将详细探讨如何在C++中使用Eigen库来实现Softmax函数。

2024-05-21 10:38:33 504

原创 [C++][algorithm][Eigen] 使用Eigen实现CosineSimilarity函数

在数据科学和机器学习领域,余弦相似度(Cosine Similarity)是一个衡量两个非零向量之间角度的度量,常用于评估文本、图像、用户偏好等的相似性。它通过计算两个向量的点积并除以它们的模长乘积来得到,其值的范围在-1到1之间,值越接近1表示向量越相似,值越接近-1表示向量越不相似。Eigen是一个高性能的C++线性代数库,它提供了一个简单而高效的接口来处理矩阵和向量运算。在本文中,我们将探讨如何利用Eigen库来实现余弦相似度的计算。

2024-05-15 17:09:07 270

原创 [C++][algorithm] 使用C++实现TopK算法

在数据挖掘和大数据处理领域,TopK问题是一个常见的问题,它要求从一组数据中找出最大的K个元素。这个问题在很多实际应用中都有出现,比如搜索引擎的关键字提取、推荐系统中的热门商品推荐等。TopK算法因其高效性和实用性,成为算法工程师和数据科学家必须掌握的技能之一。

2024-05-15 17:06:22 346

原创 [C++][algorithm] 使用C++实现FP16转FP32算法

随着计算资源的日益增长,以及对性能和效率的不断追求,浮点数在科学计算、机器学习和图形处理等领域扮演着越来越重要的角色。在这些应用中,浮点数的精度和性能成为了关键因素。传统的单精度浮点数(fp32)虽然广泛使用,但在某些情况下,其精度可能不足以满足需求,而双精度浮点数(fp64)虽然精度更高,却会显著增加计算成本。在这样的背景下,半精度浮点数(fp16)因其在保持相对高精度的同时能够显著提高计算速度和降低存储需求,开始受到关注。

2024-05-15 17:04:24 596

原创 【Paddle2ONNX】为Paddle2ONNX适配roll算子

Roll算子一般被用再Swin结构中,Paddle2ONNX暂时不支持该算子,本教程介绍如何为Paddle2ONNX添加roll算子。

2024-04-13 19:53:46 571

原创 【Paddle2ONNX】 为Paddle2ONNX搭建自动发包机制

Paddle2ONNX此前一直使用一个一个的编译所有版本的Python源码包再手动上传到PyPI的方式来分发发行版。很显然,这是一种极其低效的办法,本文介绍如何为Paddle2ONNX添加自动发包机制。

2024-04-13 11:59:14 2127

原创 【Paddle2ONNX】为Paddle2ONNX修复elementwise_floordiv算子计算错误的问题

elementwise_floordiv算子在int32/int64的情况下直接转换成了ONNX中的div算子,由于div算子是普通除操作,而不是整除操作,因此无法通过CI的校验。

2024-04-12 10:02:22 517

原创 【Paddle2ONNX】为Paddle2ONNX添加修改模型输入shape功能

原先的脚本使用的是PaddlePaddle 2.5,这里将Paddle相关API升级到2.6.0。

2024-04-12 09:51:11 615

原创 【Paddle2ONNX】为Paddle2ONNX适配swish算子

在PaddlePaddle2.6中,swish算子在PaddleInference上发生了变化,删除掉了beta这个Attr,因此我们需要想办法自行适配它。

2024-04-11 09:18:06 443

原创 【Paddle2ONNX】为Paddle2ONNX适配releu6算子

在PaddlePaddle2.6中,relu6算子在PaddleInference上发生了变化,删除掉了threshold这个Attr,因此我们需要想办法自行适配它。

2024-04-11 09:12:45 397

原创 【Paddle2ONNX】为Paddle2ONNX添加裁剪模型功能

原先的脚本只支持修改Paddle模型的输出节点,这里将Paddle相关API升级到2.6.0,同时添加了对修改输出节点的支持。

2024-04-10 16:06:54 718 1

原创 【Paddle2ONNX】将迁移项目方式从setup.py迁移到pyproject.toml

在软件开发领域,项目构建方式的选择至关重要,可以直接影响到项目的可维护性、可扩展性以及与其他工具和环境的兼容性。近年来,随着Python生态系统的不断发展,一种新的项目构建方式逐渐崭露头角——使用pyproject.toml文件管理项目依赖和构建配置。相较于传统的setup.py方式,pyproject.toml具有诸多优势。

2024-04-10 14:46:31 633 1

原创 【Qt Windows】通过换源实现高速安装Qt

由于QT的服务器在国外,而国内通国外的网络往往不够流畅,因此在下载QT时我们经常会出现下载中断的问题。一个好的解决办法是在安装程序时替换下载源,下面我以中科大源为例子,替换QT的下载源。

2024-03-11 09:50:37 1163

原创 【TVM】为Paddle量化模型添加支持

随着深度学习应用的广泛使用,量化模型作为一种有效的模型压缩技术,能够在保持模型精度的同时减少模型的计算和存储开销。本文将介绍如何在TVM上为Paddle深度学习框架中的量化模型提供解析支持。

2024-03-06 09:39:24 1986 1

原创 【Keil&AVH】使用Keil新建Arm Visual Hardware(AVH)项目

我这里想模拟Cortex-M55核心,因此选择由于是简单教程,我只想输出一个最简单的Hello World,因此仅勾选串口相关的组件这里还需要特殊勾选一下以下选项。

2024-03-01 14:30:41 1022

原创 【microTVM】 轻松掌握TVM编译关键步骤

在这篇博客中,我们详细探讨了如何在Mac M1操作系统上从源码编译TVM。我们从安装必要的工具和依赖开始,然后详细介绍了如何使用Git下载TVM源代码,并进行了基本的配置。TVM和MicroTVM的世界广阔而深奥,等待着我们去探索。无论你的兴趣在于优化深度学习模型的性能,还是在边缘设备上实现复杂的机器学习算法,TVM都为您提供了实现这些目标的可能性。祝您在探索TVM的旅程中取得成功!

2024-03-01 14:29:47 871

原创 【Keil&AVH&TVM&Paddle】在Keil上使用TVM在AVH环境下运行Paddle模型

截止至目前为止,在裸机设备上运行机器学习任务是比较困难的,其难点我认为主要集中在运行性能有限、跨设备难度高、跨框架难度高这两点上。在裸机上部署机器学习任务时,除了芯片产商自带的推理框架外,比较经典的跨设备框架就是TFLite,但是TFLite也有其自己的缺点,那就是不能跨框架。TVM推出了microTVM很好的解决了上述问题(即使性能上对比TFLite确实还有所差距),为任何人轻松快速地实现这一目标奠定开源基础。

2024-03-01 14:27:33 936

原创 【TVM】为Paddle NHWC模型添加支持

在深度学习领域,模型的部署是一个关键的环节。而在模型部署中,转换和优化模型以适配不同的硬件和框架是至关重要的。TVM 是一个优秀的深度学习模型优化和部署框架,它提供了丰富的接口和功能来实现模型的高效部署。然而,对于一些特定框架和模型格式,TVM 可能需要进行一些扩展和定制,以更好地支持。在本篇博客中,我们将探讨如何为 PaddlePaddle 的 NHWC 格式模型添加支持,使其能够无缝地与 TVM 集成。

2024-03-01 14:20:45 1568

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除