深度学习
文章平均质量分 84
fanged
野生程序员。。。这里主要是一些学习笔记和心得。。。
注:标题带TODO的内容都是未完成,内容有可能不准确。觉得有帮助请:https://ko-fi.com/fanged
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
TinyML
TinyML是嵌入式机器学习的统称,由TinyML基金会推动发展。它通过模型转换(Convert)和解释器(Interpreter)两大核心步骤,将传统机器学习模型(如TensorFlow Lite Micro)优化为适合微控制器(MCU)运行的轻量级版本。主要技术包括模型剪枝、量化等压缩方法,以及C++/C等高效推理框架实现。目前已有多个开源推理框架支持TinyML部署,在ESP32等低功耗设备上展现出应用潜力。相比大模型,微型机器学习因其低功耗、高效率的特点,正成为边缘计算的重要方向。原创 2024-05-05 20:00:02 · 692 阅读 · 0 评论 -
HarvardX TinyML小笔记3(番外6:视觉探测)(TODO)
本文介绍了基于嵌入式AI的多模型(Multi-Tenancy)视觉人形检测实现方案。系统采用OV7675摄像头获取176×144灰度图像,经裁剪处理成96×96尺寸并归一化到-128~128范围。模型推理后分别输出人形(person_score)和非人形(no_person_score)两个独立置信度分数,通过比较分值控制LED指示灯(红灯表示检测到人,绿灯反之)。相比多模态(MultiModal)方案,该多模型并行处理方式更适用于内存受限的嵌入式场景,但需注意SRAM资源分配问题。文章还提供了Arduin原创 2025-10-14 11:43:14 · 371 阅读 · 0 评论 -
HarvardX TinyML小笔记3(番外7:手势)(TODO)
本文介绍了基于IMU传感器的手势识别技术,重点讨论了时间序列数据处理和栅格化方法。文章首先回顾了时间序列分析在异常检测中的应用,对比了监督学习和无监督学习范式。然后详细阐述了IMU传感器(加速度计、陀螺仪、磁力计)的工作原理及其在手势识别中的不同作用。核心内容展示了如何通过栅格化技术将IMU时序数据转换为32×32RGB图像,以便使用CNN模型进行处理,包括轨迹图法、热力图法和相关矩阵法等转换方法。最后给出了具体的代码实现流程,涵盖了IMU数据采集、轨迹生成、图像转换和CNN识别等关键步骤,为基于嵌入式设备原创 2025-10-14 14:59:19 · 950 阅读 · 0 评论 -
HarvardX TinyML小笔记3(番外4:KWS)
本文介绍了基于Arduino的关键词识别(KWS)系统实现流程。系统采用TinyML框架,包含初始化(setup)和主循环(loop)两部分:在setup中初始化TensorFlow Lite模型、特征提取器及四种算子(深度卷积、全连接、Softmax和Reshape);在loop中实时获取音频数据转换为特征,输入模型进行推理,根据输出结果控制LED指示灯(绿灯表示"yes",红灯"no",蓝灯未知)。该系统在受限资源环境下运行,采用直接内存拷贝方式处理数据,当前识别原创 2025-10-13 16:58:07 · 363 阅读 · 0 评论 -
HarvardX TinyML小笔记3(番外3:HelloWorld)
本文介绍了FlatBuffers序列化库及其在TinyML中的应用。FlatBuffers是Google开发的高性能序列化方案,具有零拷贝解析、内存占用小和跨平台特性,特别适合嵌入式设备。文章详细解析了TensorFlow Lite模型(.tflite)的FlatBuffers格式结构,并提供了模型加载和保存的Python示例代码。同时展示了在Arduino平台的TinyML HelloWorld示例,包括模型加载、内存分配、解释器创建和推理执行的完整流程。通过对比量化前后的模型精度(92.2% vs 90原创 2025-09-21 23:01:57 · 196 阅读 · 0 评论 -
HarvardX TinyML小笔记3(番外1:Arduino环境配置)
本文介绍了Arduino Nano 33 BLE Sense开发环境配置及传感器适配经验。软件配置方面,详细说明了Arduino IDE安装、验证(Verify)功能特点,以及TensorFlow Lite库被弃用后改用Harvard_TinyMLx库的解决方案。硬件适配部分,重点分析了新版Nano 33 BLE Sense Rev2的IMU传感器变更问题,指出新版本使用BMI270+BMM150传感器组,需改用Arduino_BMI270_BMM150库,并提供了代码修改示例。此外还提及了麦克风测试注意事原创 2025-09-16 09:10:38 · 163 阅读 · 0 评论 -
HarvardX TinyML小笔记2(Applications of TinyML)
本文介绍了TinyML课程的核心内容,重点探讨了嵌入式机器学习的关键问题,包括数据采集、预处理、模型设计、数据集训练和部署等全流程。文章详细解析了TensorFlow框架的四种终端形态:标准TensorFlow、TensorFlow Lite、TensorFlow Lite Micro和TensorFlow.js,分别对应不同应用场景。同时提及了AI伦理和欧洲GDPR数据保护条例,并提供了多个技术细节的参考链接,涵盖TFLite、PTQ、语音识别、数据工程、视觉唤醒和异常检测等专题内容。原创 2025-08-19 10:31:27 · 140 阅读 · 0 评论 -
机器学习的数据集
摘要:TinyML项目实施需优先考虑数据集准备,主要有三种方式:(1)使用成熟数据集,如Kaggle、UCI等平台提供的多领域数据,或主流框架(TensorFlow、PyTorch等)自带数据集;(2)自建数据,通过传感器采集、清洗存储(如InfluxDB、Hadoop等),并构建数据湖/仓库实现数据驱动决策;(3)仿真构建,通过物理建模或虚拟环境生成带标签数据。以特斯拉为例,其在中国采用本地存储数据、模型出境的方式合规处理自动驾驶训练需求,同时利用合成数据进行补充训练。(149字)原创 2025-09-07 03:42:39 · 255 阅读 · 0 评论 -
HarvardX TinyML小笔记2(番外6:异常探测)
本文介绍了工业领域中异常检测(Anomaly Detection)的概念与方法。异常检测旨在从数据中识别偏离正常模式的样本,适用于健康监测、制造、安全等领域。针对低维简单数据可采用阈值法或K-Means聚类;高维复杂数据(如图像、语音)则需使用深度学习方法,如自动编码器(Autoencoder),通过编码-解码过程比较重建误差来检测异常。文中通过ECG心电数据案例,展示了自动编码器的实现过程,包括模型构建、训练及阈值设定。最后总结了不同数据特征下的方法选择策略:低维清晰数据用规则或聚类,高维非线性数据推荐自原创 2025-09-05 00:22:35 · 693 阅读 · 0 评论 -
HarvardX TinyML小笔记2(番外5:视觉唤醒)
本文介绍了深度学习中的关键概念和技术,重点聚焦于轻量级网络设计和迁移学习应用。主要内容包括:1. 深度卷积技术(Depthwise Convolution)及其变体,通过减少参数量实现高效计算;2. 模型评估指标(Top-1/Top-5准确率)的选择依据;3. 基于MobileNet的迁移学习实践,包含数据增强、全局池化和分类头构建等技术细节;4. 两种迁移学习策略:作为固定特征提取器和微调预训练模型。文章还提供了完整的TensorFlow实现代码,涉及数据预处理、模型构建和训练过程,并针对版本兼容性问题给原创 2025-09-02 10:28:10 · 309 阅读 · 0 评论 -
HarvardX TinyML小笔记2(番外4:数据工程)
数据工程是决定机器学习成败的关键环节,80%时间花费在构建高质量数据集上。主要流程包括需求确定、收集、提炼和维护,数据来源包括传感器、众包、用户和付费渠道。文中推荐了CommonVoice、COCO等现成数据集,并强调了数据伦理和消除偏见的重要性。最后指出即使模型准确率高,若数据集选择不当仍会导致实际应用失效。原创 2025-09-02 00:09:03 · 314 阅读 · 0 评论 -
HarvardX TinyML小笔记2(番外2:PTQ)
本文介绍了深度学习中的训练后量化(PTQ)技术,用于模型压缩与加速。PTQ将高精度参数(如FP32)转换为低精度格式(如INT8、FP16),以减少模型体积、内存占用并提升推理速度,同时保持模型精度。相比于训练时量化(QAT),PTQ无需重新训练模型,成本更低。文章还展示了TensorFlow Lite的量化实现,包括权重分布分析和量化模拟代码,对比了量化前后模型大小(约缩小为1/4)。最后通过解析InceptionV3等模型的Flatbuffer格式,验证了量化后权重集中在0附近的特点。原创 2025-08-24 02:33:04 · 201 阅读 · 0 评论 -
HarvardX TinyML小笔记2(番外3:语音关键词跟踪)
本文介绍了音频关键词识别(KWS)的整体流程及关键技术。系统流程包括数据收集、预处理、模型设计、训练和评估,核心环节为音频信号处理:首先通过FFT将时域信号转换为频域信号,再利用梅尔滤波器组生成频谱图特征。文章详细解析了16kHz单通道音频的处理步骤,包括分帧、加窗、STFT变换和梅尔频率倒谱系数(MFCC)特征提取。通过Colab实例演示了从录音采集、FFT变换到MFCC特征生成的全过程,并测试了预训练模型的识别效果。实验表明,模型对常规语音识别效果较好(准确率90.86%),但对变调语音适应性不足。文中原创 2025-08-24 10:24:19 · 447 阅读 · 0 评论 -
HarvardX TinyML小笔记2(番外1:TFLite)
tflite就是Tensorflow的轻量化模型,核心处理就是量化和剪枝。不过这部分目前是在Tensorflow中封装了,所以这里也不会去看细节,主要就是看看原理和使用方法。,其实就是把原来的float32换成int8。这样一个是减少了模型中的参数大小,理论上缩减到之前的1/4,另外也加快了运算。换算就是把之前的浮点数映射到int8的256个格子里面。原因是根据分析,大部分的权重都分布在一些相对狭窄的区域,也就是说很多区域其实是浪费了。所以可以压缩,这也是压缩的理论基础。原创 2025-08-22 15:19:53 · 659 阅读 · 0 评论 -
HarvardX TinyML小笔记1(番外6:CNN)
本文介绍了卷积神经网络(CNN)的基本概念和应用实践。通过类比PS滤镜解释了卷积核的作用,并说明池化层相当于图像缩略图操作。实验部分使用CIFAR-10数据集构建CNN模型,包含卷积层、池化层和全连接层。初始模型训练准确率74%,验证集65%;改用Adam优化器后训练准确率提升至91%,但验证集仅68%,出现过拟合现象。实验结果表明需要进一步优化模型结构或采用正则化方法来提高泛化能力。原创 2025-08-14 01:26:52 · 149 阅读 · 0 评论 -
HarvardX TinyML小笔记1(番外4:DNN)
本文介绍了深度神经网络(DNN)的基本原理及应用,重点展示了使用TensorFlow实现MNIST手写数字识别的实践案例。DNN通过多层神经元结构(隐藏层≥2)实现复杂模式识别,包含前向传播、损失计算和反向传播等核心过程。文中详细解析了两个MNIST识别程序:第一个使用20和10个神经元的两层网络达到95%准确率;第二个探讨了网络结构调整(增加层数、神经元数量)和归一化处理(像素值/255)的影响,发现归一化对准确率提升显著(从66%提升至88%)。实验表明,适当增加网络复杂度可小幅提升性能,但也需要权衡计原创 2025-08-11 00:03:12 · 200 阅读 · 0 评论 -
HarvardX TinyML小笔记1(番外5:激活函数)
摘要:激活函数是神经网络引入非线性变换的关键组件,使模型能够学习复杂模式。若无激活函数,多层网络等效于单层线性模型,无法处理非线性问题。通过测试程序对比发现,带ReLU激活函数的网络能有效拟合非线性数据(如y=x²),而纯线性网络则无法实现。常见激活函数包括ReLU、Sigmoid和Tanh等,其中ReLU因其简单高效成为主流选择,而Sigmoid和Tanh存在梯度消失问题。不同任务需选择合适的激活函数,如ReLU适合非负输出,Softmax适用于分类概率输出。原创 2025-08-11 01:11:59 · 311 阅读 · 0 评论 -
HarvardX TinyML小笔记1(番外3:参数)
本文介绍了使用TensorFlow构建简单线性回归模型的代码实现。通过设置输入数据(xs)和输出数据(ys),定义模型结构为单层全连接网络。关键参数包括input_shape设为[1](一维输入),损失函数推荐使用'mse'(均方误差),因其在干净数据上表现优于'mae'。文章还总结了不同任务类型的参数设置建议:回归问题使用'mse'或'mae',分类问题使用交叉熵损失函数。最后通过训练300个epoch并可视化不同epoch的预测结果,展示了模型的学习过程。原创 2025-08-10 14:21:38 · 338 阅读 · 0 评论 -
HarvardX TinyML小笔记1(番外2:神经网络)
本文介绍了神经网络的基本概念和实际应用,通过哈佛TinyML课程展示了单层和双层神经网络的实现。文章详细解释了权重(w)和偏置(b)的作用,并比较了两种网络结构的性能差异。代码示例使用TensorFlow和Keras构建神经网络模型,训练后预测结果接近真实值18.999998。最后讨论了如何根据任务复杂度选择网络层数和神经元数量,提供了调试技巧:欠拟合时增加复杂度,过拟合时减少或加入正则化。全文以实践为导向,帮助初学者理解神经网络的应用层面。原创 2025-08-09 19:00:51 · 211 阅读 · 0 评论 -
HarvardX TinyML小笔记1(番外1:梯度下降)
本文通过一个线性回归示例讲解了梯度下降的核心原理与实现。代码使用TensorFlow构建了一个简单模型,其中初始参数w=10、b=10,通过50次迭代逐步逼近真实值w=2、b=-1。关键步骤包括:1)计算预测值与实际值的均方误差损失;2)利用GradientTape自动求导获得梯度;3)根据学习率(0.09)更新参数。文章强调梯度下降的核心价值在于其方向性(梯度向量)而不仅是损失值,适用于所有可微目标函数的优化问题。虽然涉及矩阵运算等数学概念,但通过具体代码实现使抽象原理变得直观易懂。原创 2025-08-09 03:36:11 · 280 阅读 · 0 评论 -
HarvardX TinyML小笔记1(Fundamentals of TinyML)
TinyML课程学习笔记摘要 该课程由edX平台提供,分为三个部分:TinyML基础、应用和部署。基础部分介绍了TinyML与传统机器学习的区别,重点讨论硬件限制(如MCU缺乏FPU)、模型压缩技术(剪枝、量化等)和Google的TensorFlow Lite解决方案。应用部分通过经典数字关系示例(Y=2X-1)生动讲解机器学习核心概念,包括损失函数、梯度下降和数据集划分(训练/验证/测试集)。部署部分涉及Arduino 33 BLE Sense硬件使用。课程强调TinyML主要在设备端进行推理(训练在云端原创 2025-07-30 23:38:45 · 203 阅读 · 0 评论 -
YOLOV8--玩了一下
2 最开始的代码用的opencv的,不过貌似在树莓派上不支持CSI接口的camera,有点无语。换成亲儿子Picamera2就行了。1 代码中下载yolo的模型还是比较慢,可以在浏览器下载好,然后拷贝进去,快很多。代码很简单,注释也说的很明白。不过这种纯软解决感觉还是会有性能问题。好吧,看来后面还是要多学习TensorFlow。平台还是现在用的树莓派5。原创 2024-11-17 03:00:21 · 792 阅读 · 0 评论 -
ESP32部署TensorFlow Lite
后面看了历险记(参考中)那个文章,说是现在乐鑫自己也有tflite的例子,可以曲线救国,先跑通乐鑫自己的例子,然后用python下的tensorflow生成lite模型,最后用xxd命令转换成model.cc。继续往机器学习的方向走,遇到的最大的问题就是不管是tensorflow还是tflite-micro,都无法下载。照着他写的一步步来,晚上把乐鑫自己的hello world跑通了,还是很简单。接着有时间我会慢慢来分析分析的。本来是想找一篇中文教程,不过只看到一个英文官方的,也行吧,虽然效率会慢丢丢。原创 2024-07-14 13:27:24 · 3703 阅读 · 3 评论 -
线性回归求解
最小二乘法和梯度下降算法在目标和应用上有所区别,理解它们的关系和差异,有助于选择合适的方法解决具体问题。1是平方计算可导,更加方便。代入总成绩 X=450X = 450X=450,Y = 14.49+0.1325×450=14.49+59.625=74.115。这个基本上算是目前机器学习的基石了,说起来也算是高中的知识范围,我不知道是不是人人都懂了,我觉得我不是很懂,所以专门写一篇来总结总结。上面的过程基本不算难,就是回归系数的推算,看了下是最小二乘法。其中,XXX 是自变量矩阵,YYY 是因变量向量。原创 2024-07-14 16:20:36 · 661 阅读 · 0 评论 -
CNN的小体验
3 环境依然麻烦,python,numpy的版本都不能太高。2 训练真的挺耗时的,我用的阿里云,一共搞了差不多10分钟(训练一个弱智)。1 使用的数据集是CIFAR10。可惜出来的东西跟弱智一般。推断代码cnn2.py。用的pytorch。原创 2024-07-01 19:21:22 · 414 阅读 · 0 评论 -
深度学习2 -- 知识点(TODO)
让我们看看老板们布置了一些什么作业。还是从CS7643来吧,作业库是。原创 2024-06-18 01:36:15 · 178 阅读 · 0 评论 -
深度学习1 -- 开始
感觉用这玩意越来越多,所以想学学。不过没想好怎么学,也没有提纲,买了两本书,一本是深度学习入门,小日子写的。还有就是回Gatech参加线上课程,提纲大概是这样的。从提纲可以看到,核心还是神经网络。原创 2024-06-16 17:19:15 · 866 阅读 · 1 评论
分享