基于STM32F4的心电监护仪设计:从模拟前端到DSP算法的嵌入式系统实践
1. 项目缘起为什么选择STM32F4做心电监护仪几年前我在做一个穿戴式健康监测设备的项目核心需求就是实时采集并处理心电信号。当时市面上主控芯片的选择很多从低功耗的MSP430到高性能的Cortex-M7都有。经过一番折腾和对比最终我们团队把票投给了STM32F4系列特别是STM32F407这款芯片。这个选择不是拍脑袋定的而是基于心电信号处理的几个硬性需求。首先心电信号ECG非常微弱典型幅度只有0.5mV到5mV而且频率范围主要在0.05Hz到150Hz之间。这意味着前端模拟电路需要极高的共模抑制比CMRR来抑制50Hz工频干扰而后端的数字处理则需要稳定的采样和一定的运算能力进行滤波和特征提取。STM32F4基于ARM Cortex-M4内核自带硬件浮点单元FPU这对于需要实时进行数字滤波比如IIR或FIR滤波、计算心率变异性HRV等涉及浮点运算的算法来说简直是“雪中送炭”。如果用没有FPU的M0或M3内核要么算法精度打折要么就得用定点数模拟浮点代码复杂度和执行时间都会大幅增加。其次心电监护仪往往需要多任务并行实时采集ADC数据、进行数字信号处理、通过串口或蓝牙发送数据、在本地OLED或LCD屏上绘制心电图波形、响应按键操作等。STM32F4的主频通常在168MHz以上配合其丰富的外设多路ADC、DAC、定时器、DMA和强大的中断管理能力可以轻松构建一个基于实时操作系统如FreeRTOS的稳定系统框架确保关键任务如数据采集的实时性不被其他任务打断。最后从开发生态和成本考虑STM32的生态在国内非常成熟。无论是标准外设库Standard Peripheral Library、HAL库还是LL库资料和例程都极其丰富。当你在凌晨三点调试ADC采样时序遇到问题时有很大概率能在论坛或开源项目里找到类似的解决方案。基于这些原因用STM32F4来打造一个功能完备、性能可靠的心电监护仪原型机是一个非常务实且高效的选择。2. 系统架构设计与核心模块选型一个完整的心电监护仪系统远不止一块单片机那么简单。它是一套精密的信号链系统。下图清晰地展示了从人体到数据呈现的完整信号通路与核心模块flowchart TD A[人体心电信号br0.5-5mV, 0.05-150Hz] -- B[模拟前端调理电路] B -- C[STM32F4主控] subgraph C [STM32F4主控核心处理流程] C1[ADC采样br12位, 500Hz以上] -- C2[DMA传输] C2 -- C3[数字信号处理br滤波、特征提取] C3 -- C4[数据分析与逻辑判断] end C -- D[数据输出与交互] subgraph D [输出与交互模块] direction LR D1[本地显示brOLED/LCD波形] D2[无线传输br蓝牙/WIFI] D3[数据存储brSD卡] D4[声光报警] end接下来我们依据这个架构深入拆解每个环节的设计要点。2.1 模拟前端信号调理电路是成败关键模拟电路部分是整个系统的“门户”它的性能直接决定了后续数字处理的上限。心电信号采集面临三大挑战信号微弱、阻抗高、干扰强大。因此前端电路必须包含以下几个核心部分仪表放大器IA这是第一级放大核心任务是提取差分信号并抑制共模干扰。我们必须选用高输入阻抗、低偏置电流、高共模抑制比CMRR的专用仪表放大器芯片例如ADI的AD8232或TI的INA333。AD8232是集成方案内部包含了仪表放大器、右腿驱动RLD和部分滤波电路对于快速原型开发非常友好。如果追求极致性能或需要更灵活的配置可以用三运放自行搭建仪表放大电路但这对布局布线和电阻匹配要求极高。高通滤波与直流偏移消除人体与电极之间会产生半电池电位这会导致一个巨大的直流偏移可达300mV远超心电信号本身。因此在仪表放大器之后必须接入一个高通滤波器截止频率约0.05Hz通常采用一阶RC无源滤波或有源滤波实现目的是隔直只让交流的心电信号通过。低通滤波与抗混叠根据奈奎斯特采样定理为了防止高频噪声在ADC采样时混叠到有效频带内需要在ADC之前设置一个抗混叠低通滤波器截止频率设在150-200Hz。同时这个滤波器也能进一步抑制高频噪声。主放大与电平移位经过隔直和初步滤波的信号幅度可能仍然较小需要第二级运算放大器进行主放大增益通常在100-1000倍之间将信号放大到适合ADC输入的范围如0-3.3V。同时由于STM32的ADC通常只能测量正电压而心电信号是双极性的有正有负因此需要通过一个参考电压如1.65V即Vref/2将信号整体“抬升”到正电压范围内这个过程叫电平移位。右腿驱动RLD电路这是一个主动降噪的神技。它通过一个运放反向放大共模信号并反馈到人体的右腿RL电极上从而形成一个负反馈环路强力抑制50Hz工频等共模干扰可以将系统的整体CMRR再提升20dB以上。实操心得模拟电路调试务必使用示波器。先不接人体用信号发生器输入一个几mV、几Hz的正弦波从第一级开始逐级测量确保波形和放大倍数符合预期。电源一定要干净建议使用线性稳压电源如LM7805给模拟部分单独供电并与数字部分的电源用磁珠或0Ω电阻隔离避免数字噪声通过电源串扰到敏感的模拟信号中。2.2 数字核心STM32F4的资源配置与驱动选定STM32F407VET6作为核心我们需要合理分配其外设资源。这里以标准外设库为例进行说明HAL库思路类似但函数接口不同。ADC配置心电信号变化相对较慢采样率设置在500Hz左右通常已足够满足最高150Hz信号的奈奎斯特频率要求。我们可以使用STM32F4的ADC1工作在独立模式选择某个通道如PA1。关键配置点采样时间由于信号源阻抗较高需要设置足够长的采样时间如ADC_SampleTime_480Cycles让采样电容充分充电保证精度。连续转换模式DMA这是实现流畅、不丢失数据采集的关键。将ADC配置为连续转换模式并启用DMA。这样每次ADC转换完成数据会自动通过DMA搬运到内存中的一个环形缓冲区完全不需要CPU干预。这释放了CPU去处理更复杂的算法。// ADC1 与 DMA 初始化关键代码片段 (标准库) DMA_InitTypeDef DMA_InitStructure; ADC_InitTypeDef ADC_InitStructure; // 1. 初始化DMA流例如DMA2_Stream0, Channel0对应ADC1 DMA_InitStructure.DMA_Channel DMA_Channel_0; DMA_InitStructure.DMA_PeripheralBaseAddr (uint32_t)(ADC1-DR); // ADC数据寄存器地址 DMA_InitStructure.DMA_Memory0BaseAddr (uint32_t)adc_buffer; // 内存缓冲区地址 DMA_InitStructure.DMA_DIR DMA_DIR_PeripheralToMemory; // 外设到内存 DMA_InitStructure.DMA_BufferSize BUFFER_SIZE; // 缓冲区大小 DMA_InitStructure.DMA_PeripheralInc DMA_PeripheralInc_Disable; // 外设地址不递增 DMA_InitStructure.DMA_MemoryInc DMA_MemoryInc_Enable; // 内存地址递增 DMA_InitStructure.DMA_PeripheralDataSize DMA_PeripheralDataSize_HalfWord; DMA_InitStructure.DMA_MemoryDataSize DMA_MemoryDataSize_HalfWord; DMA_InitStructure.DMA_Mode DMA_Mode_Circular; // 循环模式关键 DMA_InitStructure.DMA_Priority DMA_Priority_High; DMA_Init(DMA2_Stream0, DMA_InitStructure); DMA_Cmd(DMA2_Stream0, ENABLE); // 2. 配置ADC ADC_InitStructure.ADC_Resolution ADC_Resolution_12b; ADC_InitStructure.ADC_ScanConvMode DISABLE; // 单通道非扫描 ADC_InitStructure.ADC_ContinuousConvMode ENABLE; // 连续转换 ADC_InitStructure.ADC_ExternalTrigConv ADC_ExternalTrigConv_T1_CC1; // 或用软件触发 ADC_InitStructure.ADC_DataAlign ADC_DataAlign_Right; ADC_InitStructure.ADC_NbrOfConversion 1; ADC_Init(ADC1, ADC_InitStructure); // 配置通道的采样时间 ADC_RegularChannelConfig(ADC1, ADC_Channel_1, 1, ADC_SampleTime_480Cycles); // 3. 使能ADC的DMA请求并启动ADC ADC_DMACmd(ADC1, ENABLE); ADC_Cmd(ADC1, ENABLE); ADC_SoftwareStartConv(ADC1); // 如果是软件触发则用此命令启动定时器触发为了让ADC以精确、固定的频率采样最佳实践是使用一个定时器如TIM2的更新事件来触发ADC转换。将ADC的ADC_ExternalTrigConv设置为对应的定时器然后配置定时器产生固定频率的更新中断如500Hz。这样采样间隔就由硬件定时器精确控制不受软件循环延迟的影响。操作系统选择对于这个多任务项目我强烈建议上RTOS。FreeRTOS在STM32上移植非常成熟。我们可以创建几个主要任务Task_DataProcess高优先级任务从DMA环形缓冲区读取原始ADC数据进行数字滤波和心率计算。Task_Display中优先级任务将处理后的波形数据和心率值刷新到屏幕上。Task_Comm低优先级任务通过串口或蓝牙模块将数据发送到上位机。一个定时器中断服务程序用于提供系统心跳如vTaskDelayUntil所需的时钟节拍或进行高精度定时。3. 数字信号处理算法从噪声中提取心跳ADC采集到的是叠加了各种噪声的原始信号直接看就是一团抖动的曲线。数字信号处理DSP的目的就是“去伪存真”提取出清晰的心电波形和心率值。3.1 数字滤波器的设计与实现我们需要两级滤波器一个带通滤波器提取心电频段信号一个陷波器滤除工频干扰。IIR带通滤波器心电信号主要能量在0.5Hz-40Hz之间QRS波群但为了保留更多信息如P波、T波通常将通带设为0.5Hz-150Hz。IIR滤波器可以用较低的阶数实现较陡的过渡带计算效率高适合实时处理。我们可以使用“双线性变换法”设计一个巴特沃斯或切比雪夫IIR带通滤波器。在MATLAB或Python的scipy.signal库中可以轻松设计并导出滤波器系数b和a。// 一个二阶IIR滤波器的直接I型实现示例 float iir_bpf_filter(float input, const float *b, const float *a, float *w) { // w[0], w[1] 为延迟单元状态需在函数外定义并初始化为0 float output; // 计算输出 output b[0] * input b[1] * w[0] b[2] * w[1]; // 更新延迟单元 w[1] w[0]; w[0] input - a[1] * w[0] - a[2] * w[1]; // 注意符号通常a[0]1 return output; }注意IIR滤波器有稳定性问题设计时要注意极点必须在单位圆内。另外初始状态延迟单元w不为零会导致启动瞬态处理前几秒的数据时可以忽略或采用其他初始化方法。FIR陷波滤波器专门滤除50Hz工频干扰。FIR滤波器永远是稳定的线性相位但阶数通常较高。一个50Hz陷波器可以在MATLAB中用fir1函数设计。例如设计一个阶数为100的FIR陷波器在STM32F4上直接进行卷积运算开销较大。此时可以利用STM32F4的DSP库arm_fir_f32等函数它针对Cortex-M4的SIMD指令进行了优化能显著提升计算速度。或者如果采样率是50Hz的整数倍如500Hz也可以使用一种更巧妙的“移动平均减法”方法来近似实现陷波。3.2 心率检测算法QRS波群识别这是算法的核心。经过滤波后的信号QRS波群心电图中最高最陡的部分最为明显。最经典、最有效的实时检测算法是Pan-Tompkins算法。它的流程如下微分突出QRS波的斜率。y[n] (1/8) * (-x[n-2] - 2*x[n-1] 2*x[n1] x[n2])。这个5点微分器能有效抑制高频噪声。平方y[n] (x[n])^2。使所有点变为正数进一步放大QRS波。滑动窗口积分y[n] (1/N) * (x[n-(N-1)] x[n-(N-2)] ... x[n])。N通常取与QRS波宽度对应的采样点数如30ms在500Hz下即15个点。积分后QRS波变成一个平滑的凸起包络。自适应阈值检测这是算法的精髓。我们需要两个阈值一个峰值阈值用于检测可能的QRS波一个噪声阈值。它们不是固定的而是根据最近检测到的信号峰值和噪声水平动态更新。初始化阈值。寻找积分信号超过峰值阈值的点作为QRS候选。在候选点附近寻找原始滤波信号的最大斜率点确定为R波位置更精确。根据最新检测到的QRS波的峰值来更新峰值阈值和噪声阈值例如峰值阈值 噪声水平 0.25 * (峰值 - 噪声水平)。设置一个不应期如200ms在检测到一个QRS波后不应期内忽略其他峰值防止将同一个心跳的T波误检。在STM32上实现时我们需要维护几个数据缓冲区用于微分、积分等操作。由于算法是逐点处理的非常适合在ADC采样中断或高优先级任务中实时运行。检测到R波后记录下时间戳相邻R波的时间间隔RR间期的倒数就是瞬时心率单位bpm次/分钟。为了显示稳定通常会对最近几个心率值进行中值滤波或移动平均。4. 系统集成、调试与性能优化当硬件焊接好各个模块的代码也初步完成后真正的挑战——系统集成与调试就开始了。4.1 多任务同步与数据流管理在RTOS环境下任务间的通信至关重要。我们使用队列Queue来传递数据。DataProcess任务从DMA缓冲区读取一批数据如100个点处理完成后将处理后的波形数据数组和最新心率值打包成一个结构体发送到Display任务和Comm任务的队列。Display任务阻塞在队列上一旦收到新数据包就将其绘制到屏幕的图形缓冲区并更新心率数值显示。Comm任务同样从队列取数据按照约定的协议如自定义二进制协议或JSON格式打包通过串口DMA或蓝牙模块发送出去。这里有个关键技巧DMA缓冲区的大小和队列的长度需要仔细设计。如果DMA缓冲区太小DataProcess任务来不及读取就会被新数据覆盖如果队列长度太短生产数据的速度快于消费速度会导致数据包丢失。通常DMA缓冲区设为采样率的1-2秒的数据量如500Hz采样率缓冲区大小1000队列长度设为5-10并根据实际情况调整任务优先级。4.2 功耗优化考量如果设备是电池供电功耗就必须考虑。STM32F4提供了多种低功耗模式。运行模式在CPU全速运行时动态调整系统时钟SYSCLK和外设时钟APB1 APB2。不需要高精度定时时可以降低主频。睡眠模式SleepCPU停止但外设如ADC、定时器、DMA仍在运行。这对于我们这种需要持续采集的场景很有用。可以让DataProcess和Display任务在处理完数据后主动进入睡眠调用taskYIELD()或vTaskDelay()而ADC和DMA由硬件定时器触发在后台持续工作填充缓冲区。当缓冲区半满或全满时触发一个DMA中断或使用定时器中断来唤醒一个信号量Semaphore从而唤醒处理任务。外设管理不用的外设时钟如USB、SDIO一定要关闭。GPIO不用的引脚设置为模拟输入模式以降低功耗。4.3 上位机与数据分析一个简单的PC端上位机可以极大提升调试效率。我们可以用Python的pySerial和PyQt5/Tkinter快速搭建一个。通过串口接收STM32发送的原始或处理后的数据。实时绘制心电图波形。显示实时心率、RR间期等信息。记录数据到文件供后续分析如心率变异性分析。在调试算法时可以将STM32采集的原始数据通过串口发送到上位机保存为文件然后在MATLAB或Python中离线运行你的Pan-Tompkins算法与STM32在线计算的结果进行对比验证算法的正确性。这种“离线验证在线部署”的方法非常高效。4.4 常见问题与排查清单信号干扰大波形毛刺多检查模拟地AGND和数字地DGND是否单点连接运放电源是否干净右腿驱动电路是否工作电极与皮肤接触是否良好可涂抹导电膏对策确保电源去耦电容0.1uF和10uF紧靠芯片电源引脚。使用屏蔽线连接电极。在软件中优化陷波滤波器参数。心率检测不准漏检或误检检查滤波器的通带设置是否正确Pan-Tompkins算法中的微分、积分窗口长度是否合适自适应阈值的更新系数是否太敏感或太迟钝对策用上位机录制一段包含各种情况正常、运动伪影的心电数据在电脑上可视化算法的中间步骤微分后、平方后、积分后的信号观察阈值线是否合理。调整算法参数直到在离线数据上表现稳健。系统运行一段时间后死机检查堆栈溢出是RTOS中最常见的问题。检查每个任务的堆栈分配是否足够特别是使用了较大局部数组的任务。DMA缓冲区是否溢出队列是否因为生产/消费速度不匹配而被写满导致任务永久阻塞对策利用FreeRTOS提供的钩子函数如vApplicationStackOverflowHook来检测堆栈溢出。合理使用看门狗IWDG。功耗高于预期检查是否有任务在空转while(1)而不释放CPU未使用的外设时钟是否关闭GPIO配置是否正确对策确保所有任务在无事可做时都调用了阻塞式API如xQueueReceive,vTaskDelay。使用STM32CubeMX的功耗计算器或直接测量电流来定位耗电模块。这个基于STM32F4的心电监护仪项目从模拟电路设计到数字信号处理再到实时系统集成几乎涵盖了嵌入式开发的所有核心技能点。它不仅仅是一个产品原型更是一个绝佳的学习平台。当你亲手调试出一个清晰稳定的心电图波形并准确检测出每一次心跳时那种成就感是无与伦比的。整个过程中最重要的不是记住某个配置寄存器而是建立起“信号链”的系统性思维理解每一个环节对最终结果的影响并掌握从硬件到软件、从现象到本质的完整调试方法。

