掌控板电子琴仿真:从PWM音频生成到触摸交互的嵌入式开发实践
1. 项目概述当掌控板遇见电子琴最近在折腾一个挺有意思的小项目用一块掌控板mPython来模拟一个简易的电子琴。这听起来可能有点“复古”毕竟现在手机上的钢琴应用功能强大、音色丰富。但对我来说这个项目的魅力不在于复现一个多么专业的乐器而在于亲手搭建一个从硬件交互到声音生成的完整闭环。它更像是一个融合了编程、电子和音乐启蒙的“玩具”特别适合教育场景或者像我这样的硬件爱好者用来练手。简单来说这个项目就是利用掌控板上的触摸按键金手指或者外接的物理按键来触发不同频率的声音从而演奏出简单的旋律。核心的“仿真”二字在这里有两层含义一是用软件和简单的硬件来模拟一个复杂设备电子琴的核心功能二是在开发过程中我们可以借助mPython X这样的在线仿真环境先进行逻辑和功能的模拟测试这能极大地提高开发效率避免在硬件上反复烧录调试的麻烦。如果你手头有一块掌控板或者对用代码“创造”声音感兴趣想了解如何将抽象的编程逻辑转化为可听、可玩的交互体验那么这个项目会是一个绝佳的起点。它不要求你有深厚的乐理知识但会带你走过从电路连接、事件处理到音频生成的全过程每一步都充满了动手的乐趣。2. 核心思路与方案选型为什么选择掌控板来做这件事市面上能发声的开发板很多比如Arduino Uno加个蜂鸣器模块也能实现。但掌控板有几个独特的优势让它成为这个项目的理想选择。首先集成度高开箱即用。掌控板本身集成了多个触摸按键金手指、LED点阵屏、麦克风、加速度计等传感器还有一个内置的蜂鸣器。这意味着我们不需要为了输入和输出额外焊接一堆模块一块板子就是完整的交互终端。对于电子琴项目触摸按键可以直接作为琴键LED点阵可以显示当前状态或简谱蜂鸣器负责发声所有核心部件都已就位。其次编程环境友好。mPython特指配套的图形化/代码编程软件及其在线仿真环境mPython X对初学者极其友好。你可以用图形化积木块快速搭建逻辑也可以切换到Python代码进行更精细的控制。更重要的是在线仿真功能允许你在没有实物硬件的情况下在电脑上模拟运行程序检查触摸响应、声音逻辑是否正确。这对于方案验证和教学演示来说价值巨大能避免因硬件连接错误或代码逻辑问题导致的反复折腾。基于这些考虑我设计的方案核心如下输入使用掌控板上的6个触摸按键P、Y、T、H、O、N对应的金手指作为琴键。为什么是6个这刚好可以对应一组简单的音阶例如C调的1、2、3、4、5、6足够演奏许多儿歌和简单旋律。如果需要更多音可以考虑外接物理按键扩展到其他IO口。处理主控芯片是掌控板核心的ESP32它负责检测触摸事件并根据按下的不同按键映射到不同的音符频率。输出声音通过板载的无源蜂鸣器输出。我们需要通过PWM脉冲宽度调制信号以特定的频率驱动蜂鸣器振动从而产生对应音高的声音。同时利用板载的LED点阵屏可以显示当前按下的音符编号或一个简单的动画增加反馈乐趣。这个方案的优势在于硬件成本极低仅需一块掌控板软件生态成熟且整个开发测试流程可以大部分在仿真环境中完成大大降低了入门门槛和试错成本。3. 硬件连接与核心原理解析虽然我们主要使用板载资源但理解其背后的连接和原理对于调试和后续扩展至关重要。3.1 触摸按键与蜂鸣器电路浅析掌控板的触摸按键金手指原理是电容式感应。ESP32芯片内部有专门的触摸传感器模块这些金手指连接到了特定的触摸感应IO口例如TOUCH0、TOUCH2等。当手指接触金手指时会引入一个额外的对地电容芯片通过检测该引脚电容值的变化来判断触摸事件。在编程中我们无需关心具体电容值只需读取该引脚的电平状态或测量其触摸读数一个模拟量即可。蜂鸣器分为有源和无源两种。有源蜂鸣器内部有振荡电路给定高电平就响音调固定无源蜂鸣器内部没有振荡源需要外部输入特定频率的方波信号才能发声改变频率就能改变音高。掌控板集成的是无源蜂鸣器这正合我们意它通常连接在一个支持PWM输出的GPIO引脚上在掌控板中通常是引脚P0或P8具体需查看板型定义。PWM可以通过快速切换高低电平来模拟不同频率的方波。3.2 音符频率的确定要让蜂鸣器发出准确的音高我们必须知道每个音符对应的物理频率。在音乐中标准音A4的频率是440Hz。其他音符的频率可以根据十二平均律公式计算得出频率 440 * 2^((n-49)/12)Hz其中n是钢琴键序号A4为49。 但对于我们这个简易电子琴我们可以直接使用一组预定义的频率值。例如C大调的中音区部分音符频率单位Hz如下音符C4D4E4F4G4A4B4C5频率262294330349392440494523在我们的6键设计中可以选取C4到A4这六个音262 294 330 349 392 440这已经能组成一个基本的音阶。注意蜂鸣器发出的音色是单一的方波与真实钢琴的复杂谐波相差甚远所以听起来会是那种清脆的“滴滴”声。这是硬件限制我们的目标是音高准确而非音色优美。3.3 在线仿真的关键作用在动手连接任何线之前虽然本项目可能不需要额外接线强烈建议先在mPython X在线仿真环境中搭建和测试程序。仿真环境完美模拟了掌控板的界面你可以用鼠标点击屏幕上的虚拟金手指来触发事件并听到电脑模拟发出的声音通常是系统蜂鸣音。这能帮你快速验证逻辑检查按键映射是否正确按下不同的键是否触发了不同的频率事件。调试程序可以方便地添加print语句输出调试信息而无需通过串口监视器。教学与分享即使没有硬件其他人也能看到你的项目效果便于代码交流和展示。仿真通过后再将代码烧录到实体掌控板成功率会高很多。这是一种非常高效的“软硬结合”开发模式。4. 软件实现与代码详解接下来我们进入核心的编程部分。我将使用mPython的代码模式Python进行讲解因为代码模式更灵活也便于理解底层原理。整个程序可以分为几个模块引脚定义、频率映射、触摸检测、发声控制。4.1 环境准备与引脚定义首先你需要确保安装了mPython软件或者直接访问mPython X在线编辑器。新建一个项目切换到代码模式。我们首先导入必要的库并定义硬件连接。虽然蜂鸣器引脚可能是固定的但最好查阅一下你所用手册。假设蜂鸣器连接在Pin8上。from mpython import * # 导入掌控板硬件控制库 import time # 定义蜂鸣器引脚 buzzer PWM(Pin(Pin.P8), freq1000, duty0) # 初始化PWM初始频率设为1000Hz占空比0不响 # 定义触摸按键对应的引脚根据掌控板丝印或文档 # 注意这里的Pin.P* 需要替换为你板子上实际对应的触摸引脚编号例如TouchPad.P, TouchPad.Y 等 # 以下为示例请根据实际调整 touch_keys { C: TouchPad(Pin(Pin.P13)), # 假设P13对应‘P’金手指映射为C音 D: TouchPad(Pin(Pin.P14)), # 假设P14对应‘Y’金手指映射为D音 E: TouchPad(Pin(Pin.P15)), # 假设P15对应‘T’金手指映射为E音 F: TouchPad(Pin(Pin.P16)), # 假设P16对应‘H’金手指映射为F音 G: TouchPad(Pin(Pin.P17)), # 假设P17对应‘O’金手指映射为G音 A: TouchPad(Pin(Pin.P18)), # 假设P18对应‘N’金手指映射为A音 } # 定义音符频率映射表 (Hz) note_freq { C: 262, # Do D: 294, # Re E: 330, # Mi F: 349, # Fa G: 392, # So A: 440, # La }实操心得在定义触摸引脚时最容易出错的就是引脚编号不对应。一个笨但有效的方法是写一个简单的测试程序循环读取每个触摸引脚的值并打印出来然后用手触摸各个金手指观察哪个引脚的值变化最明显那就是它了。mPython的TouchPad对象的read()方法返回一个数值数值越小通常表示触摸越强电容值越大。4.2 触摸检测与发声主循环核心逻辑在一个无限循环中不断检测每个触摸按键的状态如果某个按键被触摸则让蜂鸣器以对应音符的频率响起并在点阵屏上显示提示如果没有任何按键被触摸则停止发声。这里涉及一个关键点如何判断“触摸”。触摸传感器的读数是一个模拟量我们需要设定一个阈值。读数低于阈值时认为被触摸。# 设置触摸阈值需要根据实际测试调整 TOUCH_THRESHOLD 100 # 记录当前正在播放的音符用于防止重复触发和释放判断 current_note None while True: note_played False # 标记本轮循环是否有音符被按下 # 扫描所有触摸按键 for note_name, touch_pad in touch_keys.items(): touch_value touch_pad.read() # 如果读取值小于阈值则认为被触摸 if touch_value TOUCH_THRESHOLD: # 如果这个音符不是当前正在响的音符则启动它 if current_note ! note_name: freq note_freq[note_name] buzzer.freq(freq) # 设置PWM频率 buzzer.duty(512) # 设置占空比约50%驱动蜂鸣器发声 current_note note_name # 在点阵屏上显示音符名 oled.fill(0) # 清屏 oled.text(Note:, 0, 0) oled.text(note_name, 60, 0) oled.show() note_played True break # 找到第一个被按下的键就跳出扫描简易处理不支持和弦 # 如果扫描完所有键都没有被触摸且之前有音符在响则停止发声 if not note_played and current_note is not None: buzzer.duty(0) # 占空比设为0停止发声 current_note None oled.fill(0) oled.text(Ready, 0, 0) oled.show() # 短暂延时降低CPU占用 time.sleep_ms(20)这段代码实现了一个简单的单音电子琴。它只响应最先被按下的那个键因为break语句这是为了逻辑简单。如果你想要实现“和弦”效果同时按下多个键发多个音就需要移除break并管理一个正在发声的音符列表同时用多个PWM通道驱动蜂鸣器但单个无源蜂鸣器无法同时发出多个频率这需要更复杂的方案比如快速切换频率或使用多个蜂鸣器。4.3 功能优化与扩展基础功能完成后我们可以添加一些提升体验的功能音量控制蜂鸣器的音量可以通过PWM的duty占空比来粗略调节。占空比越大平均功率越高声音越响但过大会损坏蜂鸣器。可以外接一个电位器到ADC引脚通过旋转电位器实时改变duty值。节拍与简单乐曲自动播放我们可以将一首简单的曲子如《小星星》编码成音符序列和时长序列然后让程序自动顺序播放实现一个音乐盒功能。# 《小星星》第一句C C G G A A G melody [C, C, G, G, A, A, G] duration [0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 1] # 每个音符的持续时间秒 for i in range(len(melody)): note melody[i] buzzer.freq(note_freq[note]) buzzer.duty(512) time.sleep(duration[i]) buzzer.duty(0) time.sleep(0.05) # 音符间短暂停顿触摸灵敏度校准可以在程序启动时自动检测每个触摸按键在未触摸时的基准值然后根据这个基准值动态计算阈值以适应不同的环境如温度、湿度变化。def calibrate_touch(keys, samples100): baseline {} for name, pad in keys.items(): values [pad.read() for _ in range(samples)] baseline[name] sum(values) / samples return baseline # 使用时阈值可以设为 baseline * 0.8 或类似比例5. 常见问题与调试实录在实际操作中你几乎一定会遇到下面这些问题。我把我的踩坑经历和解决方案记录下来希望能帮你节省时间。5.1 蜂鸣器不响或声音异常这是最常见的问题。请按以下步骤排查检查引脚和初始化确认你使用的引脚如P8确实是连接蜂鸣器的PWM引脚。参考官方板级支持包定义。初始化PWM时freq参数不能为0可以先设一个默认值如1000。检查占空比duty值范围是0-1023。设置为0时无声设置为512左右是常用值。如果值太小如10声音会非常微弱。硬件问题有些掌控板的蜂鸣器可能需要特定的驱动电路或者蜂鸣器本身可能损坏。尝试用一段简单的测试代码让蜂鸣器以固定频率响一声排除软件问题。from mpython import * import time buzzer PWM(Pin(Pin.P8), freq1000, duty0) buzzer.duty(512) time.sleep(1) buzzer.duty(0)5.2 触摸按键无反应或过于灵敏阈值问题TOUCH_THRESHOLD这个值是关键。如果设置得太高可能稍微靠近就被触发过于灵敏如果设置得太低可能需要用力按压才有反应不灵敏。务必进行实地测试。在循环中打印出每个触摸引脚read()的数值观察没有触摸时的静态值比如是800然后轻轻触摸时的值可能降到200。阈值可以设为静态值的60%-70%比如(800 200) // 2 500作为一个起始测试点。引脚映射错误这是最致命的。你必须百分百确认代码中的Pin.P13等编号对应的是板子上标注的触摸金手指。不同批次的掌控板引脚定义可能有细微差别。查阅官方文档或使用引脚测试程序是唯一可靠的方法。环境干扰触摸传感器容易受到电源噪声、人体静电等干扰。确保板子接地良好远离大功率电器。如果是在仿真环境测试那触摸检测是完美模拟的不存在此问题。5.3 程序运行卡顿或反应迟钝循环延时不当主循环中的time.sleep_ms(20)给了系统20毫秒的“休息”时间。这个值太小会加重CPU负担虽然ESP32性能足够太大则会导致触摸检测响应慢。20-50毫秒是一个比较平衡的区间。OLED显示耗时oled.text()和oled.show()是比较耗时的操作尤其是在循环中频繁执行。如果对实时性要求极高可以考虑减少刷新频率比如只在音符变化时才更新屏幕。代码逻辑缺陷比如在循环中进行了复杂的计算或阻塞式操作。确保主循环尽可能轻量。5.4 在线仿真与实物运行效果不一致这是一个典型问题。仿真环境是理想的而实物环境是复杂的。触摸行为差异仿真里鼠标点击是完美的数字信号而实物触摸是模拟信号有噪声和阈值问题。仿真主要用来验证逻辑流阈值等参数必须在实物上最终调整。声音差异仿真环境可能用电脑扬声器播放模拟音音色和实物蜂鸣器完全不同。这是正常的只要频率映射正确即可。性能差异仿真是“虚拟机”运行速度可能比实物快或慢。如果程序涉及精确计时如播放乐曲在实物上可能需要微调time.sleep的参数。我的建议是采用“仿真-实物”迭代开发法。先在仿真中把核心逻辑状态机、频率映射、显示逻辑跑通确保没有语法错误和逻辑死循环。然后将代码下载到硬件集中精力解决硬件相关的问题阈值、音量、引脚。这样能有效区分问题是出在软件逻辑还是硬件环境上。6. 项目进阶与扩展思路当你完成了基础的单音电子琴后这个项目还有很多可以挖掘和扩展的方向让它从一个玩具变成一个更有深度的学习平台。6.1 扩展更多音符与八度切换6个键显然不够用。我们可以通过外接矩阵键盘或更多的触摸传感器来扩展。更巧妙的办法是利用板载的A/B按键或加速度计作为“八度切换”键。例如默认是中央C区按下A键所有音符频率升一个八度频率翻倍按下B键则降一个八度频率减半。这样用有限的键就能覆盖更广的音域。实现上只需要在映射频率时乘以一个系数octave_shift 0 # 0: 中央区 1: 高八度 -1: 低八度 actual_freq note_freq[note_name] * (2 ** octave_shift)6.2 实现录音与回放功能利用掌控板有限的RAM或外接SD卡可以实现简单的录音回放。定义一个缓冲区在“录音模式”下不仅记录按下的音符还记录其按下的时间戳和持续时间。在“播放模式”下按照时间序列重新触发这些音符。这涉及到更复杂的数据结构和状态管理但对理解事件序列化、数据存储是极好的练习。6.3 引入简单合成与音效目前我们产生的是纯正弦波实际上是方波音色。我们可以通过修改PWM的波形来创造不同的音效。例如通过快速切换频率制造颤音效果或者通过改变duty的规律来制造音量包络Attack-Decay-Sustain-Release, ADSR让声音更像真实的乐器起落而不是生硬的“开/关”。# 简单的ADSR包络模拟伪代码 def play_note_with_adsr(freq, duration): # Attack: 音量从0快速上升到最大 for d in range(0, 512, 10): buzzer.duty(d) time.sleep_ms(5) # Sustain: 保持最大音量一段时间 time.sleep_ms(int(duration * 0.6 * 1000)) # Release: 音量从最大缓慢下降到0 for d in range(512, 0, -10): buzzer.duty(d) time.sleep_ms(5) buzzer.duty(0)虽然受限于蜂鸣器性能和ESP32的处理能力效果有限但这个过程本身是对数字音频合成最直观的入门。6.4 与其它传感器联动掌控板丰富的传感器为电子琴增加了更多交互可能。例如可以用光线传感器控制音量光线越强音量越大用加速度计实现“摇杆”效果倾斜板子改变音调弯音或者用麦克风实现声控触发。这些都能让这个简单的电子琴项目变成一个独特的交互式音乐装置。从一块小小的掌控板出发我们不仅实现了一个电子琴的仿真更走过了嵌入式开发中传感器数据采集、事件驱动编程、PWM信号输出、人机交互设计的完整流程。最重要的不是复现了某个产品而是在这个过程中建立起的将想法通过代码和硬件实现出来的能力。当你按下自己定义的“琴键”听到它发出预设的音符时那种创造和掌控的成就感是任何现成玩具都无法给予的。

