FPGA部署CNN全流程1——基础知识
目录1.机器学习模式1.1. 有监督学习 (Supervised Learning)1.2. 无监督学习 (Unsupervised Learning)1.3. 强化学习 (Reinforcement Learning, RL)1.4. RLHF (Reinforcement Learning from Human Feedback)四者对比总结2.数据集获取方式2.1. 有监督学习数据集 (Supervised Dataset)2.2. 无监督学习数据集 (Unsupervised Dataset)2.3. 强化学习数据集 (Reinforcement Learning Dataset)2.4. RLHF 数据集 (RLHF Datasets)2.5四种模式对比表2.6 获取数据集的方式2.6.1公开数据集网站获取2.6.2 手动自作1文件夹分割2目标检测类型3图像分割3.机器学习网络搭建流程3.1. 明确问题与数据准备 (Problem Data)3.2. 划分数据集 (Dataset Splitting)3.3. 网络架构设计 (Model Architecture)1. 架构是自己写的吗2. 如何搭建神经网络的“积木”逻辑A. 输入层 (Input Layer)B. 特征提取层 (Feature Extraction / Backbone)C. 分类层 (Classification Head)3. 从简单到复杂级别一入门级类 LeNet-5级别二工业级标杆ResNet - 残差网络级别三硬件友好型MobileNet / TinyML4. 针对 FPGA 部署的架构设计建议搭建工具推荐3.4. 编译模型 (Model Compilation)3.5. 模型训练 (Model Training)3.6. 模型评估与调试 (Evaluation Tuning)3.7. 模型保存与转换 (Deployment Preparation)本篇笔记总结了最近所学的机器学习的知识包括机器学习模式、数据集类型、网络搭建全流程作为在FPGA中部署神经网络的基础知识。1.机器学习模式1.1. 有监督学习 (Supervised Learning)核心比喻老师带着有标准答案的课本来教课。在有监督学习中模型接收的是带标签 (Labeled)的数据。每一条输入数据 x 都有一个对应的正确答案 y。工作原理模型预测一个结果然后将其与标准答案对比。如果错了模型会通过损失函数Loss Function计算误差并调整内部参数以减少下次的误差。其目标是学习一个映射函数 f(x) y。常见任务分类 (Classification)判断一张图片是猫还是狗。回归 (Regression)预测明年的房价连续数值。应用场景垃圾邮件检测、人脸识别、医疗诊断。1.2. 无监督学习 (Unsupervised Learning)核心比喻给学生一堆杂乱的乐高积木让他们自己按颜色或形状分类。模型处理的是没有标签 (Unlabeled)的数据。它不知道这些数据“是什么”它的任务是发现数据内部潜藏的结构或模式。工作原理模型通过计算数据点之间的相似度或分布特征将相似的东西聚在一起或者压缩数据的维度。常见任务聚类 (Clustering)根据购买行为将客户分为不同的群体。降维 (Dimensionality Reduction)简化复杂数据提取核心特征如 PCA。关联分析发现“买尿布的人通常也会买啤酒”这种规律。应用场景用户画像分析、异常检测如信用卡欺诈、基因序列分析。1.3. 强化学习 (Reinforcement Learning, RL)核心比喻驯兽师训练小狗做对了给骨头做错了不给。强化学习不依赖静态的数据集而是在交互中学习。核心组件智能体 (Agent)学习者。环境 (Environment)智能体所处的场景。动作 (Action)智能体做出的行为。奖励 (Reward)反馈信号正奖或负罚。工作原理智能体在环境中采取行动观察结果并获得奖励。它的目标是找到一种策略Policy使长期累积奖励最大化。应用场景自动驾驶、游戏 AI如 AlphaGo、机器人控制、量化交易。1.4. RLHF (Reinforcement Learning from Human Feedback)核心比喻老师不再给标准答案而是根据学生的作文写得“好不好看”来打分。RLHF 是强化学习的一个特殊变种也是让大语言模型如 ChatGPT, Gemini表现得像人类的关键技术。为什么需要它对于“写一首优美的诗”这种任务没有唯一的标准答案有监督学习很难做也很难写出公式化的奖励函数强化学习很难写 Reward。但人类可以轻易判断A 写的诗比 B 写的更好。训练步骤有监督微调 (SFT)用人类写好的高质量问答对模型进行初步训练。奖励模型训练 (RM)模型生成几个不同的回答让人类进行排序比如 A C B。利用这些偏好数据训练一个“奖励模型”这个模型学会了模拟人类的品味。近端策略优化 (PPO)用这个“奖励模型”去指导原始模型进行强化学习。如果模型说出人类喜欢的话奖励模型就给高分。作用它解决了 AI 的**对齐Alignment**问题确保模型生成的回答不仅逻辑正确而且符合人类的价值观、安全且有用。四者对比总结维度有监督学习无监督学习强化学习RLHF数据源结构化的标签数据原始无标签数据动态环境反馈人类偏好排序反馈机制直接对比标准答案寻找数据内在联系奖励信号 (Reward)模拟人类品味的奖励模型学习目标预测准确度发现潜在模式获取最大奖励与人类意图/价值观对齐2.数据集获取方式这四种学习模式对数据的“胃口”完全不同。简单来说它们的差异在于数据的加工深度、反馈的及时性以及人参与的方式。2.1. 有监督学习数据集 (Supervised Dataset)特征成对出现。每一条数据都必须由“输入 x”和对应的“标签 y”组成。可以理解为图片图片属于什么标签数据集构成。获取方式公开数据集如ImageNet图像分类、MNIST手写数字、COCO目标检测。人工标注这是最常见的商业手段。通过数据标注公司如 Scale AI、Appen雇佣大量人力手动给图片打框或给文字分类。合成数据利用已有的物理引擎或模拟器生成带标签的数据。2.2. 无监督学习数据集 (Unsupervised Dataset)特征原始且海量。只有“输入 x”没有任何人为标记的答案。数据集构成。获取方式网络爬虫从互联网抓取的文本如 Common Crawl 数据集、图片、视频。日志记录服务器产生的用户访问日志、传感器采集的原始信号如你之前研究的卫星频谱原始数据。公共仓库Wikipedia全文、GitHub 代码库等。2.3. 强化学习数据集 (Reinforcement Learning Dataset)特征交互式序列。强化学习通常不需要预先准备好的“静态数据集”而是需要一个环境 (Environment)。数据集构成由状态、动作、奖励组成的轨迹。获取方式仿真环境/模拟器OpenAI Gymnasium经典的控制类环境如倒立摆、走迷宫。MuJoCo高级物理动力学模拟。CARLA自动驾驶模拟器。离线强化学习 (Offline RL)如果无法实时交互可以使用已有的历史运行记录如工业机器人的历史操作日志。2.4. RLHF 数据集 (RLHF Datasets)RLHF 并不是一种单一数据集它通常包含三个阶段的不同数据SFT 数据集有监督微调内容人类写出的高质量“标准范文”。例如提问“如何写诗”给出一个人类写的优美示例。获取雇佣专业的“专家”来撰写回答。RM 数据集奖励模型/偏好数据内容排序/比较数据。模型给出 A 和 B 两个回答人类勾选“A 比 B 好”。获取通过标注平台让标注员对模型生成的多个结果进行打分或排序。Prompt 数据集提示词集内容纯问题集。用于最后的强化学习训练让模型面对这些问题不断生成新回答。2.5四种模式对比表模式数据核心成分数据成本获取难点有监督(x, y) 键值对高标注贵标注的准确性和一致性无监督纯 x 原始数据低量大数据的清洗和去重强化学习(s, a, r, s) 序列中仿真成本构建高精度的模拟环境RLHF人类偏好排序 (A B)极高专家成本人类主观标准的一致性2.6 获取数据集的方式2.6.1公开数据集网站获取KaggleDatasetsFind Open Datasets and Machine Learning Projects | KaggleHugging Face DatasetsDatasets – Hugging Face2.6.2 手动自作1文件夹分割2目标检测类型通过labelim等工具手动标注。这个我还没用过3图像分割通过labelme进行图像分割来标注。3.机器学习网络搭建流程搭建一个机器学习尤其是深度学习网络是一个系统工程通常遵循从数据到模型再到部署的标准化流程。3.1. 明确问题与数据准备 (Problem Data)行业里有一句话Data is the new oil.模型的上限由数据决定算法只是在逼近这个上限。一切模型的基础都是数据。在开始写代码前必须定义清楚任务。定义任务确定是分类分类别、回归预测连续值还是聚类。数据采集从 Kaggle、Hugging Face 或传感器获取原始数据。数据清洗处理缺失值、异常值和重复数据。特征工程归一化/标准化将数据缩放到 [0, 1] 或均值为 0、方差为 1 的区间防止梯度爆炸。提取特征例如音频信号需要做 FFT快速傅里叶变换转为频谱图。比如做哨声识别不能直接把波形丢进去通常需要做STFT短时傅里叶变换转化为梅尔频谱图。3.2. 划分数据集 (Dataset Splitting)为了保证模型的泛化能力必须将数据分为三部分数据集占比作用训练集 (Train)70% - 80%给模型“看”和“学”的用于更新网络权重和偏置。验证集 (Val)10% - 15%训练期间调整超参数监控是否过拟合。测试集 (Test)10% - 15%最后用来考试的模型之前从未见过模型训练完成后评估其实际表现。3.3. 网络架构设计 (Model Architecture)根据任务类型选择或设计神经网络结构。选择框架目前主流是PyTorch灵活、好调试或TensorFlow/Keras工程化强。定义架构选择层类型全连接层 (Dense/Linear)处理通用特征。卷积层 (Conv2D)处理空间特征图像、频谱图。循环层 (LSTM/GRU)处理时间序列语音、文本。激活函数给网络注入非线性。例如 ReLU隐层最常用解决梯度消失。Sigmoid/Softmax用于输出层分类。初始化权重随机给网络里的参数赋初值好的初始化能让收敛快一倍。架构一般是根据经典的模型来修改的。决定神经网络的“长相”确实是整个开发过程中最具创造力的部分。简单来说你可以完全“手搓”一个架构也可以在巨人的肩膀上进行“微调”。对于初学者或有特定硬件限制如你的 FPGA 背景的开发者建议遵循从“借鉴成熟架构”到“自定义修改”的过程。1. 架构是自己写的吗在实际开发中通常有三种选择完全自定义 (Custom Architecture)如果你有一个非常特殊的任务比如在极其有限的资源下识别特定的哨声频率你可以从头开始堆叠Conv2d、ReLU和MaxPool。这就像用乐高积木拼出一个全新的造型。经典背骨 (Backbones)直接套用学术界公认的结构如 ResNet, MobileNet。这些结构经过了成千上万次实验验证性能非常稳定。迁移学习 (Transfer Learning)直接拿别人训练好的模型已经在数百万张图片上学过如何提取特征你只需要把最后一层“分类头”换成你自己的比如换成识别“哨声”和“环境音”。2. 如何搭建神经网络的“积木”逻辑一个标准的卷积神经网络CNN通常由三部分组成A. 输入层 (Input Layer)你需要告诉网络数据的大小。如果你把哨声转成了的梅尔频谱图那么输入就是(1, 64, 64)1代表单通道。B. 特征提取层 (Feature Extraction / Backbone)这是网络的主体负责从原始信号中提取特征如线条、频率跳变等。卷积层 (Convolution)像一个放大镜滑动观察局部特征。激活层 (Activation)通常用 $ReLU(x) \max(0, x)$目的是给网络增加非线性能力。池化层 (Pooling)压缩图片尺寸减少计算量同时保留最重要的信息。C. 分类层 (Classification Head)全连接层 (Linear/Dense)将提取到的二维特征“拍扁”成一维向量。Softmax 层将输出转化为概率比如哨声 95%噪音 5%。3. 从简单到复杂如果你要实现哨声识别以下是三个级别的参考架构级别一入门级类 LeNet-5适合初学者和资源极其匮乏的 FPGA 部署。结构2个卷积层 2个池化层 2个全连接层。优点参数极少几万个计算非常快FPGA 逻辑资源占用低。参考代码 (PyTorch)self.conv1 nn.Conv2d(1, 16, kernel_size3) # 提取基础频率特征 self.pool nn.MaxPool2d(2, 2) self.conv2 nn.Conv2d(16, 32, kernel_size3) self.fc1 nn.Linear(32 * 14 * 14, 128) self.fc2 nn.Linear(128, 2) # 输出两类有哨声无哨声级别二工业级标杆ResNet - 残差网络如果你发现网络加深后反而学不动了ResNet 是救星。核心残差连接 (Shortcut Connection)。它允许信息跨层传递解决了深层网络的梯度消失问题。参考场景如果你需要极高的识别准确率且不介意稍大的计算量。级别三硬件友好型MobileNet / TinyML这是最推荐你关注的方向因为它专门为移动端和嵌入式FPGA 可能借鉴其思想设计。核心深度可分离卷积 (Depthwise Separable Convolution)。参考价值它将标准卷积拆分为两步计算量直接下降到原来的到且准确率下降很少。4. 针对 FPGA 部署的架构设计建议既然你熟悉 Verilog 和信号处理在搭建架构时需要特别考虑“硬件友好性”权重的定点化 (Quantization Friendly)在搭建时尽量选择简单的激活函数如 ReLU避免使用 Sigmoid 或 Tanh因为后者在 FPGA 上需要消耗大量的查找表LUT或复杂的浮点计算。避免巨大的全连接层全连接层非常吃内存BRAM。尽量多用卷积层减少尺寸最后接一个小的全连接层。步长 (Stride) 代替池化有时直接在卷积层设置stride2来降维比专门加一个Pooling层在硬件实现上更简洁。算力对齐尽量让通道数Channel是 8、16 或 32 的倍数这样在 FPGA 并行处理PE 阵列时效率最高。搭建工具推荐可视化工具使用Netron。你可以下载别人的模型文件.onnx 或 .h5直接把文件拖进去就能看到清晰的架构图。网站地址saved_model.pb代码参考在 GitHub 搜索Simple Audio Classification PyTorch你会看到很多现成的、专门针对声音识别优化过的精简架构。3.4. 编译模型 (Model Compilation)在训练开始前需要配置三个核心要素损失函数 (Loss Function)衡量预测值与真实值的差距。回归均方误差分类交叉熵优化器 (Optimizer)决定如何更新权重。常用Adam(自适应)、SGD(随机梯度下降)。评价指标 (Metrics)如 Accuracy准确率、Recall召回率。3.5. 模型训练 (Model Training)模型开始在训练集上迭代。正向传播输入数据通过网络层计算预测结果。反向传播利用梯度下降法更新权重 W其中是学习率Learning Rate。超参数调节设置Batch Size每批处理样本数和Epochs全量数据训练次数。3.6. 模型评估与调试 (Evaluation Tuning)观察训练曲线判断模型状态欠拟合 (Underfitting)训练集和验证集准确率都很低。解决增加模型复杂度、减少正则化。过拟合 (Overfitting)训练集表现极好但验证集表现很差。解决引入Dropout、L2 正则化或增加数据量。3.7. 模型保存与转换 (Deployment Preparation)格式导出将模型保存为.pth(PyTorch)、.h5(TensorFlow) 或通用格式ONNX。量化/压缩如果要在嵌入式设备或硬件如 FPGA上运行通常需要将 浮点数转为 定点数。

