当前位置: 首页 > news >正文

基于亚博K210开发板——神经网络加速器

开发板

亚博K210开发板
在这里插入图片描述

实验目的

本次测试主要学习 K210 芯片中的神经网络加速器 KPU 的功能。

实验准备

实验元件

K210 芯片中的神经网络加速器 KPU

元件特性

KPU 是通用神经网络处理器,内置卷积、批归一化、激活、池化运算单元,可以对人脸或物体进行实时检测,具体特性如下:

  • 支持主流训练框架按照特定限制规则训练出来的定点化模型
  • 对网络层数无直接限制,支持每层卷积神经网络参数单独配置,包括输入输出通道数目、输入输出行宽列高
  • 支持两种卷积内核 1x1 和 3x3
  • 支持任意形式的激活函数
  • 实时工作时最大支持神经网络参数大小为 5.5MiB 到 5.9MiB
  • 非实时工作时最大支持网络参数大小为(Flash 容量-软件体积)
    在这里插入图片描述
    在这里插入图片描述

SDK 中对应 API 功能

以头文件 kpu.h为例

• kpu_task_init (0.6.0 以后不再支持,请使用 kpu_single_task_init):初始化 kpu 任务句柄,该函数具体实现在 model compiler 生成的 gencode_output.c 中。
• kpu_run (0.6.0 以后不再支持,请使用 kpu_start):启动 KPU,进行 AI 运算。
• kpu_get_output_buf (0.6.0 以后不再支持):获取 KPU 输出结果的缓存。
• kpu_release_output_buf (0.6.0 以后不再支持):释放 KPU 输出结果缓存。
• kpu_start:启动 KPU,进行 AI 运算。
• kpu_single_task_init:初始化 kpu 任务句柄。
• kpu_single_task_deinit:注销 kpu 任务。
• kpu_model_load_from_buffer:解析 kmodel 并初始化 kpu 句柄。
• kpu_load_kmodel:加载 kmodel,需要与 nncase 配合使用。
• kpu_model_free:释放 kpu 资源。
• kpu_get_output:获取 KPU 最终处理的结果。
• kpu_run_kmodel:运行 kmodel。

实验原理

KPU 可以接收图像的数据,然后经过神经网络卷积计算,返回计算后的数据,LCD 显示输出

实验过程

1.首先是 LCD、摄像头和按键的硬件引脚和软件 GPIO 映射关系。

// 硬件IO口,与原理图对应
#define PIN_LCD_CS             (36)
#define PIN_LCD_RST            (37)
#define PIN_LCD_RS             (38)
#define PIN_LCD_WR             (39)// camera
#define PIN_DVP_PCLK           (47)
#define PIN_DVP_XCLK           (46)
#define PIN_DVP_HSYNC          (45)
#define PIN_DVP_PWDN           (44)
#define PIN_DVP_VSYNC          (43)
#define PIN_DVP_RST            (42)
#define PIN_DVP_SCL            (41)
#define PIN_DVP_SDA            (40)#define PIN_KEYPAD_MIDDLE      (2)/*****************************SOFTWARE-GPIO********************************/
// 软件GPIO口,与程序对应
#define LCD_RST_GPIONUM        (0)
#define LCD_RS_GPIONUM         (1)#define KEYPAD_MIDDLE_GPIONUM  (2)/*****************************FUNC-GPIO************************************/
// GPIO口的功能,绑定到硬件IO口
#define FUNC_LCD_CS             (FUNC_SPI0_SS3)
#define FUNC_LCD_RST            (FUNC_GPIOHS0 + LCD_RST_GPIONUM)
#define FUNC_LCD_RS             (FUNC_GPIOHS0 + LCD_RS_GPIONUM)
#define FUNC_LCD_WR             (FUNC_SPI0_SCLK)#define FUNC_KEYPAD_MIDDLE      (FUNC_GPIOHS0 + KEYPAD_MIDDLE_GPIONUM)
void hardware_init(void)
{/* 按键 */fpioa_set_function(PIN_KEYPAD_MIDDLE, FUNC_KEYPAD_MIDDLE);/* LCD */fpioa_set_function(PIN_LCD_CS,  FUNC_LCD_CS);fpioa_set_function(PIN_LCD_RST, FUNC_LCD_RST);fpioa_set_function(PIN_LCD_RS,  FUNC_LCD_RS);fpioa_set_function(PIN_LCD_WR,  FUNC_LCD_WR);// DVP camerafpioa_set_function(PIN_DVP_RST,   FUNC_CMOS_RST);fpioa_set_function(PIN_DVP_PWDN,  FUNC_CMOS_PWDN);fpioa_set_function(PIN_DVP_XCLK,  FUNC_CMOS_XCLK);fpioa_set_function(PIN_DVP_VSYNC, FUNC_CMOS_VSYNC);fpioa_set_function(PIN_DVP_HSYNC, FUNC_CMOS_HREF);fpioa_set_function(PIN_DVP_PCLK,  FUNC_CMOS_PCLK);fpioa_set_function(PIN_DVP_SCL,   FUNC_SCCB_SCLK);fpioa_set_function(PIN_DVP_SDA,   FUNC_SCCB_SDA);// 使能SPI0和DVPsysctl_set_spi0_dvp_data(1);
}