相关新闻

MNML核心功能解析:PostCSS编译与Browser-Sync实时刷新的终极开发体验

MNML核心功能解析:PostCSS编译与Browser-Sync实时刷新的终极开发体验

MNML核心功能解析:PostCSS编译与Browser-Sync实时刷新的终极开发体验 【免费下载链接】mnml Start a responsive html5 site with postcss and browser-sync 项目地址: https://gitcode.com/gh_mirrors/mn/mnml MNML是一款轻量级响应式HTML5开发模板&#xf…

2026/7/28 4:18:13 阅读更多 →
混合储能系统容量优化配置与VMD-EMD信号分解技术

混合储能系统容量优化配置与VMD-EMD信号分解技术

1. 混合储能系统容量优化配置概述在新能源发电占比不断提升的今天,如何有效平抑可再生能源的功率波动成为电网稳定运行的关键挑战。混合储能系统通过组合不同特性的储能技术,能够充分发挥各自优势,实现更优的经济性和可靠性。其中&#xff0c…

2026/7/28 4:18:13 阅读更多 →
基于ESP32-C6的Matter智能灯泡开发:从环境搭建到配网实战

基于ESP32-C6的Matter智能灯泡开发:从环境搭建到配网实战

1. 项目缘起:为什么是ESP32-C6与Matter?最近在捣鼓智能家居,发现一个挺有意思的现象:家里的智能设备越来越多,但控制起来却越来越麻烦。客厅的灯是A品牌的,得用A的App;卧室的空调是B生态的&…