相关新闻

数字纪念品制作:cv_unet_image-colorization婚礼老照片AI上色服务

数字纪念品制作:cv_unet_image-colorization婚礼老照片AI上色服务

数字纪念品制作:cv_unet_image-colorization婚礼老照片AI上色服务 1. 引言:让尘封的记忆重焕光彩 你是否翻看过家里的老相册?那些泛黄的黑白照片,记录着祖辈的婚礼、父母的青春、童年的欢笑。然而,时间的流逝让这些珍…

2026/5/17 3:44:11 阅读更多 →
AI冲击软件行业事件分析与多主体应对报告

AI冲击软件行业事件分析与多主体应对报告

目录一、宏观视角:核心内容总览(一)核心事件概述(二)事件导火索:Anthropic三大关键动作1. Claude Cowork(1月12日)2. 11个行业专业插件(1月30日)3. Claude Op…

2026/5/17 3:44:11 阅读更多 →
Qwen3-TTS多模态应用:根据描述文本生成匹配音色与形象

Qwen3-TTS多模态应用:根据描述文本生成匹配音色与形象

Qwen3-TTS多模态应用:根据描述文本生成匹配音色与形象 想象一下,你正在构思一个虚拟角色:一位声音温柔、略带沙哑的成熟女性,形象是知性的都市白领,穿着简约的米色风衣。在传统的工作流里,你需要分别找配音…

