- 博客(72)
- 资源 (1)
- 收藏
- 关注
原创 Deepsort实践:RK1106训练部署ReID
本文介绍了一种面向边缘设备优化的轻量化 ReID 模型实现方案。针对 RK1106 等资源受限设备,采用 MobileNetV2 替代原有 ResNet 模型,显著减小模型体积(从 40MB 降至 2.8MB)。文章详细阐述了从数据集准备、模型训练到部署的全流程:使用 Market-1501 数据集重组目录结构;设计基于 MobileNetV2 的 ReID 网络(输入 3x64x128,输出 256 维特征);通过 ONNX 转换和 RKNN 量化实现高效部署。
2025-09-19 10:55:53
1074
原创 Deepsort实践:RV1106训练部署YOLOv5
本文介绍了如何在RV1106平台上部署YOLOv5n模型的过程。首先通过COCO2017数据集训练仅针对行人检测的YOLOv5n模型,包括数据预处理、模型训练和PC端测试。然后详细说明了将训练好的模型转换为RKNN格式的步骤,包括模型导出、RKNN转换和参数配置。最终在RV1106平台上成功部署了优化后的行人检测模型,提升了检测精度与效率。
2025-09-19 10:37:24
1432
原创 DeepSort学习与实践-代码实现
文章摘要 本文介绍了基于YOLOv5和DeepSort的行人检测与跟踪系统实现。项目已在GitHub开源,包含完整的Python实现和预训练模型。核心功能包括:使用YOLOv5进行人体检测,通过DeepSort算法实现目标跟踪,支持视频输入输出处理。代码结构清晰,包含模型权重、算法实现和示例视频。关键技术点包括:检测框格式转换、ReID特征匹配、卡尔曼滤波跟踪和轨迹管理。该项目可直接用于实际监控场景,并支持自定义模型训练和RKNPU适配。
2025-09-18 20:12:27
974
原创 DeepSort学习与实践-原理学习
DeepSort多目标跟踪算法简介 DeepSort是一种基于SORT算法扩展的多目标跟踪算法,通过融合运动特征和深度外观特征实现稳定目标跟踪。其核心流程包括:检测输入、轨迹预测、级联匹配和状态更新。关键技术包含卡尔曼滤波(用于状态预测与更新)、匈牙利算法(实现最优匹配)和ReID模块(提取外观特征)。算法通过级联匹配策略优先处理高置信度轨迹,并利用代价矩阵结合运动与外观信息,有效减少ID切换。DeepSort相比基础SORT算法能更好地区分相似目标,适用于复杂场景下的多目标跟踪任务。
2025-09-18 19:45:19
770
原创 ROS2:命令行学习
通过本文的详细介绍,我们以publisher_member_function和subscriber_member_function为例,初步探索了ROS2命令行的核心功能。从节点管理到话题操作,从参数配置到数据记录,ROS2命令行工具为开发者提供了强大的支持。
2025-04-12 19:51:23
1093
原创 泰山派开发之—Ubuntu20.04根文件系统制作
本节以 Ubuntu 20.04 为例,详细介绍 Ubuntu 根文件系统的制作流程,涵盖系统安装、网络配置、用户管理、打包镜像及调试等内容。其他版本的根文件系统制作流程与此类似,可参考本指南进行移植。
2025-03-26 14:02:06
2108
5
原创 泰山派开发之—Linux下固件烧录
官方提供了Windows、Linux和Mac环境下的烧录工具。其中泰山派文档中主要介绍的是Windows下的烧录步骤。然而由于开发是在Linux下,如果烧录的话还需要切换到Windows,这十分的不方便。因此,本节介绍在Linux环境中,如何使用官方提供的update_tool工具来完成固件烧录,包括工具安装、设备连接、进入升级模式、烧写固件及后续测试。
2025-03-18 12:43:24
1204
原创 Arduino RP2040板卡引脚适配
由于Game RP2040 Kit开发板的硬件设计与 Raspberry Pi Pico 不同,所以并不能直接选择该开发板进行程序的编译下载,因此我们还需要对其默认的引脚配置进行修改,才能够进行编程和烧录。Arduino中关于引脚定义在pins_arduino.h中。
2025-03-14 09:41:53
1361
原创 深度学习之-“深入理解梯度下降”
梯度下降作为机器学习和深度学习的核心优化算法,经历了从基础到现代的不断演进。从最简单的梯度下降,到随机梯度下降、动量机制,再到自适应梯度下降方法,每一步的改进都使得优化过程更加高效和稳定。在实际应用中,选择合适的优化算法需要根据具体问题的特点来决定。对于简单的凸优化问题,传统的梯度下降或动量机制可能已经足够;而对于复杂的深度学习模型,Adam 等自适应方法则往往能够提供更好的性能。
2025-03-05 16:23:21
974
原创 Arduino 玩转 TFT_eSPI:驱动 ST7789 显示屏
在本篇博客中,我们将尝试如何基于RP2040 Game Kit开发板,在Arduino平台上使用TFT_eSPI库,成功驱动ST7789显示屏。
2025-03-03 12:08:40
3224
原创 基于Arduino的2048游戏
本文将详细介绍如何基于Arduino在RP2040 Game Kit开发板上设计并实现一个2048小游戏。我们将通过串口输入来控制游戏的操作,并通过RP2040开发板上的LCD显示屏实时展示游戏进程,包括棋盘状态和分数。
2025-03-03 11:57:30
980
原创 深度学习之-“全连接网络的反向传播”
通过MNIST手写数字识别任务,我们从理论和代码两个层面深入探讨了反向传播的原理和实现。不仅学习了反向传播的数学原理,还通过手动编写反向传播逻辑,更好地理解了其内部机制。
2025-02-28 19:49:54
1089
原创 深度学习之“雅可比矩阵与黑塞矩阵”
在向量微积分中,雅可比矩阵是一阶偏导数以一定方式排列成的矩阵,其行列式称为雅可比行列式。雅可比矩阵的重要性在于它能够捕捉一个可微方程在某一点的最优线性逼近。要理解这一点,我们可以从一个向量值函数的角度出发。假设我们有一个函数F:Rn→Rm,它将一个n维向量映射到一个m维向量。如果这个函数在某一点a是可微的,那么在这一点附近,函数的行为可以用一个线性映射来近似。而这个线性映射的核心就是雅可比矩阵。雅可比矩阵是由函数F的所有一阶偏导数组成的矩阵,记作J(a)。
2025-02-27 16:49:56
1142
原创 深度学习之“向量范数和距离度量”
在深度学习中,范数和向量距离是两个不同的概念。向量范数是一种函数,用于将一个实数或复数向量映射为一个值。虽然范数通常用于度量向量之间的距离,但是同样也有其它的一些表示距离的方式。
2025-02-01 13:39:00
936
原创 深度学习之“线性代数”
标量是最简单的数学对象,通常表示单个数值变量,是构成高阶数据结构的基础。x = 42 # 标量print(x)线性代数是深度学习的基础,其数学对象和运算在数据表示和模型计算中无处不在。掌握这些基本概念和操作,将为理解和优化深度学习模型提供有力支持。
2025-02-01 13:28:46
2161
原创 深度学习之“数据的相关性”
不同的数据集之间可能会存在关联,如一方变大,另一方也随之变大或者变小。例如,大多数图像的像素点是高度相关的。图像上的一个像素与其周围的像素点在很大概率上会类似。而”相关性“十分适合用于描述这种关系,描述相关性的统计量能够清晰地体现出数据特征之间有何关联。在传统的机器学习领域,我们并不希望不同特征之间有很强的关联性,因为这样不但难以提供新的信息,还会对模型产生干扰。因此,在传统的机器学习领域,通常需要对获得的数据进行特征工程,其中一项目的就是去吃相关性的影响。
2025-01-31 16:18:47
1230
原创 深度学习之“缺失数据处理”
缺失数据就是我们没有的数据。如果数据集是由向量表示的特征组成,那么缺失值可能表现为某些样本的一个或多个特征因为某些原因而没有测量的值。通常情况下,缺失值由特殊的编码方式。如果正常值都是正数,那么缺失值可能被标记为-1;如果正常值是字符串,那么缺失值可能是空的字符串;如果正常值是浮点数,那么缺失值可能是NaN。可以看到,只能用np.isnan来判断,“==”和“is”进行比较是无效的。
2025-01-31 16:11:57
830
原创 生成对抗网络(GAN)入门与编程实现
GAN 是一种生成模型,旨在通过学习数据的潜在分布,生成与真实数据相似的样本。生成器(Generator):输入一个随机噪声向量,通过一系列的变换生成假数据,目标是让生成的假数据尽可能接近真实数据。判别器(Discriminator):输入真实数据和生成器生成的假数据,输出判断其真实性的概率,目标是尽可能准确地区分真实数据和生成数据。二者在训练过程中相互对抗,形成一个博弈过程。
2025-01-22 16:48:54
1884
原创 AG32 FPGA 的 Block RAM 资源:M9K 使用
AG32 FPGA 包含了 4 个 M9K 块,每个 M9K 块的容量为 8192 bits,总计为 4 个 M9K(4K bytes)。这使得 AG32 的内部存储非常适合嵌入式应用,能够有效地利用片上资源。
2025-01-21 16:32:56
1441
1
原创 PyTorch数据加载和预处理
在基于深度学习进行图像处理之前,我们首先要准备相应的数据集。而Torchvision库提供了对图像数据的支持,主要包括常用图像数据集的访问接口、经典的图像分类、分割和目标检测模型,图像数据预处理功能以及一些图像增强的快捷方法。Torchvision库是由多个功能子包构成的,每个功能子包功能相对独立,其中与数据准备相关的功能包有datasettransforms和utils。
2025-01-21 16:22:10
969
原创 retinaface+facenet测试及导出onnx
在之前的文章中我们完成了使用insigtface进行多人人脸识别,其本质是分别使用人脸检测模型进行人脸检测,之后使用人脸识别模型对检测出的人脸进行识别。在本节,我们将分别使用retinaface模型和facenet模型在PC端分别完成人脸检测和人脸识别,并导出相应的onnx模型。
2025-01-21 16:07:32
1816
原创 InsightFace 快速上手
通过以上流程,我们在PC端初步完成了InsightFace的全流程操作,借助InsightFace提供的功能包,我们快速实现了高效的多人实时人脸识别。整个流程涵盖了环境配置、模型下载与加载以及推理测试等关键步骤,其中核心部分主要集中在人脸检测和人脸识别两个模型的使用。
2025-01-20 14:38:49
4894
原创 AG32 MCU与CPLD通过AHB总线交互
MCU与CPLD可以通过AHB或APB总线进行数据交互。APB总线通常连接低速设备,如串口,而AHB总线则用于连接高速设备,如RAM等。由于我们需要高速采集大量数据,因此选择使用AHB总线与CPLD进行交互。
2024-11-12 11:17:58
1520
1
原创 AG32 FPGA部分简单开发
在AG32芯片中,拥有异构双核(RISC-V+FPGA)处理器,包含2K逻辑单元。两者可以同时使用并进行交互,但是FPGA通常是作为MCU的一个外设设备来使用。本文介绍了如何简单使用其中的FPGA部分。
2024-11-12 11:14:26
2367
原创 AG32+USB使用
值得注意的是AG32中usb 使用到的PIN 脚是固定的管脚,不能在ve 中进行改变。TinyUSB 是一个用于嵌入式系统的开源跨平台 USB 主机/设备堆栈, 设计为内存安全,没有动态分配,线程安全,所有中断事件都被延迟,然后在非 ISR 任务函数中处理。这里我们仅需要将AG32做为设备端,将采集到的数据发送给电脑上位机,因此这里我们以示例工程中的。函数中,我们定义了对于插入设备和接收到数据的操作,当检测到设备插入或接受到数据时,将会调用。实测这里的波特率选择任意时,设备都是可以正常接收并发送数据的。
2024-10-12 09:19:46
706
原创 rknn实现yolo5目标检测
进入 rknn_model_zoo/examples/yolov5/python 目录,运行 yolov5.py 脚本,便可通过连板调试的方式在板端运行 YOLOv5 模型。其中platform为板卡平台的芯片类型,dtype为模型的精度,可以看到不同精度的模型适用的平台有所区别,在设置时需要注意。编译完成后,会在 rknn_model_zoo 目录下产生 install 文件夹, 其中有编译好的可执行文件,以及测试图。以官方model_zoo中的YOLOv5为例,进行模型的转换及测试。
2024-10-04 11:05:41
1924
原创 RK3576部署llama2.c
llama2.c是一个用纯 C 语言实现的轻量级推理引擎,无需依赖任何第三方库即可高效地进行推理任务。与llama.cpp相比,其代码更加直观易懂,并且可以在 PC、嵌入式 Linux 乃至 MCU 上部署。以下是llama2.c在 RK3576 开发板上的部署步骤。
2024-10-04 11:03:19
913
原创 ESP-DL部署魔改MobilenetV1—3. 模型部署
在模型定义时,我们需要用到量化时输出的层信息、cat_vs_dog_coefficient.hpp,必要时还可以使用netron查看神经网络的结构。├── main├── model我们以下关于模型的操作均在文件中完成。接下来是定义每个层。由于onnx中张量的顺序为CHW,而我们训练时使用的是HWC顺序,因此在模型输入端会有一个reshape或transpose,这里这层和输入不需要定义。
2024-09-04 10:02:37
1678
2
原创 ESP-DL部署魔改MobilenetV1—2. 模型量化
在上一节完成模型的训练和导出后,这一节我们来基于esp-dl,使用其提供的量化工具包来完成模型的量化。
2024-08-30 19:10:57
1139
原创 OK527N-C开发板-简单的性能测试
此外,在编译程序时还可以启用-fopenmp选项,它会告诉编译器生成能利用多线程的代码,从而可以并行地执行内存读取和写入操作,从而更好地模拟真实应用的负载情况,因为现代应用程序往往利用了多核架构的并行处理能力。此外由于source_code/common_64bit/cpuida64.asm代码并不适配aarch64-none-linux-gnu-as汇编器,所以我们在复制的时候没有复制此文件,并且需要注释掉 cpuidc64.c中的_cpuida() 、_calculateMHz() 两个汇编函数。
2024-07-02 17:49:37
1139
Edge Impulse导出的Arduino库中支持ESP32S3的ESP-NN
2024-03-11
proteus8.5汉化包.zip
2020-04-08
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