相关新闻

FPGA与单片机核心差异解析:从架构原理到毕设选型实战指南

FPGA与单片机核心差异解析:从架构原理到毕设选型实战指南

1. 项目缘起:一个让无数电子专业学生困惑的经典问题 又到了一年一度的毕业设计季,最近在实验室和线上社区里,总能看到不少学弟学妹在为一个基础但又至关重要的问题挠头:“我的毕设到底该用FPGA还是单片机?” 或者更直接…

2026/7/29 6:03:34 阅读更多 →
C++实现贪心算法解决分数背包问题:原理、代码与优化

C++实现贪心算法解决分数背包问题:原理、代码与优化

1. 项目概述:当“贪心”遇上“背包”在算法世界里,“背包问题”几乎是一个绕不开的经典。无论是面试刷题,还是实际项目中的资源分配优化,它都像一个万能模型,总能找到用武之地。而“贪心法”,作为一种直观、…

2026/7/29 6:03:34 阅读更多 →
企业微信 API 异常监控、全局错误码与限流处理最佳实践

企业微信 API 异常监控、全局错误码与限流处理最佳实践

在生产环境中对接外部系统时,网络抖动、凭证过期、参数错误和官方流控是导致集成应用报错的四大常见原因。为了保障系统的高可用,必须建立一套完善的异常捕获与监控报警机制。核心防御策略统一错误码拦截:企业微信所有的 API 响应均包含 errc…