2026/5/17 3:44:09 阅读更多 →

最新新闻

OpenCode模型配置与切换:本地AI编程的可控性实践

OpenCode模型配置与切换:本地AI编程的可控性实践

1. 项目概述:这不是一个“装完就能用”的玩具,而是一把需要亲手校准的代码刻刀 OpenCode——这个名字在2024年中后期开始频繁出现在国内开发者社区的技术分享帖、内部工具链讨论组和AI辅助编程评测报告里。它不是GitHub Copilot的平替,也不是…

2026/7/3 8:40:27 阅读更多 →
5步彻底解决OFD文件兼容性问题:开源转换工具实战指南

5步彻底解决OFD文件兼容性问题:开源转换工具实战指南

5步彻底解决OFD文件兼容性问题:开源转换工具实战指南 【免费下载链接】Ofd2Pdf Convert OFD files to PDF files. 项目地址: https://gitcode.com/gh_mirrors/ofd/Ofd2Pdf 你是否曾经因为收到OFD格式的电子发票而无法在手机上查看?是否因为政府发…

2026/7/3 8:38:26 阅读更多 →
AI知识库投喂:企业智能化的关键一步

AI知识库投喂:企业智能化的关键一步

于企业智能化转型的浪潮里面, AI知识库已然变成提升工作效率以及决策质量的核心工具。可是呢, 好多企业在部署AI知识库之际, 常常忽视了“投喂”这个关键环节。所说的“投喂”, 是把企业内部的结构化还有非结构化数据, 像项目文档、会议纪要、客户资料、技术手册等, 有系统地输…