2026/7/28 4:18:13 阅读更多 →

最新新闻

3个核心改进让Windows命令行体验更智能高效

3个核心改进让Windows命令行体验更智能高效

3个核心改进让Windows命令行体验更智能高效 【免费下载链接】clink Bashs powerful command line editing in cmd.exe 项目地址: https://gitcode.com/gh_mirrors/cli/clink 作为Windows系统中最常用的命令行工具,cmd.exe长期以来在功能上显得相对基础。然而…

2026/7/28 4:31:20 阅读更多 →
终极Qwen Code终端AI编码助手:5步实现智能编程革命

终极Qwen Code终端AI编码助手:5步实现智能编程革命

终极Qwen Code终端AI编码助手:5步实现智能编程革命 【免费下载链接】qwen-code An open-source AI coding agent that lives in your terminal. 项目地址: https://gitcode.com/GitHub_Trending/qw/qwen-code 想要在终端中体验AI编程助手的强大功能吗&#x…

2026/7/28 4:31:20 阅读更多 →
Flymaple电机控制实战:从硬件接线到PWM编程全解析

Flymaple电机控制实战:从硬件接线到PWM编程全解析

1. 项目概述:从“不明白”到“全明白”的Flymaple电机控制之旅最近在几个创客和机器人爱好者的社群里,看到不少朋友在讨论Flymaple这块板子,特别是用它来控制电机时,遇到了各种各样“不明白”的地方。留言里充满了“程序烧不进去”…

