计算机
类型
8.0
豆瓣评分
可以朗读
语音朗读
384千字
字数
2020-10-01
发行日期
展开全部
主编推荐语
TinyML里程碑级著作,手把手教你在Arduino和微控制器上部署ML。
内容简介
深度学习网络正在变得越来越小。Google Assistant团队可以使用大小只有14KB的模型检测单词——模型小到可以在微控制器上运行。在这本实用的书中,你将进入TinyML的世界。TinyML将深度学习和嵌入式系统相结合,使得微型设备可以做出令人惊叹的事情。
本书解释了如何训练足够小的模型以适合任何环境。对于希望在嵌入式系统中搭建机器学习项目的软件及硬件开发人员而言,本书是一个理想的指南,它将一步步地指导你搭建一系列TinyML项目。阅读本书不需要任何机器学习或者微控制器开发经验。
你将深入了解以下内容:
如何创建语音识别程序、行人检测程序和响应手势的魔杖程序;
如何使用Arduino和超低功耗微控制器;
机器学习的基本知识以及如何训练自己的模型;
如何训练模型以理解音频、图像和加速度传感器数据;
如何使用TensorFlow Lite for Microcontrollers,这是Google用于TinyML的工具包;
如何调试程序并提供隐私和安全保障;
如何优化延迟、功耗、模型以及二进制文件大小。
目录
- 版权信息
- O'Reilly Media, Inc.介绍
- 业界评论
- 译者序一
- 译者序二
- 前言
- 第1章 简介
- 1.1 嵌入式设备
- 1.2 技术变迁
- 第2章 入门
- 2.1 本书目标读者
- 2.2 需要的硬件
- 2.3 需要的软件
- 2.4 我们希望你学到的东西
- 第3章 快速了解机器学习
- 3.1 什么是机器学习
- 3.2 深度学习的工作流程
- 3.2.1 选择一个目标
- 3.2.2 收集数据集
- 3.2.3 设计一个模型架构
- 3.2.4 训练模型
- 3.2.5 转换模型
- 3.2.6 运行推断
- 3.2.7 评估和故障排除
- 3.3 小结
- 第4章 TinyML之“Hello World”:创建和训练模型
- 4.1 我们要创建什么
- 4.2 我们的机器学习工具链
- 4.2.1 Python和Jupyter Notebook
- 4.2.2 Google Colaboratory
- 4.2.3 TensorFlow和Keras
- 4.3 创建我们的模型
- 4.3.1 导入依赖项
- 4.3.2 生成数据
- 4.3.3 拆分数据
- 4.3.4 定义基本模型
- 4.4 训练我们的模型
- 4.4.1 训练度量指标
- 4.4.2 绘制历史数据
- 4.4.3 改进我们的模型
- 4.4.4 测试
- 4.5 为TensorFlow Lite转换模型
- 4.6 小结
- 第5章 TinyML之“Hello World”:创建应用程序
- 5.1 详解测试
- 5.1.1 导入依赖项
- 5.1.2 配置测试
- 5.1.3 准备记录数据
- 5.1.4 映射我们的模型
- 5.1.5 创建一个AllOpsResolver
- 5.1.6 定义一个Tensor Arena
- 5.1.7 创建一个解释器
- 5.1.8 检查输入张量
- 5.1.9 对输入运行推断
- 5.1.10 读取输出
- 5.1.11 运行测试
- 5.2 项目文件结构
- 5.3 详解源文件
- 5.3.1 从main_functions.cc开始
- 5.3.2 通过output_hanlder.cc处理输出
- 5.3.3 完成main_functions.cc
- 5.3.4 理解main.cc
- 5.3.5 运行我们的应用程序
- 5.4 小结
- 第6章 TinyML之“Hello World”:部署到微控制器
- 6.1 什么是微控制器
- 6.2 Arduino
- 6.2.1 在Arduino上处理输出
- 6.2.2 运行示例
- 6.2.3 尝试修改
- 6.3 SparkFun Edge
- 6.3.1 在SparkFun Edge上处理输出
- 6.3.2 运行示例
- 6.3.3 测试程序
- 6.3.4 查看调试数据
- 6.3.5 尝试修改
- 6.4 ST Microelectronics STM32F746G Discovery套件
- 6.4.1 在STM32F746G上处理输出
- 6.4.2 运行示例
- 6.4.3 尝试修改
- 6.5 小结
- 第7章 唤醒词检测:创建应用程序
- 7.1 我们要创建什么
- 7.2 应用架构
- 7.2.1 模型介绍
- 7.2.2 所有的功能组件
- 7.3 详解测试
- 7.3.1 基本流程
- 7.3.2 音频提供程序
- 7.3.3 特征提供程序
- 7.3.4 命令识别程序
- 7.3.5 命令响应程序
- 7.4 监听唤醒词
- 7.5 部署到微控制器
- 7.5.1 Arduino
- 7.5.2 SparkFun Edge
- 7.5.3 ST Microelectronics STM32F746G Discovery套件
- 7.6 小结
- 第8章 唤醒词检测:训练模型
- 8.1 训练我们的新模型
- 8.2 在我们的项目中使用模型
- 8.2.1 替换模型
- 8.2.2 更新标签
- 8.2.3 更新command_responder.cc
- 8.2.4 运行脚本的其他方法
- 8.3 模型的工作方式
- 8.3.1 可视化输入
- 8.3.2 特征生成是如何工作的
- 8.3.3 理解模型架构
- 8.3.4 理解模型输出
- 8.4 使用你自己的数据训练
- 8.4.1 语音命令数据集
- 8.4.2 在你自己的数据集上训练
- 8.4.3 如何录制你自己的音频
- 8.4.4 数据增强
- 8.4.5 模型架构
- 8.5 小结
- 第9章 行人检测:创建应用程序
- 9.1 我们在创建什么
- 9.2 应用程序架构
- 9.2.1 模型介绍
- 9.2.2 所有的功能组件
- 9.3 详解测试
- 9.3.1 基本流程
- 9.3.2 图像提供程序
- 9.3.3 检测响应程序
- 9.4 行人检测
- 9.5 部署到微处理器
- 9.5.1 Ardunio
- 9.5.2 SparkFun Edge
- 9.6 小结
- 第10章 行人检测:训练模型
- 10.1 选择机器
- 10.2 配置Google Cloud Platform实例
- 10.3 训练框架选择
- 10.4 构建数据集
- 10.5 训练模型
- 10.6 TensorBoard
- 10.7 评估模型
- 10.8 将模型导出到TensorFlow Lite
- 10.8.1 导出到GraphDef Protobuf文件
- 10.8.2 冻结权重
- 10.8.3 量化并转换到TensorFlow Lite
- 10.8.4 转换为C源文件
- 10.9 训练其他类别
- 10.10 理解架构
- 10.11 小结
- 第11章 魔杖:创建应用程序
- 11.1 我们要创建什么
- 11.2 应用程序架构
- 11.2.1 模型介绍
- 11.2.2 所有的功能组件
- 11.3 详解测试
- 11.3.1 基本流程
- 11.3.2 加速度传感器处理程序
- 11.3.3 手势预测程序
- 11.3.4 输出处理程序
- 11.4 检测手势
- 11.5 部署到微处理器
- 11.5.1 Ardunio
- 11.5.2 SparkFun Edge
- 11.6 小结
- 第12章 魔杖:训练模型
- 12.1 训练模型
- 12.1.1 在Colab中训练
- 12.1.2 执行脚本的其他方式
- 12.2 模型是如何工作的
- 12.2.1 可视化输入数据
- 12.2.2 理解模型架构
- 12.3 训练你自己的数据
- 12.3.1 获取数据
- 12.3.2 修改训练脚本
- 12.3.3 训练
- 12.3.4 使用新的模型
- 12.4 小结
- 第13章 TensorFlow Lite for Microcontrollers
- 13.1 什么是TensorFlow Lite for Microcontrollers
- 13.1.1 TensorFlow简介
- 13.1.2 TensorFlow Lite简介
- 13.1.3 TensorFlow Lite for Microcontrollers简介
- 13.1.4 需求
- 13.1.5 为什么解释执行模型
- 13.1.6 项目生成
- 13.2 编译系统
- 13.2.1 专用代码
- 13.2.2 Makefile
- 13.2.3 编写测试
- 13.3 支持一个新的硬件平台
- 13.3.1 打印到日志
- 13.3.2 实现DebugLog()
- 13.3.3 运行所有的目标
- 13.3.4 与Makefile编译整合
- 13.4 支持一个新的IDE或新的编译系统
- 13.5 在项目和代码库之间整合代码更改
- 13.6 回馈开源
- 13.7 支持新的硬件加速器
- 13.8 理解文件格式
- 13.9 将TensorFlow Lite移动平台算子移植到Micro
- 13.9.1 分离引用代码
- 13.9.2 为算子创建一个Micro拷贝
- 13.9.3 将测试移植到Micro框架
- 13.9.4 创建一个Bazel测试
- 13.9.5 将你的算子添加到AllOpsResolver
- 13.9.6 创建一个Makefile测试
- 13.10 小结
- 第14章 设计你自己的TinyML应用程序
- 14.1 设计过程
- 14.2 你需要微控制器还是更大的设备
- 14.3 了解可行性
- 14.4 站在巨人的肩膀上
- 14.5 找一些相似的模型训练
- 14.6 查看数据
- 14.7 绿野仙踪
- 14.8 先可以在桌面系统中运行
- 第15章 优化延迟
- 15.1 首先确保你要优化的部分很重要
- 15.2 更换硬件
- 15.3 改进模型
- 15.3.1 估算模型延迟
- 15.3.2 如何加速你的模型
- 15.4 量化
- 15.5 产品设计
- 15.6 优化代码
- 15.7 优化算子
- 15.7.1 寻找已优化的实现
- 15.7.2 编写你自己的优化实现
- 15.7.3 利用硬件特性
- 15.7.4 加速器和协处理器
- 15.8 回馈开源
- 15.9 小结
- 第16章 优化功耗
- 16.1 开发直觉
- 16.1.1 典型的元件功耗
- 16.1.2 硬件选择
- 16.2 测量实际功耗
- 16.3 估算模型的功耗
- 16.4 降低功耗
- 16.4.1 间歇性轮停
- 16.4.2 级联设计
- 16.5 小结
- 第17章 优化模型和二进制文件大小
- 17.1 了解系统限制
- 17.2 估算内存使用率
- 17.2.1 闪存使用
- 17.2.2 RAM使用
- 17.3 关于不同问题的模型准确率和规模的大致数字
- 17.3.1 语音唤醒词模型
- 17.3.2 加速度传感器预测性维修模型
- 17.3.3 行人检测
- 17.4 模型选择
- 17.5 减小可执行文件的大小
- 17.5.1 测量代码大小
- 17.5.2 Tensorflow Lite for Microcontrollers占用多少空间
- 17.5.3 OpResolver
- 17.5.4 了解单个函数的大小
- 17.5.5 框架常量
- 17.6 真正的微型模型
- 17.7 小结
- 第18章 调试
- 18.1 训练与部署之间准确率的损失
- 18.1.1 预处理差异
- 18.1.2 调试预处理
- 18.1.3 在设备上评估
- 18.2 数值差异
- 18.2.1 这样的数值差异是真的问题吗
- 18.2.2 建立度量指标
- 18.2.3 与基线比较
- 18.2.4 交换实现
- 18.3 神秘的崩溃与挂起
- 18.3.1 桌面调试
- 18.3.2 日志跟踪
- 18.3.3 霰弹枪调试
- 18.3.4 内存损坏
- 18.4 小结
- 第19章 将模型从TensorFlow移植到TensorFlow Lite
- 19.1 了解需要什么算子
- 19.2 查看Tensorflow Lite中支持的算子
- 19.3 将预处理和后处理移至应用程序代码
- 19.4 按需自己实现算子
- 19.5 优化算子
- 19.6 小结
- 第20章 隐私、安全和部署
- 20.1 隐私
- 20.1.1 隐私设计文档
- 20.1.2 使用隐私设计文档
- 20.2 安全
- 20.3 部署
- 20.4 小结
- 第21章 了解更多
- 21.1 TinyML基金会
- 21.2 SIG Micro
- 21.3 TensorFlow网站
- 21.4 其他框架
- 21.5 Twitter
- 21.6 TinyML的朋友们
- 21.7 小结
- 附录A 使用和生成Arduino库ZIP文件
- 附录B 在Arduino上捕获音频
展开全部
出版方
机械工业出版社有限公司
机械工业出版社是全国优秀出版社,自1952年成立以来,坚持为科技、为教育服务,以向行业、向学校提供优质、权威的精神产品为宗旨,以“服务社会和人民群众需求,传播社会主义先进文化”为己任,产业结构不断完善,已由传统的图书出版向着图书、期刊、电子出版物、音像制品、电子商务一体化延伸,现已发展为多领域、多学科的大型综合性出版社,涉及机械、电工电子、汽车、计算机、经济管理、建筑、ELT、科普以及教材、教辅等领域。