2026/7/3 8:38:26 阅读更多 →
HsMod终极指南:55个功能全面解锁您的炉石传说游戏体验

HsMod终极指南:55个功能全面解锁您的炉石传说游戏体验

HsMod终极指南:55个功能全面解锁您的炉石传说游戏体验 【免费下载链接】HsMod Hearthstone Modification Based on BepInEx 项目地址: https://gitcode.com/GitHub_Trending/hs/HsMod HsMod是基于BepInEx框架开发的炉石传说增强插件,为您提供了55…

2026/7/3 8:36:25 阅读更多 →
软考中级→高级→系统架构师 vs HCIA→HCIP→HCIE:双轨成长路线图(附2024通过率与平均备考时长)

软考中级→高级→系统架构师 vs HCIA→HCIP→HCIE:双轨成长路线图(附2024通过率与平均备考时长)

更多请点击: https://kaifayun.com 第一章:软考vs华为认证HCIPHCIE区别 软考(计算机技术与软件专业技术资格考试)与华为认证(HCIP/HCIE)代表两类不同定位、目标与评估逻辑的技术能力认证体系。软考由国家工…

2026/7/3 8:36:25 阅读更多 →
如何快速掌握Forza Mods AIO:极限竞速地平线游戏修改终极指南

如何快速掌握Forza Mods AIO:极限竞速地平线游戏修改终极指南