2026/7/28 4:31:20 阅读更多 →
现代Minecraft服务器管理框架深度解析:EssentialsX架构设计与高效部署指南

现代Minecraft服务器管理框架深度解析:EssentialsX架构设计与高效部署指南

现代Minecraft服务器管理框架深度解析:EssentialsX架构设计与高效部署指南 【免费下载链接】Essentials The modern Essentials suite for Spigot and Paper. 项目地址: https://gitcode.com/GitHub_Trending/es/Essentials EssentialsX作为现代Minecraft服务…

2026/7/28 4:31:20 阅读更多 →
基于Intel Edison与Arduino的声控灯项目:从硬件连接到状态机编程

基于Intel Edison与Arduino的声控灯项目:从硬件连接到状态机编程

1. 项目概述:从“拍手开灯”到智能感知的入门实践“声控灯”这个概念,听起来像是上个世纪楼道里的感应灯,拍一下手,灯就亮了。但今天,我们把它搬到Edison和Arduino的世界里,就完全不是一回事了。这不再是一…

2026/7/28 4:31:20 阅读更多 →
边缘AI实战:Jetson Orin部署Llama 3与RAG本地知识库问答系统

边缘AI实战:Jetson Orin部署Llama 3与RAG本地知识库问答系统

1. 项目概述:当边缘AI大模型遇见本地知识库 最近,我拿到了一块NVIDIA Jetson AGX Orin 64GB开发套件,并围绕它进行了一系列密集的测试。这次测试的核心目标非常明确:在边缘侧,基于这块目前消费级市场上顶级的AI计算模…