2.设置摄像头和显示器接口需要的电平电压为 1.8V。

static void io_set_power(void)
{/* Set dvp and spi pin to 1.8V */sysctl_set_power_mode(SYSCTL_POWER_BANK6, SYSCTL_POWER_V18);sysctl_set_power_mode(SYSCTL_POWER_BANK7, SYSCTL_POWER_V18);
}
  1. 设置系统时钟,初始化系统中断,并使能系统全局中断。
 /* 设置系统时钟和DVP时钟 */sysctl_pll_set_freq(SYSCTL_PLL0, 800000000UL);sysctl_pll_set_freq(SYSCTL_PLL1, 300000000UL);sysctl_pll_set_freq(SYSCTL_PLL2, 45158400UL);uarths_init();/* 系统中断初始化 */plic_init();/* 使能系统全局中断 */sysctl_enable_irq();
  1. 初始化显示屏,并显示图片一秒。
/* 初始化显示屏,并显示一秒图片 */printf("LCD init\r\n");lcd_init();lcd_draw_picture_half(0, 0, 320, 240, gImage_logo);sleep(1);
  1. 初始化摄像头。
/* ov摄像头初始化 */int OV_type;OV_type=OVxxxx_read_id();/* 初始化摄像头 */if(OV_type == OV_9655){ov9655_init();}   else if(OV_type == OV_2640) {ov2640_init();}else {return 0;//打不开摄像头,结束}
  1. 初始化按键并且设置按键中断回调。
/* 按键中断回调 */
int key_irq_cb(void *ctx)
{key_flag = 1;key_state = gpiohs_get_pin(KEYPAD_MIDDLE_GPIONUM);return 0;
}/* 初始化按键 */
void init_key(void)
{// 设置按键的GPIO模式为上拉输入gpiohs_set_drive_mode(KEYPAD_MIDDLE_GPIONUM, GPIO_DM_INPUT_PULL_UP);// 设置按键的GPIO电平触发模式为上升沿和下降沿gpiohs_set_pin_edge(KEYPAD_MIDDLE_GPIONUM, GPIO_PE_BOTH);// 设置按键GPIO口的中断回调gpiohs_irq_register(KEYPAD_MIDDLE_GPIONUM, 1, key_irq_cb, NULL);
}
  1. KPU 初始化并打印剩余内存。
/* kpu初始化 */kpu_task_t task;conv_init(&task, CONV_3_3, conv_data);printf("KPU TASK INIT, FREE MEM: %ld\r\n", get_free_heap_size());printf("Please press the keypad to switch mode\r\n");
  1. 等待摄像头传输数据完成,kpu 开始运算摄像头采集的数据,并输出到g_ai_buf_out 中。
while (g_dvp_finish_flag == 0);/* 开始运算 */conv_run(&task, g_ai_buf_in, g_ai_buf_out, kpu_done);
/* KPU完成 */
static int kpu_done(void *ctx)
{g_ai_done_flag = 1;return 0;
}
  1. 等待 KPU 计算完成,就把数据转化成 RGB565 格式,因为显示器不支持RGB888 格式。
while (!g_ai_done_flag);g_ai_done_flag = 0;g_dvp_finish_flag = 0;/* 转化成LCD支持的RGB565格式 */rgb888_to_565(g_ai_buf_out, g_ai_buf_out + 320 * 240, g_ai_buf_out + 320 * 240 * 2, (uint16_t *)g_display_buf, 320 * 240);
void rgb888_to_565(uint8_t *src_r, uint8_t *src_g, uint8_t *src_b, uint16_t *dst, uint32_t len)
{uint32_t i;for (i = 0; i < len; i += 2){dst[i] = (((uint16_t)(src_r[i + 1] >> 3)) << 11) + (((uint16_t)src_g[i + 1] >> 2) << 5) + (((uint16_t)src_b[i + 1]) >> 3);dst[i + 1] = (((uint16_t)(src_r[i] >> 3)) << 11) + (((uint16_t)src_g[i] >> 2) << 5) + (((uint16_t)src_b[i]) >> 3);}
}
  1. 此时我们需要在左上角写上每个对应的模式,默认是原始 origin。
void draw_text(void)
{char string_buf[8 * 16 * 2 * 16]; //16个字符char title[20];switch (demo_index){case 0:sprintf(title, " origin ");lcd_ram_draw_string(title, (uint32_t *)string_buf, BLUE, BLACK);lcd_ram_cpyimg((char *)g_display_buf, 320, string_buf, strlen(title) * 8, 16, 0, 0);break;case 1:sprintf(title, "  edge  ");lcd_ram_draw_string(title, (uint32_t *)string_buf, BLUE, BLACK);lcd_ram_cpyimg((char *)g_display_buf, 320, string_buf, strlen(title) * 8, 16, 0, 0);break;case 2:sprintf(title, " sharp  ");lcd_ram_draw_string(title, (uint32_t *)string_buf, BLUE, BLACK);lcd_ram_cpyimg((char *)g_display_buf, 320, string_buf, strlen(title) * 8, 16, 0, 0);break;case 3:sprintf(title, "relievos");lcd_ram_draw_string(title, (uint32_t *)string_buf, BLUE, BLACK);lcd_ram_cpyimg((char *)g_display_buf, 320, string_buf, strlen(title) * 8, 16, 0, 0);break;default:break;}// sprintf(title, "% 2d % 2d % 2d", (int)conv_data[3], (int)conv_data[4], (int)conv_data[5]);// lcd_ram_draw_string(title, (uint32_t *)string_buf, BLUE, BLACK);// lcd_ram_cpyimg((char *)g_display_buf, 320, string_buf, strlen(title) * 8, 16, 0, 16);}
  1. 最后是把数据显示到 LCD 上。
/* 左上角写字母提示是哪个模式 */draw_text();/* 显示图像 */lcd_draw_picture(0, 0, 320, 240, g_display_buf);
  1. 那么怎么切换显示的模式呢?那就是通过按键的中断修改按键的状态来切换模式的。
if (key_flag) //使用按键选择的卷积核{if (key_state == 0) //按下{msleep(20); //延迟去抖key_flag = 0;demo_index = (demo_index + 1) % 4;memcpy((void *)conv_data, (void *)(conv_data_demo[demo_index]), 3 * 3 * 3 * 3 * sizeof(float));conv_init(&task, CONV_3_3, conv_data);}else //弹起{msleep(20); //延迟去抖key_flag = 0;}}
  1. 编译调试,烧录运行
    进入自己项目 build目录,运行以下命令编译。
cmake .. -DPROJ=watchdog -G "MinGW Makefiles"
make

实验现象

烧录固件完成后,系统会自动弹出一个终端窗口,并且打印一些初始化的信息,此时我们看显示器的已经显示了摄像头当前采集的画面,而且左上角还有一个‘origin’的单词,当我们按下 keypad 中间的键时,模式切换,LCD 显示的画面会变化,除了原始画面,还有其他三种模式可以显示,每按一次 keypad 都可以切换一次模式。
在这里插入图片描述

实验总结

  • KPU 是可以处理图像,让其产生不一样的视觉效果。
  • KPU 与 LCD 的数据格式是不一样的,需要转化以下才可以正常显示。

相关文章:

基于亚博K210开发板——神经网络加速器

开发板 亚博K210开发板 实验目的 本次测试主要学习 K210 芯片中的神经网络加速器 KPU 的功能。 实验准备 实验元件 K210 芯片中的神经网络加速器 KPU 元件特性 KPU 是通用神经网络处理器&#xff0c;内置卷积、批归一化、激活、池化运算单元&#xff0c;可以对人脸或物…...

【视频】使用海康SDK保存的MP4无法在浏览器(html5)中播放

1、问题描述 在使用海康 SDK 的 NET_DVR_SaveRealData 接口&#xff0c;将视频流保存成MP4文件后&#xff0c;通过浏览器无法播放MP4&#xff0c;播放其它的MP4正常。 2、原因分析 对比可以正常播放的MP4 和 无法播放的MP4文件&#xff0c;比较它们的详细信息&#xff0c;发…...

力扣小题, 力扣113.路径总和II力扣.111二叉树的最小深度 力扣.221最大正方形力扣5.最长回文子串更加优秀的算法:中心扩展算法

目录 力扣113.路径总和II 力扣.111二叉树的最小深度 力扣.221最大正方形 力扣5.最长回文子串 更加优秀的算法:中心扩展算法 力扣113.路径总和II 这道题&#xff0c;让我明白回溯了到底啥意思 之前我找的时候&#xff0c;我一直在想&#xff0c;如果可以&#xff0c;请你对比…...

力扣-无重复字符的最长子串

1.题目描述 2.题目链接 LCR 016. 无重复字符的最长子串 - 力扣&#xff08;LeetCode&#xff09; 3.题目解析 本题中我们还是使用滑动窗口来解决。 那么为什么使用滑动窗口来解决呢&#xff1f; 对于这样一个数组&#xff0c;我们定义双指针都指向数组第一个元素。left表示…...

华为2025年校招笔试真题手撕教程(一)

一、题目 输入&#xff1a; 第一行为记录的版本迭代关系个数N&#xff0c;范围是[1&#xff0c;100000]; 第二行到第N1行&#xff1a;每行包含两个字符串&#xff0c;第一个字符串为当前版本&#xff0c;第二个字符串为前序版本&#xff0c;用空格隔开。字符串包含字符个数为…...

VUE 文件下载,流形式的文件下载,判断返回的是流还是JSON;获取下载名称

在前端中&#xff0c;有很多下载文件的情况&#xff0c;在大多数情况下&#xff0c;后端是以流的形式把需要的数据返回给前端&#xff0c;这就有接口报错的情况在里面&#xff0c;如果接口报错&#xff0c;有的后端则会返回一个带有错误信息的JSON给我们&#xff0c;比如下面这…...

Starrocks的CBO基石--统计信息的来源 StatisticAutoCollector

背景 本文来从底层代码的实现来分析一下Starrocks怎么获取统计信息&#xff0c;这些统计信息在后续基于CBO的代价计算的时候有着重要的作用 本文基于Starrrocks 3.3.5 结论 Starrocks的统计信息的收集是通过周期性的运行一系列的SQL&#xff08;以分区为维度&#xff0c;如果…...

这个证书可配置么,这个配置不是需要在API里面配置吧,AT指令应该是不支持的吧

AT 固件里调这个 CA_ID 只能填 0&#xff0c;也就是说 AT 命令目前并不支持在线下发或替换 CA 证书。ESP-AT 的做法是&#xff1a;在编译/烧录阶段就把 CA 根证书刷入到 Flash&#xff08;或 SPIFFS/WL&#xff09;里的固定分区里&#xff0c;CA_ID 永远指向那一套证书&#xf…...

Python训练打卡Day31

文件的规范拆分和写法 知识点回顾 规范的文件命名规范的文件夹管理机器学习项目的拆分编码格式和类型注解 把一个文件&#xff0c;拆分成多个具有着独立功能的文件&#xff0c;然后通过import的方式&#xff0c;来调用这些文件。 1. 可以让项目文件变得更加规范和清晰 2. 可以让…...

前端性能优化的秘密武器:Preload 与 Prefetch 的深度解析

前端性能优化的秘密武器&#xff1a;Preload 与 Prefetch 的深度解析 在前端开发中&#xff0c;页面加载速度直接影响用户体验和业务转化率。而“资源预加载”技术&#xff0c;正是优化加载性能的核心手段之一。本文将深入浅出地讲解 Preload 与 Prefetch 这两项技术&#xff…...

DAY8字典的简单介绍

字典的简单介绍 字典就是键值对 标签编码 实现映射操作 import pandas as pd data pd.read_csv(data.csv) data data["Home Ownership"].value_counts() # 定义映射字典 mapping {"Own Home": 1,"Rent": 0,"Have Mortgage": 2,&…...

VPLC (VPLCnext) K8S

前序 在接触Virtual PLCnext Control的时候&#xff0c;我想过好几次如何将它运行在k8s上&#xff0c;由于对k8s的熟悉程度不够&#xff0c;跌跌撞撞尝试了很久&#xff0c;终于把vPLC部署在单机版的k8s上了。&#xff08;此教程仅为demo阶段&#xff0c;此教程仅为demo阶段&a…...

鸿蒙App开发学习路径

以下是一份系统的鸿蒙&#xff08;HarmonyOS&#xff09;App开发学习路径&#xff0c;适合从零开始逐步掌握相关技能&#xff1a; 1. 基础知识储备 1.1 理解鸿蒙系统 鸿蒙核心特性&#xff1a;分布式能力、一次开发多端部署、原子化服务、ArkUI框架。与Android/iOS的区别&…...

【Java多态】:灵活编程的核心

&#x1f381;个人主页&#xff1a;User_芊芊君子 &#x1f389;欢迎大家点赞&#x1f44d;评论&#x1f4dd;收藏⭐文章 &#x1f50d;系列专栏&#xff1a;【Java】内容概括 【前言】 在Java面向对象编程的世界中&#xff0c;多&#xff08;Polymorphism&#xff09; 是一个核…...

k8s容器入门(1)有状态服务 vs 无状态服务 核心区别

本质区别 维度有状态服务 (Stateful)无状态服务 (Stateless)数据存储服务内部维护持久化数据不保存客户端会话数据请求关联性后续请求依赖之前请求的状态每个请求独立处理典型示例数据库/消息队列/文件存储Web API/计算服务/负载均衡 技术实现对比 #mermaid-svg-hoKO2gnZ8Gvms…...

BERT框架:自然语言处理的革命性突破

引言 在自然语言处理&#xff08;NLP&#xff09;领域&#xff0c;2018年Google推出的BERT&#xff08;Bidirectional Encoder Representations from Transformers&#xff09;框架无疑是一场革命。作为基于Transformer架构的双向编码器表示模型&#xff0c;BERT通过预训练学习…...

基于FPGA控制电容阵列与最小反射算法的差分探头优化设计

在现代高速数字系统测试中&#xff0c;差分探头的信号完整性直接影响测量精度。传统探头存在阻抗失配导致的信号反射问题&#xff0c;本文提出一种通过FPGA动态控制电容阵列&#xff0c;结合最小反射算法的优化方案&#xff0c;可实时调整探头等效容抗&#xff0c;将信号反射损…...

珠宝课程小程序源码介绍

这款珠宝课程小程序源码&#xff0c;基于ThinkPHPFastAdminUniApp开发&#xff0c;功能丰富且实用。ThinkPHP提供稳定高效的后台服务&#xff0c;保障数据安全与处理速度&#xff1b;FastAdmin助力快速搭建管理后台&#xff0c;提升开发效率&#xff1b;UniApp则让小程序能多端…...

DAY33

简单的神经网络 PyTorch和cuda的安装 查看显卡信息的命令行命令&#xff08;cmd中使用&#xff09; cuda的检查 简单神经网络的流程 1.数据预处理&#xff08;归一化、转换成张量&#xff09; 2.模型的定义 1.继承nn.Module类 2.定…...

AI相关的笔记

推荐视频&#xff1a; https://www.bilibili.com/video/BV1aeLqzUE6L/?share_sourcecopy_web&vd_source3d0a14a267c9cbda8f2a6184dd8c564d AI Agent AI Agent&#xff08;人工智能代理&#xff09; AI Agent 是一种具备自主决策和执行能力的智能程序&#xff0c;能够像…...

Python训练营---Day33

知识点回顾&#xff1a; PyTorch和cuda的安装查看显卡信息的命令行命令&#xff08;cmd中使用&#xff09;cuda的检查简单神经网络的流程 数据预处理&#xff08;归一化、转换成张量&#xff09;模型的定义 继承nn.Module类定义每一个层定义前向传播流程 定义损失函数和优化器定…...

window 显示驱动开发-指定 GDI 硬件加速渲染操作

调用 DxgkDdiRenderKm 函数时&#xff0c;操作系统指定要通过 pRenderKmArgs 参数执行的 GDI 硬件加速呈现操作的类型。 DirectX 图形内核子系统的显示端口驱动程序 (Dxgkrnl.sys) 将 pRenderKmArgs-pCommand> 成员设置为指向包含可变大小DXGK_RENDERKM_COMMAND结构数组的命…...

什么是VR展馆?VR展馆的实用价值有哪些?

VR展馆&#xff0c;重塑展览体验。在数字化时代浪潮的推动下&#xff0c;传统的实体展馆经历前所未有的变革。作为变革的先锋&#xff0c;VR展馆以无限的潜力&#xff0c;成为展览行业的新宠。 VR展馆&#xff0c;即虚拟现实展馆&#xff0c;是基于VR&#xff08;Virtual Real…...

uniapp实现H5、APP、微信小程序播放.m3u8监控视频

目录 1.APP播放.m3u8监控视频 2.H5播放.m3u8监控视频 3.微信小程序播放.m3u8监控视频 最近在写一个uniapp实现h5、app、微信小程序兼容三端的播放监控视频功能&#xff0c;我原本以为一套代码多处运行&#xff0c;但事实并非如此&#xff0c;h5可以运行&#xff0c;微信小程…...

CAD如何导出PDF?PDF如何转CAD?详细教程来了

浩辰CAD看图王是一款功能强大的CAD图纸查看与编辑工具&#xff0c;其核心功能之一便是支持CAD与PDF格式的互转。下面是CAD看图王输出PDF和PDF转CAD功能的详细介绍及操作步骤&#xff1a; 一、输出PDF功能 看图王可以将CAD图纸转换为PDF格式&#xff0c;是文件在不同的设备上显…...

微信小程序学习基础:从入门到精通

文章目录 第一章&#xff1a;微信小程序概述1.1 什么是微信小程序1.2 小程序与原生APP、H5的区别1.3 小程序的发展历程与现状 第二章&#xff1a;开发环境搭建2.1 注册小程序账号2.2 安装开发者工具2.3 开发者工具界面介绍2.4 第一个小程序项目 第三章&#xff1a;小程序框架与…...

[免费]微信小程序宠物医院管理系统(uni-app+SpringBoot后端+Vue管理端)【论文+源码+SQL脚本】

大家好&#xff0c;我是java1234_小锋老师&#xff0c;看到一个不错的微信小程序宠物医院管理系统(uni-appSpringBoot后端Vue管理端)&#xff0c;分享下哈。 项目视频演示 【免费】微信小程序宠物医院管理系统(uni-appSpringBoot后端Vue管理端) Java毕业设计_哔哩哔哩_bilibi…...

乘最多水的容器 | 算法 | 给定一个整数数组。有n条垂线。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。

在我们日常生活中&#xff0c;蓄水似乎是一个极为朴素的物理行为&#xff1a;两堵墙之间&#xff0c;注入水&#xff0c;看谁能装得更多。可如果换个角度&#xff0c;从算法的视角去看这个问题&#xff0c;它会变得怎样&#xff1f;你是否意识到&#xff0c;这样一个简单的问题…...

英伟达有意入股 PsiQuantum,释放战略转向量子计算的重要信号

内容来源&#xff1a;量子前哨&#xff08;ID&#xff1a;Qforepost&#xff09; 文丨浪味仙 排版丨浪味仙 行业动向&#xff1a;1800字丨5分钟阅读 “十五年太早&#xff0c;三十年又太晚&#xff0c;但如果说二十年&#xff0c;我想很多人都会相信。” emmmm&#xff0c…...

【Ubuntu修改串口延时(Latency Timer)为1毫秒(设备拔插或系统重启后自动生效)】

Ubuntu修改串口延时Latency Timer为1毫秒-设备拔插或系统重启后自动生效 在Ubuntu系统中&#xff0c;串口设备的延时参数(latency_timer)可以通过udev规则永久修改。以下是完整步骤&#xff1a; 创建udev规则文件 sudo vim /etc/udev/rules.d/99-ftdi-low-latency.rules添加以…...

《量子计算实战》PDF下载

内容简介 在加密、科学建模、制造物流、金融建模和人工智能等领域&#xff0c;量子计算可以极大提升解决问题的效率。量子系统正变得越来越强大&#xff0c;逐渐可用于生产环境。本书介绍了量子计算的思路与应用&#xff0c;在简要说明与量子相关的科学原理之后&#xff0c;指…...

Win 系统 conda 如何配置镜像源

通过命令添加镜像源&#xff08;推荐&#xff09; 以 清华源 为例&#xff0c;依次执行以下命令&#xff1a; # 添加主镜像源 conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main # 添加免费开源镜像源 conda config --add channels http…...

[密码学实战]使用C语言实现TCP服务端(二十九)

[密码学实战]使用C语言实现TCP服务端(二十九) 引言 TCP(传输控制协议)是互联网通信中最核心的协议之一,它提供可靠的、面向连接的数据传输服务。通过C语言的标准Socket API,开发者可以灵活地实现TCP客户端和服务端程序。本文将详细讲解TCP通信的原理,并提供完整的代码…...

打卡Day34

问题&#xff1a; 背景&#xff1a; 剩余时长 总时长 - 必须的计算时长&#xff08;3秒&#xff09;。记录间隔、记录次数和剩余时长的关系需要进一步分析。 数据观察&#xff1a; 当总epoch为20000时&#xff0c;不同记录间隔对应的记录次数和剩余时长如下&#xff1a; 记…...

谷歌开源医疗领域AI语言模型速递:medgemma-27b-text-it

一、模型概述 MedGemma 是由谷歌开发的一个医疗领域 AI 模型系列&#xff0c;基于 Gemma 3 架构&#xff0c;旨在加速医疗保健相关 AI 应用的开发。该模型系列包含两个主要变体&#xff1a;4B 多模态版本&#xff08;支持文本和图像理解&#xff09;以及 27B 纯文本版本&#…...

C++ JSON解析技术详解

一、JSON基础与解析流程 1.1 JSON数据结构 JSON包含两种核心结构&#xff08;&#xff09;&#xff1a; ​​对象​​&#xff1a;{}包裹的键值对集合​​数组​​&#xff1a;[]包裹的值序列 1.2 解析流程 flowchart TDA[加载JSON数据] --> B{数据来源}B -->|字符串…...

多维应用场景的落地实践的智慧园区开源了

智慧园区场景视频监控平台是一款功能强大且简单易用的实时算法视频监控系统。它的愿景是最底层打通各大芯片厂商相互间的壁垒&#xff0c;省去繁琐重复的适配流程&#xff0c;实现芯片、算法、应用的全流程组合&#xff0c;从而大大减少企业级应用约95%的开发成本。用户只需在界…...

第三次中医知识问答模型微调

本次参数 llamafactory-cli train \ --stage sft \ --do_train True \ --model_name_or_path /home/qhyz/zxy/LLaMA-Factory/model \ --preprocessing_num_workers 16 \ --finetuning_type lora \ --template deepseek3 \ --flash_attn fa2 \ --dataset_dir data \ --dataset …...

基于SpringBoot的美食分享平台设计与开发(Vue MySQL)

&#x1f497;博主介绍&#x1f497;&#xff1a;✌在职Java研发工程师、专注于程序设计、源码分享、技术交流、专注于Java技术领域和毕业设计✌ 温馨提示&#xff1a;文末有 CSDN 平台官方提供的老师 Wechat / QQ 名片 :) Java精品实战案例《700套》 2025最新毕业设计选题推荐…...

开闭原则 (Open/Closed Principle, OCP)

定义&#xff1a;一个软件实体应当对扩展开放&#xff0c;对修改关闭。即软件实体应尽量在不修改原有代码的情况下进行扩展 问题由来&#xff1a;任何软件都需要面临一个很重要的问题&#xff0c;即它们的需求会随时间的推移而发生变化。因为变化&#xff0c;升级和维护等原因&…...

在 “Linux 9“ 系统快速安装配置RabbitMQ

这是在 “Linux 9” 系统&#xff08;如 RHEL 9、AlmaLinux 9、Rocky Linux 9&#xff09;上安装和配置 RabbitMQ 的中文指南。 前提条件&#xff1a; 你拥有 sudo 权限。你的系统已连接到互联网。firewalld 是你当前活动的防火墙&#xff08;在基于 RHEL 的系统上很常见&…...

【brpc】安装与使用

brpc安装与使用 1. brpc是什么2. 安装3. 类与接口介绍3.1 日志输出类与接口3.2 protobuf 类与接口3.3 服务端类与接口3.4 客户端类与接口 4. 使用4.1 同步调用4.2 异步调用 1. brpc是什么 brpc 是用 c语言编写的工业级 RPC 框架&#xff0c;常用于搜索、存储、机器学习、广告、…...

C++:关联容器set容器,multiset容器

set与map不一样之处在于set的键值和时值是一样的&#xff0c;且个元素的值不能重复&#xff0c;容器会根据键的大小默认按升序排序&#xff0c;set底层也是红黑树。 multiset则允许键重复。 例如&#xff1a; #include<iostream> #include<set> using namespace…...

Java 调用 GitLab API

前言&#xff1a; 上一篇我们使用了 webhook 的方式获取用户提交代码的信息&#xff0c;本篇我简单分享一下使用 GitLab API 来获取用户提交代码的信息。 业务分析&#xff1a; 我们需要统计每一个用户的提交代码的信息&#xff0c;那 GitLab 是否有这样的接口呢&#xff1f…...

“智”斗秸秆焚烧,考拉悠然以科技之力筑牢生态安全防线

清晨&#xff0c;薄雾笼罩着辽阔的田野&#xff0c;农民们开始了一天的劳作。然而&#xff0c;随着收割季的到来&#xff0c;秸秆焚烧问题也逐渐浮现&#xff0c;成为威胁空气质量与生态安全的隐患。传统监管方式往往显得力不从心&#xff0c;效率低下的困境亟待突破。在此背景…...

数据库基础面试题(回答思路和面试建议)

以下是针对这些数据库基础问题的详细回答思路和面试回答建议&#xff0c;结合理论、应用场景和实际项目经验展开说明&#xff1a; 1. 数据库三大范式是什么&#xff1f;实际项目中是否需要严格遵循&#xff1f; 回答思路&#xff1a; 先解释三大范式&#xff08;逐层递进&…...

数据库blog5_数据库软件架构介绍(以Mysql为例)

&#x1f33f;软件的架构 &#x1f342;分类 软件架构总结为两种主要类型&#xff1a;一体式架构和分布式架构 ● 一体化架构 一体式架构是一种将所有功能集成到一个单一的、不可分割的应用程序中的架构模式。这种架构通常是一个大型的、复杂的单一应用程序&#xff0c;包含所…...

mysql可重复读隔离级别下的快照读和当前读

在MySQL的可重复读隔离级别下&#xff0c;快照读和当前读是两种不同的读取方式&#xff0c;它们的特点和应用场景有所不同。 快照读 定义&#xff1a;快照读是指在事务中读取数据时&#xff0c;读取的是事务开始时的历史版本数据&#xff0c;而非当前最新的数据。实现原理&…...

MySQL 单表与多表操作详解

&#x1f388;边走、边悟&#x1f388;迟早会好 目录 一、单表查询整合 &#xff08;一&#xff09;通用模板展示 &#xff08;二&#xff09;举例说明 1. 简单查询 2. 条件查询 3. 高级查询 &#xff08;三&#xff09;注意事项 &#xff08;四&#xff09;Mapper 简…...

Spring概念问题详解

一、Bean的生命周期 1.1 BeanDefinition Spring容器在进行实例化时&#xff0c;会将xml配置的<bean>的信息封装成一个BeanDefinition对象&#xff0c;Spring根据BeanDefinition来创建Bean对象&#xff0c;里面有很多的属性用来描述Bean。 beanClassName&#xff1a;be…...