如何快速掌握Forza Mods AIO:极限竞速地平线游戏修改终极指南 【免费下载链接】Forza-Mods-AIO Free and open-source FH4 & FH5 mod tool 项目地址: https://gitcode.com/gh_mirrors/fo/Forza-Mods-AIO Forza Mods AIO是一款专为《极限竞速:…

2026/7/3 8:32:22 阅读更多 →

日新闻

Nginx防御TLS重协商攻击实战:从原理到配置与监控

Nginx防御TLS重协商攻击实战:从原理到配置与监控

1. 项目概述:为什么TLS重协商攻击至今仍需警惕十多年前的CVE-2011-1473,一个关于TLS/SSL协议重协商机制的漏洞,现在提起来还有必要吗?很多运维和开发朋友可能会觉得,这都老掉牙了,现代服务器和客户端不都默…

2026/7/3 0:03:59 阅读更多 →
华为防火墙双通道远程管理实战:Web与SSH配置详解

华为防火墙双通道远程管理实战:Web与SSH配置详解

1. 项目概述:为什么需要双通道远程管理防火墙?在任何一个稍具规模的企业网络里,防火墙都是那个默默守护在边界的关键角色。作为网络工程师,我们不可能每次都跑到机房,插上console线去配置它。远程管理能力,…

2026/7/3 0:03:59 阅读更多 →
AD74413R与PIC18F65K40的高精度工业数据采集方案

AD74413R与PIC18F65K40的高精度工业数据采集方案

1. 项目概述:AD74413R与PIC18F65K40的协同工作在工业自动化和精密测量领域,同时实现高精度模数转换(ADC)和数模转换(DAC)功能是许多复杂系统的核心需求。AD74413R作为一款四通道可配置模拟输入/输出器件,与PIC18F65K40微控制器的组合&#xf…

2026/7/3 0:05:59 阅读更多 →

周新闻

月新闻