2026/7/28 4:30:20 阅读更多 →

日新闻

告别臃肿!3步让你的暗影精灵笔记本重获新生

告别臃肿!3步让你的暗影精灵笔记本重获新生

告别臃肿!3步让你的暗影精灵笔记本重获新生 【免费下载链接】OmenSuperHub Control Omen laptop performance, fan speeds, and keyboard lighting, and unlock power limits. 项目地址: https://gitcode.com/gh_mirrors/om/OmenSuperHub 你是否也曾为官方Om…

2026/7/28 0:00:43 阅读更多 →
RAG必踩坑!财报法规检索不准?这款开源工具让答案浮出水面,准确率飙升98.7%!

RAG必踩坑!财报法规检索不准?这款开源工具让答案浮出水面,准确率飙升98.7%!

做 RAG 的人应该都踩过这个致命的坑:把几百页的财报、法规、技术手册扔给向量库,问一个具体问题,搜出来的全是沾边但没用的内容 —— 关键信息要么被硬切块拆碎了,要么藏在几十条结果的最下面。语义相似≠真正相关,这个…

2026/7/28 0:00:43 阅读更多 →
抖音视频文案提取工具全指南:免费2026版、手机App、在线工具一网打尽

抖音视频文案提取工具全指南:免费2026版、手机App、在线工具一网打尽

2026年做短视频运营,从抖音上扒文案早就不是偷偷抄笔记的事了。我刚开始做内容的时候,每天刷半小时抖音,手动把爆款视频的口播敲进备忘录,一条2分钟的视频得花十来分钟,碰到语速快的还要反复回听。后来试了一圈工具&am…

2026/7/28 0:00:43 阅读更多 →

周新闻

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

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

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

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

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

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

2026/7/27 6:31:56 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

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

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

2026/7/27 4:01:12 阅读更多 →

月新闻