RT-AK DEMO 实战教程,教你实现单个人像识别~

RT-AK轻松实现一键部署AI模型至RT-Thread RT-AK轻松实现一键部署AI模型至RT-Thread0、准备工作1、如何下载 ART-Pi SDK1.1.1在 RT-Thread Studio 里直接下载 sdk1.1.2 在 GitHub 里直接下载 sdk2、RT-AK 简介3、神经网络模型4、 X-CUBE-AI 介绍4.1下载4.2 X-CUBE-AI 安装4.3 执行步骤4.4 基础运行命令基础运行命令示例4.5 RT-Thread Studio 编译 0、准备工作 本文主要讲述了如何简单的训练一个深度学习的模型,并把模型放入rtt系统中,让 阅读详情

让 AI 在你的板子上尽情舞蹈~

本次实验的是识别摄像头中的人,就一个人,而不是多个。

从多类别检测模型改编而来,只保留 person 这个类别,根据各位看官的能力完全可以改成识别多类

项目开源地址:

https://github.com/EdgeAIWithRTT/Project4-Person_detection_RT-AK

本次项目的篇幅将会较长,请各位看官耐心看完

整体分为三部分:

  1. 模型

  2. RT-AK 使用

  3. 板子上的应用层代码实现

硬件平台 ART-Pi, 50M FLOPS。

我的模型(删减后的模型)最终部署在板子上是推理时间是56ms,不包括数据处理时间。

  • pc 端推理一张图片:

1$ pip install -r requirements.txt
2$ python inference_yolo-s.py

  • 以下是在 ART-PI 上的模型推理实现:


我的模型数据:map 21.58%

1 模型

1.1 参考项目

参考项目:

  1. Yolo-Fastest https://github.com/dog-qiuqiu/Yolo-Fastest

  2. keras-YOLOv3-model-set

    https://github.com/david8862/keras-YOLOv3-model-set

原因:目前了解的全网最轻量级的目标检测网络,没有之一

现在不是了,出现了一个 ppyolo,百度产

当然,Yolo Fastest 最小的模型也有 0.23 Bflops,想要在 ART-Pi 上顺利的跑起来,肉眼可见的丝滑程度,我是在做梦。

这时候有两个办法:

  1. 换一块板子,换一块算力更大的板子。

  2. 将模型改的小一点,能够在 ART-PI 上丝滑的跑起来。

这里我选择的是后者。

我改动的很简单,去掉特征金字塔输出,只保留一个输出,保证对大物体检测友好即可。同时删减网络结构。原来是109层,我是20+层网络结构。

纠正一个思想误区,由于一些很神奇的存在,网络并不是越深,FLOPS 就会越大,比如 DSCNN。


第二个参考项目的意义是在于:将模型转变为 tflite 可食用模型

1.2 模型文件

  • 我改动的模型配置文件:./model/yolo-s_with_lrelu.cfg

原模型配置文件:./model/VOC

为了防止在后期模型转换的过程中遇到不支持的算子:leakyrelu,我这里提供了一份 relu 的模型训练配置文件

  • 预先训练好的模型:./model/yolo-s.h5 507 k,量化的 tflite 模型文件:./model/yolo-s.tflite 144 k

1.3 自己训练模型

请参考:dog-qiuqiu/Yolo-Fastest 项目

我自己也写过一份 快速上手 yolo-fastest 教程:

https://blog.youkuaiyun.com/weixin_37598106/article/details/112544854?spm=1001.2014.3001.5501

但是由于 up 主更新的比较快,可能有一些版本落后,仅供参考。

  1. 需要配置 darknet 训练环境,然后根据需求修改下  cfg 文件即可

  2. 准备数据集:VOC 2007 + VOC 2012

     1wget https://pjreddie.com/media/files/VOCtrainval_11-May-2012.tar
     2wget https://pjreddie.com/media/files/VOCtrainval_06-Nov-2007.tar
     3wget https://pjreddie.com/media/files/VOCtest_06-Nov-2007.tar
     4tar xf VOCtrainval_11-May-2012.tar
     5tar xf VOCtrainval_06-Nov-2007.tar
     6tar xf VOCtest_06-Nov-2007.tar
     7
     8wget https://pjreddie.com/media/files/voc_label.py
     9# 修改文件,将里面的类别只保留 person 类别
    10python voc_label.py
    11
    12cat 2007_train.txt 2007_val.txt 2012_*.txt > train.txt
    