2026/7/29 6:03:34 阅读更多 →

最新新闻

证件照小程序开发实战教程

证件照小程序开发实战教程

证件照制作小程序搭建教程(以“证寸照制作快”为例) 本教程将指导你从零开始,搭建一个类似“证寸照制作快”或 zhimagagou.top 的证件照制作小程序。我们将从前端页面、后端逻辑到云开发服务进行全流程讲解,并提供核心功能代码示…

2026/7/29 6:11:37 阅读更多 →
嵌入式学习8

嵌入式学习8

C语言一维字符数组与二维整型数组全面详解(知识点坑点实操) 前言 今天系统学习了C语言数组中两大核心内容:一维字符型数组(字符串存储载体)、二维整型数组(表格/矩阵存储)。C语言本身没有string…

2026/7/29 6:11:37 阅读更多 →
Linux用户与权限管理看这一篇就够了!从零基础到实战,彻底搞懂用户/组/sudo

Linux用户与权限管理看这一篇就够了!从零基础到实战,彻底搞懂用户/组/sudo

Linux用户与权限管理从入门到实战:零基础也能轻松掌握从“小白懵圈”到“熟练配置”,一文搞定用户、组、权限那些事儿一、为什么我们要管用户和权限? 想象一下,你租了一间合租房,大门钥匙(root密码&#xf…

2026/7/29 6:11:37 阅读更多 →
C++继承机制深度解析:从内存模型到工程实践

C++继承机制深度解析:从内存模型到工程实践

1. 项目概述:为什么C继承是绕不开的基石如果你写过C,或者哪怕只是看过几行C代码,大概率都见过class B : public A这样的语法。这就是继承,一个听起来简单,但实际用起来却处处是“坑”和“玄机”的概念。很多人学C继承&…

2026/7/29 6:11:37 阅读更多 →
科里奥利力:从旋转参考系到工程应用的力学原理与推导

科里奥利力:从旋转参考系到工程应用的力学原理与推导

1. 项目概述:从“洗菜池漩涡”到“傅科摆”的力学探秘如果你曾留意过家里洗菜池或浴缸放水时形成的漩涡,或者听说过证明地球自转的“傅科摆”实验,那么你已经与科里奥利力打过照面了。这个听起来有些拗口的力,并非像重力或电磁力那…

2026/7/29 6:11:37 阅读更多 →
LaTeX子公式编号与对齐排版实战指南

LaTeX子公式编号与对齐排版实战指南

1. 项目概述:子公式编号的痛点与价值 在撰写理工科论文、技术报告或者任何包含复杂数学推导的文档时,我们经常会遇到一个非常具体且恼人的问题:如何为一组紧密相关的公式中的每一个独立公式,分别打上清晰、有序的编号?…

2026/7/29 6:10:36 阅读更多 →

日新闻

【RT-DETR多模态创新改进】CVPR 2025 | 独家特征融合创新改进篇 | 引入RLAB残差线性注意力模块,有效融合并强调多尺度特征,多种改进点,适合红外与可见光融合目标检测任务,有效涨点

【RT-DETR多模态创新改进】CVPR 2025 | 独家特征融合创新改进篇 | 引入RLAB残差线性注意力模块,有效融合并强调多尺度特征,多种改进点,适合红外与可见光融合目标检测任务,有效涨点

一、本文介绍 🔥本文在RT-DETR多模态融合目标检测中引入RLAB残差线性注意力模块,可在不同模态特征交互阶段进行多次残差细化,使可见光、红外等特征在尺度、语义和空间位置上更好对齐;随后将细化特征与解码器输出拼接并生成Q、K、V,通过线性注意力自适应强化关键通道、目…

2026/7/29 0:00:23 阅读更多 →
AI编程系列02:合并知识功能,给 AI 问数和 RAG 场景打基础

AI编程系列02:合并知识功能,给 AI 问数和 RAG 场景打基础

AI编程系列02:合并知识功能,给 AI 问数和 RAG 场景打基础 在上一期「AI编程系列」中,我们学习了如何构建一个基础的 AI 问答系统,通过简单的输入输出让模型回应问题。但现实世界中的 AI 应用往往需要处理更复杂的场景:…

2026/7/29 0:00:23 阅读更多 →
AI智能体开发实战:从工具调用到企业级部署

AI智能体开发实战:从工具调用到企业级部署

1. 从被动问答到主动执行:AI Agent的范式转变过去两年,大语言模型最显著的应用形态是聊天机器人——用户提问,AI回答。但真正的生产力革命发生在2023年下半年:当AI学会主动调用工具完成任务时,生产力工具的历史被彻底改…

2026/7/29 0:00:23 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/28 12:04:22 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/28 8:29:16 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/28 5:03:42 阅读更多 →

月新闻