修改 ./model/voc_person.data 中的 train 和 valid 路径,注意,如果你不是训练 person  单类别,请一并修改 voc_person.names 文件

3.训练

1$ ./darknet detector train <data_path> <cfg_path> 
2
3# 举例, -dont_show 是不显示图片, -gpus 是指定 gpu 训练
4$ ./darknet detector train voc_person.data yolo-s.cfg -dont_show -gpus 0, 1

4.测试

perons.jpg 位于 ./imgs

1# test 1 image
2./darknet detector test voc_person.data yolo-s.cfg yolo-s_last.weights person.jpg -thresh 0.5 -dont_show
3
4# mAP
5./darknet detector map voc_person.data yolo-s.cfg yolo-s_last.weights -points 11

模型转换成 keras,最后转成 tflite

对应的代码仓库:

Lebhoryi/keras-YOLOv3-model-set 

https://github.com/Lebhoryi/keras-YOLOv3-model-set

转自 

david8862/keras-YOLOv3-model-set 

https://github.com/david8862/keras-YOLOv3-model-set,我做了一些修改,请按照我的来,否则出错请自负????????????

yolo-fastest to keras

python tools/model_converter/convert.py cfg/yolo-s.cfg weights/yolo-s_last.weights weights/yolo-s.h5  -f -c

keras to tflite

python tools/model_converter/custom_tflite_convert.py --keras_model_file ./weights/yolo-s.h5 --output_file ./weights/yolo-s.tflite

# keras to tflite; quantize
python tools/model_converter/post_train_quant_convert.py --keras_model_file ./weights/yolo-s.h5 --annotation_file /home/lebhoryi/Data/VOC/2007_test.txt --model_input_shape 160x160 --sample_num 30 --output_file ./weights/yolo-s.tflite -c
```

2 RT-AK 使用

具体使用请查阅 RT-Thread/RT-AK https://github.com/RT-Thread/RT-AK 相关文档

准备:

  • ART-PI bsp

  • 模型

  • RT-AK

使用:

1$ git clone https://github.com/RT-Thread/RT-AK
2
3$ cd RT-AK/RT-AK/rt_ai_tools
4
5# 只需要改动 --model、--project、--ext_tools 三个参数的路径即可
6$ python aitools.py --model=./yolo-s.h5 --model_name=person_yolo --project=D:\RT-ThreadStudio\workspace\art-pi --platform stm32 --ext_tools="D:\Program Files (x86)\stm32ai-windows-5.2.0\windows" --clear

3 应用代码

我的输入是 160x160x1,为了减小模型参数大小,

先在 pc 端实现应用层的代码

  • 图片预处理:尺度缩放+灰度转化+归一化

  • yolo 解码

  • nms 处理

代码都在 inference_yolo-s.py 中。

手边没有 usb 摄像头,也就没有写视频的推理代码,只有图片的推理代码。

功能实现:

1.图片预处理

python 里头就很简单,调用 opencv 库,几行代码搞定

1img_raw = cv2.imread(str(img_path))
2img = cv2.cvtColor(img_raw, cv2.COLOR_BGR2GRAY)
3img = cv2.resize(img, (160, 160), interpolation=cv2.INTER_LINEAR)
4img = img / 255.0
5img = np.asarray(img).astype('float32')

2.yolo 解码

inference_yolo-s.py 中的 yolo_decode 函数

模型推理的是检测目标的 xywh 的偏移量,目的是将模型输出结果转换成真实世界的 xywh

这部分呢,我也写了一篇文章,感兴趣的可以看一下:

掌握 yolo - 解码核心思想 https://blog.youkuaiyun.com/weixin_37598106/article/details/113058426?spm=1001.2014.3001.5501

3.nms

inference_yolo-s.py 中的 non_max_suppress 函数,这个函数针对的是单类别的


c 代码的实现比较痛苦(痛苦面具 x3)

✔灰度转换

✔尺度缩放

✔yolo 解码

⚪nms (可能五一节后实现)

1、灰度转换

RGB转灰度,通常会使用下面的一个心理学公式:(Matlab和OpenCV中使用的也是该公式)

1Gray = 0.2989*R + 0.5870*G + 0.1140*B
2# 优化
3Gray = (2989*R + 5870*G + 1140*B)/ 10000
4# 移位
5Gray = (4898*R + 9618*G + 1868*B)>> 14
6# 8位精度
7Gray = (76*R + 150*G + 30*B)>> 8
 1// c 代码实现
 2void rgb2gray(unsigned char *src,unsigned char *dst, int width,int height)
 3{
 4   int r, g, b;
 5   for (int i=0; i<width*height; ++i)
 6  {
 7       r = *src++; // load red
 8       g = *src++; // load green
 9       b = *src++; // load blue
10       // build weighted average:
11       *dst++ = (r * 76 + g * 150 + b * 30) >> 8;
12  }
13}
 1# python 代码实现
 2# val_c_gray_scaling.py
 3def img2gray(img_path):
 4   # 读取第一张图像
 5   img = cv2.imread(img_path)
 6   # 获取图像尺寸
 7   h, w = img.shape[0:2]
 8   # 自定义空白单通道图像,用于存放灰度图
 9   gray = np.zeros((h, w), dtype=img.dtype)
10   # 对原图像进行遍历,然后分别对B\G\R按比例灰度化
11   for i in range(h):
12       for j in range(w):
13           gray[i, j] = 0.11 * img[i, j, 0] + 0.59 * img[i, j, 1] + 0.3 * img[i, j, 2]  # Y=0.3R+0.59G+0.11B
14   show_img(gray)
15   return gray

2.尺度缩放

此处用的是双线性插值

 1int is_in_array(short x, short y, short height, short width)
 2{
 3   if (x >= 0 && x < width && y >= 0 && y < height)
 4       return 1;
 5   else
 6       return 0;
 7}
 8
 9void bilinera_interpolation(rt_uint8_t* in_array, short height, short width,
10                           rt_uint8_t* out_array, short out_height, short out_width)
11{
12   double h_times = (double)out_height / (double)height,
13          w_times = (double)out_width / (double)width;
14   short  x1, y1, x2, y2, f11, f12, f21, f22;
15   double x, y;
16
17   for (int i = 0; i < out_height; i++){
18       for (int j = 0; j < out_width; j++){
19           x = j / w_times;
20           y = i / h_times;
21
22           x1 = (short)(x - 1);
23           x2 = (short)(x + 1);
24           y1 = (short)(y + 1);
25           y2 = (short)(y - 1);
26           f11 = is_in_array(x1, y1, height, width) ? in_array[y1*width+x1] : 0;
27           f12 = is_in_array(x1, y2, height, width) ? in_array[y2*width+x1] : 0;
28           f21 = is_in_array(x2, y1, height, width) ? in_array[y1*width+x2] : 0;
29           f22 = is_in_array(x2, y2, height, width) ? in_array[y2*width+x2] : 0;
30           out_array[i*out_width+j] = (rt_uint8_t)(((f11 * (x2 - x) * (y2 - y)) +
31                                      (f21 * (x - x1) * (y2 - y)) +
32                                      (f12 * (x2 - x) * (y - y1)) +
33                                      (f22 * (x - x1) * (y - y1))) / ((x2 - x1) * (y2 - y1)));
34      }
35  }
36}

python 代码实现:val_c_gray_scaling.py 中的 bilinera_interpolation 函数

3.yolo 解码

 1// c 代码实现
 2// applications/yolo.c
 3int yolo_decode(float *out_data)
 4{
 5 int j=0,k=0,l=0;
 6 for(int i=0; i<5*5*5; i++)
 7{
 8   float x_tmp = 1 / (1 + exp(-out_data[i*6+0]));
 9   float y_tmp = 1 / (1 + exp(-out_data[i*6+1]));
10   float box_x = (x_tmp + k) / 5;
11   float box_y = (y_tmp + l) / 5;
12
13   float box_w = (exp(out_data[i*6+2])*anchor[j][0])/ input_dims[0];
14   float box_h = (exp(out_data[i*6+3])*anchor[j][1])/ input_dims[1];
15
16   float objectness = 1 / (1 + exp(-out_data[i*6+4]));
17
18   float class_scores = 1 / (1 + exp(-out_data[i*6+5]));
19
20//   printf("%d %d %d %f %f, %f %f, %f %f\n", j,k,l, box_x, box_y, box_w, box_h, objectness, class_scores);
21
22   out_data[i*6+0] = box_x;
23   out_data[i*6+1] = box_y;
24   out_data[i*6+2] = box_w;
25   out_data[i*6+3] = box_h;
26   out_data[i*6+4] = objectness;
27   out_data[i*6+5] = class_scores;
28
29   if(j++>=4)
30  {
31     j = 0;
32     if(k++>=4)
33    {
34       k = 0;
35       if(l++>=4)
36      {
37         l = 0;
38      }
39    }
40  }
41}
42 return 0;
43}

python 代码实现:inference_yolo-s.py 中的 yolo_decode 函数

4.nms

没有 nms 的目标检测工程就等于没有灵魂,等后期来实现


编译报错以及解决

第二种解决方式:

4. 参考链接


  • C++ RGB转灰度图像 https://blog.youkuaiyun.com/martinkeith/article/details/104185635

  • GBeetle/c_image_processing https://github.com/GBeetle/c_image_processing/blob/4ceabf4959f455f5b7d1ee419aac25eccf231b3b/scaling/scaling.c#L155

  • https://github.com/dog-qiuqiu/Yolo-Fastest

  • https://github.com/david8862/keras-YOLOv3-model-set

你可以添加微信17775982065为好友,注明:公司+姓名,拉进 RT-Thread 官方微信交流群!

???????????? 点击阅读原文进入官网

使用RT-Thread Studio 和ART-Pi 实现嵌入式数字识别(mnist) 一、环境: windows 10 rt-thread studio 2.1.0 :https://pan.baidu.com/share/init?surl=jG2APe8lFpia3_fP5JKjcQ 提取码:ctkm (官网上有提供其他下载方式) 二、目录 三、第一个工程的创建 阅读详情

相关推荐

【RT-Thread作品秀】基于ART-Pi的人脸识别系统-电路方案

作者:Signx 概述 当前的人脸识别摄像头,价格昂贵,拟改造成stm32单片机版本的,节省成本 功能: 1.连接摄像头OV2640,用fish指令开启摄像头 2.将摄像头数据传到电脑显示图片 3.将摄像头数据传到spi显示屏显示(未完成) 4.用人脸识别算法识别人脸开锁(未完成) 5.可登录到tencent Cloud云平台,实现上云 开发环境: 硬件:Art-pi+OV2640 RT-Thread版本:4.0.2 开发工具及版本:rt-stuidio V2.0.0 RT-Thread使用情况概述: 硬件框架:art-pi官方开发板+OV2640(dma+DCMI) 软件框架说明: 见思维导图 软件模块说明: 见思维导图 该系统的思维脑图如下: 演示效果: 视频: 实物图如下: 实现的效果如图: 连接电路如图所示: 实现功能: 1.连接摄像头OV2640,用fish指令开启摄像头 2.将摄像头数据传到电脑显示图片 3.将摄像头数据传到spi显示屏显示(未完成) 4.用人脸识别算法识别人脸开锁(未完成) 5.可登录到tencent Cloud云平台,实现上云主要碰到的技术难点: 1.art-pi组建库里有ov2640的软件包,本以为直接能用的,结果发现有很多缺失 首先是io口的确实,没有定义到足够的io口,所以代码里又加上了io口的定义以及初始化: io口定义代码: typedef enum { BMP_QQVGA = 0x00, /* BMP Image QQVGA 160x120 Size */ BMP_QVGA = 0x01, /* BMP Image VGA 800*480 Size */ JPEG_160x120 = 0x02, /* JPEG Image 160x120 Size */ JPEG_176x144 = 0x03, /* JPEG Image 176x144 Size */ JPEG_320x240 = 0x04, /* JPEG Image 320x240 Size */ JPEG_352x288 = 0x05 /* JPEG Image 352x288 Size */ }ImageFormat_TypeDef; /*摄像头接口 */ //IIC SCCB //#define CAMERA_I2C I2C1 //#define CAMERA_I2C_CLK_ENABLE() __HAL_RCC_I2C1_CLK_ENABLE() // //#define CAMERA_I2C_SCL_PIN GPIO_PIN_8 //#define CAMERA_I2C_SCL_GPIO_PORT GPIOB //#define CAMERA_I2C_SCL_GPIO_CLK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE() //#define CAMERA_I2C_SCL_AF GPIO_AF4_I2C1 // //#define CAMERA_I2C_SDA_PIN GPIO_PIN_9 //#define CAMERA_I2C_SDA_GPIO_PORT GPIOB //#define CAMERA_I2C_SDA_GPIO_CLK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE() //#define CAMERA_I2C_SDA_AF GPIO_AF4_I2C1 //VSYNC #define DCMI_VSYNC_GPIO_PORT GPIOI #define DCMI_VSYNC_GPIO_CLK_ENABLE() __HAL_RCC_GPIOI_CLK_ENABLE() #define DCMI_VSYNC_GPIO_PIN GPIO_PIN_5 #define DCMI_VSYNC_AF GPIO_AF13_DCMI // HSYNC #define DCMI_HSYNC_GPIO_PORT GPIOH #define DCMI_HSYNC_GPIO_CLK_ENABLE() __HAL_RCC_GPIOH_CLK_ENABLE() #define DCMI_HSYNC_GPIO_PIN GPIO_PIN_8 #define DCMI_HSYNC_AF GPIO_AF13_DCMI //PIXCLK #define DCMI_PIX

使用 RT-AK 部署 Cifar10 模型至 Art-Pi

Github:https://github.com/EdgeAIWithRTT/Project7-Cifar10_Cube_Art-PiRT-AK 及 Art-Pi 简介目前该项目为 RT...

rtthreadiotos的博客 861

汽车LED驱动芯片TPS92682-Q1 SPI接口配置与调试实战指南

SPI(串行外设接口)作为一种高速、全双工的同步串行通信总线,广泛应用于微控制器与外围设备之间的数据交换。其工作原理基于主从架构,通过时钟、数据线和片选信号实现设备间的精准时序控制。在汽车电子和工业控制领域,SPI因其简单高效、易于扩展的特性,成为配置复杂电源管理芯片、传感器和存储器的关键技术。通过SPI接口,工程师能够动态调整设备参数、实时读取状态信息,并实现复杂的故障诊断与保护策略,极大地提升了系统的灵活性与可靠性。本文以汽车级双通道LED恒流驱动器TPS92682-Q1为例,深入解析如何通过SPI接口

weixin_29185493的博客 288

RT-AK 之 RISC-V 支持初体验

文章目录1. 运行 RT-AK 前的准备工作1.1 BSP1.2 RT-AK 准备1.3 神经网络模型1.4 原厂工具2. 执行步骤2.1 基础运行命令2.2 其他运行命令补充说明2.3 运行参数说明3. 编译 & 下载4. 示例应用代码说明4.1 代码流程4.2 核心代码4.3 结果显示 应广大开发者要求,我们加班加点推出了 RT-AK 支持的第二个插件:支持基于 K210 芯片的一些开发板, 目前 RT-AK 能够在嘉楠堪智的 KD233 和亚博 YB-DKA01 上正常工作。 说明1:一直致力

lebhoryi 886

头歌OpenGauss数据库 - 单表查询 答案

本关任务:用SELECT语句检索数据表中指定字段的数据;用SELECT语句检索数据表中所有字段的数据。为了完成本关任务,你需要掌握: 1.如何获取数据表中指定字段的数据;2.如何获取数据表中的所有数据。

d214493517的博客 5720

【芯片驱动】2. CMT2300A配合硬件测试(灵敏度和发射功率)的软件实现

前言 在开发一款无线射频产品的时候,软件是一部分,硬件也是一部分。而决定无线收发性能的,首先是硬件的匹配电路,然后才到软件部分的优化。 一款无线射频产品,首先需要先决定是在那个频率范围内(当然是国家允许的范围内),然后硬件则需要在基于这个频点范围进行硬件的参数匹配,具体又分为发送功率匹配、天线匹配、和接收灵敏度的匹配。 现在我们使用2300a这款无线芯片来说,除非自己的团队是射频专家,则可以自己进行无线外围电路的设计外,另外一种更加快捷的方式,就是寻找原厂技术支持,他们会给...

sishuihuahua的博客 7052

RT-Thread 7.18 记录 深度学习 cifar10十分类模型

以下主要讲述了如何训练一个深度学习的模型,并把模型放入rtt系统中。 1.准备 开发环境:RT-Thread Studio 开发板:STM32H750-RT-ART-Pi 准备如下文件: 序号 名称 备注 1 硬件以及BSP STM32H750-RT-ART-Pi,ART-PI BSP 2 神经网络模型 ./rt_ai_tools/Model/keras_mnist.h5 3 STM32 AI插件 X-CUBE-AI是STM32C...

weixin_45263278的博客 801

Computers & Security 投稿实战:从零到一详解避坑指南

本文详细解析了向《Computers & Security》投稿的全流程避坑指南,包括ORCID账号注册、文件格式统一、Editorial Manager®系统操作技巧等关键步骤。特别强调了cover letter撰写、Declaration of Interest Statement准备以及PDF生成后的检查要点,帮助研究者高效完成投稿流程。

weixin_29228203的博客 673

RT-thread 二战嵌入式大赛 心得体会 已开源(三)

主控上根据模型与算力的实际要求采用ST意法半导体公司最新H7系列的高性能单片机, 其中 128 KB Flash 和采用分散架构的 1 MB SRAM: 用于在最低功耗模式下保存数据的 192 KB TCM RAM(包括 64 KB 的 ITCM RAM 和 128 KB 的 DTCMRAM, 用于时间关键型程序和数据) 、 512 KB、 288 KB 和 64 KB 的用户 SRAM 以及 4 KB 的备份域 SRAM 足够满足我们的设计需求, 下图为 STM32H750XBH6 的实。

qq_35452794的博客 2590

离线路径规划服务Graphhopper

离线路径规划服务Graphhopper 本文主要探索使用Graphhopper搭建离线路径规划服务,需要掌握一定的JAVA基础环境配置的知识 文章目录离线路径规划服务Graphhopper前言一、Graphhopper是什么?二、使用步骤1.下载Graphhopper2.从OpenStreetMap下载路图数据3.安装Graphhopper所需环境4.修改配置5.启动Graphhopper总结 前言 在外网环境中可以使用百度、高德等第三方的sdk用以实现路径规划的功能,由于项目的需要,在离线环境中需要使

Sysdark的博客 7557

Matlab图像地图上的最短路径计算算法——Dijkstra算法

接下来,我们进入主循环,不断从优先队列中取出距离最小的节点,并更新其邻居节点的距离和路径。Dijkstra算法是一种常用的最短路径算法,本文将介绍如何使用Matlab实现Dijkstra算法来计算图像地图上的最短路径。为了使用上述算法,我们需要将图像地图转换为一个矩阵,并将可通行的区域设置为白色(或其他亮度值),障碍物区域设置为黑色(或其他暗度值)。然后,我们可以指定起始节点和终止节点,并调用。通过上述的代码实现,我们可以在Matlab中使用Dijkstra算法来计算图像地图上的最短路径。

2301_78484069的博客 2044

RT-Thread 笔记整理

1.AI:从前例中学习;传统:基于经验 2.IOT(internet of things)设备(传感器将原始数据上传)->Gateway网关->cloud(运行在云上的AI引擎) 3.st.com搜AI,找工具 4. 高性能MCUs:F2/F4/H7/F7 主流MCUs:F0/G0/F1/F3/G4 超低功耗MCUs:L0/L1/L5/L4/L4+ 无线MCUs:WL/WB 5. MPU(Micro Processor Unit)微处理器 MCU(Micro

weixin_45263278的博客 3123

Coverity本地增量C/C++代码检查(Linux)操作简介

Coverity 是一款精确的综合静态分析与应用安全测试 (SAST) 平台,它可以在编写代码时发现关键的缺陷和安全缺陷,防止它们变成安全漏洞、故障或维护缺陷。

1482

基于RT-Thread开发智能视觉组智能车 - 温州大学 - 春华秋实

学校:温州大学队伍名称:春华秋实参赛队员:陈俊达、程先春、倪世杰带队教师:王峰 简 介: 目前自动驾驶话题非常火热,近几年华为、特斯拉、谷歌、百度等大型互联网公司都在进行关于这方面的研究。本文设计了基于恩智浦 RT1064芯片的智能小车,以 keil5为开发环境,利用基于 MT9V03X的总钻风数字摄像头作为传感器实现道路识别,使用 S3010转向舵机控制小车转向,依靠 RS380大电机和编码器构成闭环回路控制小车速度。该小车车模利用摄像头采集到赛道数据,根据差比和判断出图像上灰度跳变点即为赛道边缘,计.

TSINGHUAJOKING 9543

【用unity实现100个游戏之15】开发一个类保卫萝卜的Unity2D塔防游戏1(附项目源码)

当今,塔防游戏已经成为游戏市场上备受欢迎的一类游戏类型。《保卫萝卜》作为其中的经典之作,深受玩家喜爱。本项目旨在基于《保卫萝卜》的玩法和特点,开发一个Unity2D塔防游戏,让玩家可以在游戏中体验到精彩的策略对抗与刺激的关卡挑战。本项目将通过Unity引擎进行开发,利用2D游戏开发相关技术,包括但不限于精灵动画、碰撞检测、UI界面设计等。我们将实现萝卜作为关键角色的防守任务,并设计各种怪物和防御塔,使得游戏具有多样的战术策略和游戏乐趣。

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 4922

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

基于AI+RT-THREAD的人检测入侵检测摄像头(二 图像数据处理)

二、图像数据的处理 思路: OV2640组件的完善 rgb565数据转灰度图 双线性插值算法压缩图片 1.OV2640组件的完善 RT-THREAD提供了对摄像头OV2640的组件支持,我们在RT-THREAD SETTINGS中设置开启OV2640 尝试编译会发现失败,6errors,2warnings 查看报错我们可以发现是因为有类型未被定义 打开stm32h7xx_hal_conf.h查看没有打开的宏定义 打开DCMI、JPEG的宏 此时编译虽然不报错,但还有程序上的欠缺,RT-THREAD的O

Kejane的博客 2385

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

RT-Thread 7.19 记录 深度学习 人形识别

1.直接烧录二进制.bin 1.1准备 ART-Pi_W25Q64.stldr以及rtthread.bin文件下载链接:https://pan.baidu.com/s/1tFP60TIHSvbUqHM8IPSvvw 提取码:1111 1.2操作步骤 第一步:打开RT-Thread Studio,创建RT-Thread项目 并创建示例工程:art_pi_bootloader 第二步:把ART-Pi_W25Q64.stldr以及rtthread.bin这两个文件都拷贝在下面这个路径里: ...

weixin_45263278的博客 1017

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

【RT-Thread作品秀】基于ART-PI的数字图像处理与识别

一.概览本人虽然是电子信息技术专业出身,在毕业后从事的是偏软件的工作,大多数是PC软件的开发,但一直以来,闲暇时间会利用STM32做些小的作品。对于RT-Thread这国内的物联网操作系统...

rtthreadiotos的博客 2492

RT-AK 之 STM32 插件快速上手(附源码)

文章目录0. RT-AK 简介1. 准备工作1.1 X-CUBE-AI 介绍1.2 X-CUBE-AI 解压1.3 ART-PI BSP2. 执行步骤step1 运行 `rt_ai_tools/aitools.py`运行命令运行命令其他参数补充说明运行参数详细说明step2 编译和烧录RT-Thread Studio 编译和烧录示例应用代码提供3. 完整的示例工程 本项目为 RT-AK 的一个实战 DEMO。 致力于做一个保姆级教程。 本教程 RT-AK 适配目标平台:STM32 0. RT-AK 简介

lebhoryi 2067

STM32单片机RT Thread + Micropython + OpenMV + USB摄像头移植整合过程

按照之前设定的计划,利用业余时间做了这么一个项目。目标是基于RT Thread实时操作系统,将Micropython、OpenMV、USB摄像头+模拟摄像头+STM32本身自带的DVP摄像头,在OpenMV框架下,全部引入进来。这样的话,该软件平台同时具备了RTOS、Python脚本、USB OpenMV串口驱动、存储设备如SPI flash驱动,SD卡驱动、U盘驱动(和OpenMV串口组成一个USB Composite驱动,用来连电脑),其中U盘驱动可以用SD卡或者SPI flash作为介质。并实现了一个

chummyhe的博客 8696

2022 RT-thread培训学习和心得(一)

RTT-Thread暑期学校痛苦四日游

qq_35452794的博客 1348

网络摄像头海思开发板_麻雀虽小,五脏俱全!RTThread BK7252 麻雀一号开发板上手体验...

1. 麻雀一号开发板最近收到了RT-Thread的麻雀一号开发板,这款开发板可真的是:麻雀虽小,五脏俱全啊!主控芯片:BK7252,博通集成电路的一款高性能 WiFi 模块,CPU 主频180Mhz,内部拥有 512KB 内嵌 RAM 和 4M byte Flash 空间;低功耗:在深度睡眠模式下,仅需 8 uA;内置 WiFi 、 BLE 模块,可快速实现网路通信;板载摄像头、音频扬声...

weixin_30376865的博客 1923

RT-AK 新增支持 Linux 环境

前言:RT-AK 地址:https://github.com/RT-Thread/RT-AKRT-AK 之 STM32 插件快速上手地址:https://github.com/RT-Thr...

rtthreadiotos的博客 427

yolov5训练的模型移植rt-thread并测试

yolov5训练的模型移植

qlghmz的博客 3454

ART-PI 嵌入式人形检测 附源码(RT-AK Demo)

Person detection 让 AI 在你的板子上尽情舞蹈~ 本次实验的是识别摄像头中的人,就一个人,而不是多个。 从多类别检测模型改编而来,只保留 person 这个类别,根据各位看官的能力完全可以改成识别多类 本次项目的篇幅将会较长,请各位看官耐心看完 源码地址:Project4-Person_detection_RT-AK 整体分为三部分: 模型 RT-AK 使用 板子上的应用层代码实现 硬件平台 ART-Pi, 50M FLOPS。 我的模型(删减后的模型)最终部署在板子上是推理时间是

lebhoryi 1万+

潜水员检测数据集 | 潜水员检测 水下目标检测 水域搜救 目标检测9288期

本数据集专注于 水下环境中的潜水员视觉检测与识别 ,服务于水域搜救、海洋工程巡检及水下安防。数据涵盖不同水深、光照和水质条件下的潜水员图像,适配目标检测模型训练、水下机器人视觉及自动化监控等应用。

qq_2529413168的博客 210
上一篇: 【20210423期AI简报】RT-Thread AI 套件开源、X86架构大师“游向”RISC-V
下一篇: 【嵌入式AI周报20210430期】Xilinx推出K26视觉AI核心板、黑芝麻智能发布196TOPS华山A1000
RT-Thread物联网操作系统
博客等级 码龄6年 2万+粉丝 392原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值