《人工智能开源硬件与python编程实践》课件-项目4 基于计算机视觉的物体形状检测
教学配套课件:人工智能开源硬件与python编程实践

2022/3/2
set_pixformat(sensor.RGB565) #设置为565彩色;
知识拓展:灰度图像
• 灰度图像是每个像素只有一个采样颜色的图像, 通常显示为从最暗黑色到最亮的白色的灰度。
• 黑白图像只有黑白两种颜色,灰度图像在黑色与 白色之间还有许多级的颜色深度。
• 图像灰度级指图像中的色度分量亮度的最大值与 最小值之差的级别。一般使用8位数据来表示灰度, 这样灰度共有256级。
• 以While程序结构为例,重点体会Python的缩进规则,进一 步了解和体验Python语言中if、for和函数定义等程序模块 的结构设计。如果不遵守缩进规则,会是什么结果?
• 课程中所编写的程序是运行在智能硬件上,属于嵌入式编 程。请从硬件的工作频率、内存、外存、输入输出接口、 摄像头等附件的性能、编程库的调用等方面分析,嵌入式 Python与运行在电脑上的Python程序在编程方法上有哪些 异同?
• 易于学习、易于掌握、易于推广普及; • 已经被移植在各种系统平台,扩展库特别
丰富。
2022/3/2
知识拓展:Python编程基础
• 变量与赋值 • 列表、元组及切片操作 • 语句 • 程序结构(顺序、条件、循环) • 函数 • 对象 • 注释
Python嵌入式编程
• 固化库、外部库的导入和引用; • MPU资源的引用; • OpenAI开源硬件常用嵌入式程序结构
《人工智能开源硬件与python编程实践》课件-项目2 视频捕捉与处理Python编程

视频捕捉与处理 Python编程
2020/9/24
情境导入
火车站“刷脸”进站模式采用了人脸识别技术。 检票闸机上都安装了摄像头,旅客走近机器时, 摄像头实时采集含有人脸的视频流,并自动在图 像帧中检测和跟踪人脸,进而对检测到的人脸进 行特征识别,与身份证芯片里的照片进行比对。
票证信息相符以及人脸与证件照比对通过,闸机 就会自动放行。
任务与目标
了解视频与图像的基本原理、相关技术和应用框 架;
掌握运用人工智能开源硬件进行摄像头工作控制 的方法,掌握Python语言的编程方法;
应用人工智能开源硬件和Python相关算法模块设 计视频采集与捕捉功能;
针对生活应用场景,进一步开展创意设计,设计 具有实用价值的set_framesize(sensor.QVGA) #设置图像的分辨率;
知识拓展:图像存储格式
彩色图像由RGB三个分量组成。Bitmap图像格式由三个 颜色通道组成,每个通道用8位数据来表示,各有 256 个 可能的值。所以,Bitmap图像又称为24 位真彩色图像, 也被称为RGB888格式。
# 获取一张图像
sensor.snapshot() #拍摄一张照片,返回一个image对象。
2020/9/24
功能拓展
通过摄像头捕捉到视频图像; 按下板上按键,保存图像帧到板上Flash存储中; 模拟实现相机功能。
2020/9/24
完整案例:
import sensor, image, time
。
2020/9/24
知识拓展:分辨率
摄像头的分辨率是指摄像头解析图象的能力,也 即摄像头的影像传感器的像素数。
最高分辨率就是指摄像头能最高分辨图像的能力 ,即摄像头的最高像素数。30万像素CMOS摄像 头的最高分辨率一般是分辨率为640×480 。
《人工智能开源硬件与python编程实践》课件-项目11 计算机视觉与二维码识别

img = sensor.snapshot()
img.lens_corr(1.3) # strength of 1.3 is good for the 2.8mm lens.
二维码的识别
image.find_qrcodes([roi])方法查找 roi 区域内的 所有二维码,返回一个 image.qrcode 对象的列表 。
这种方式使符号可以表示缺省字符集以外的数据(如阿拉伯字符、古 斯拉夫字符、希腊字母等),以及其他解释(如用一定的压缩方式表 示的数据)或者对行业特点的需要进行编码。
QR Code码可高效地表示汉字,相同内容,其尺寸小于相同密度的 PDF417条码。市场上大部分条码打印机都支持QR code条码,其专有的 汉字模式更加适合我国应用。
设计与实践
二维码的定位与检测 图像畸变校正 二维码识别Python程序 调试、验证及完善
二维码结构特征
二维码扫描首先要做的就是要发现下图中 三个黑色正方形区域 ,如果找到这个三个 区域,就成功的检测到一个二维码了;
三个角上的正方形区域从左到右,从上到 下黑白比例为1:1:3:1:1。
知识拓展:二维码的特点
编码信息容量大。可容纳多达1850个大写字母,或2710 个数字,或1108个字节,或500多个汉字,比普通条码信 息容量约高几十倍。
编码范围广。二维码可以把图片、声音、文字、签字、指 纹等可以数字化的信息进行编码,用条码表示出来;可以 表示多种语言文字;可表示图像数据。
print(code)
二维码的识别
find_qrcodes函数只能用于识别QRCODE码,应 用时需要注意;
可以利用串口终端显示区观察二维码的识别情况 ,通过print(code)把识别出的二维码信息显示出 来;
《人工智能开源硬件与python编程实践》课件-项目11 计算机视觉与二维码识别

人工智能开源硬件与python编程实践
计算机视觉与二维码识别
2020实就是通过“用户手机-二维码-云端后 台-智能车锁”之间的信息传递来完成的。
用户使用手机先扫单车上二维码,而后向云端发起解锁请 求。云端对用户信息、单车信息进行核查,而后将授权信 息发送给手机。用户通过手机蓝牙接口将解锁指令和授权 信息传递给单车的智能锁,智能锁核验授权信息后解锁, 并将解锁成功的信息通知手机。手机将解锁成功的信息回 复给云端,云端开始给用户计费。
这种方式使符号可以表示缺省字符集以外的数据(如阿拉伯字符、古 斯拉夫字符、希腊字母等),以及其他解释(如用一定的压缩方式表 示的数据)或者对行业特点的需要进行编码。
QR Code码可高效地表示汉字,相同内容,其尺寸小于相同密度的 PDF417条码。市场上大部分条码打印机都支持QR code条码,其专有的 汉字模式更加适合我国应用。
知识拓展: QR码图形结构
QR码的图形要可以分为编码区和功能图形如图所 示,编码区又可以分为数据与纠错码、个格式信息 模块和个版本信息模块版本号大于,功能图形主要 包括寻像图像、定位图像以及校正图像。
知识拓展:二维码解码识别技术
分为五个步骤:图像预处理、定位与校正、读取数据、纠 错以及译码。
任务与目标
了解图像处理及二维码识别技术的基本原理、相 关算法和应用框架;
掌握运用人工智能开源硬件设计智能应用系统的 方法,掌握Python语言的编程方法;
应用人工智能开源硬件和Python相关算法模块设 计二维码扫描与识别应用系统;
利用Python编程,编写二维码提取及识别算法, 实现对二维码的识别解码功能,针对生活应用场 景,进一步创新设计具有实用价值的二维码应用 系统。
镜头畸变校正的Python代码如下:
《人工智能开源硬件与python编程实践》课件-项目15 语音识别与Python编程实践

定义语音识别工作场景
语音识别处理器允许用户定义一张识别关键词语 列表,应用中还可以动态编辑和维护这张识别关 键词语列表。只需要把关键词语以字符串的形式 传送给芯片,即可以在下次识别过程中生效。每 个关键词语可以是单字、词组、短句或者任何的 中文发音的组合。
按键
ASR处理器 拾音器
语音识别处理器
语音识别处理器基于ASR技术,具有降噪、端点 检测、语音识别等功能。语音识别处理器内置有 高精度的A/D和D/A通道,设计时直接把拾音器连 接在处理器芯片的AD 引脚上,不需要外接 AD 芯 片,不需要外接辅助的Flash 和 RAM,就能完成 说话语音的实时采集。
隐马尔科夫模型的应用cmu的李开复实现了第一个基于隐马尔科夫模型的大词汇量语音识别系统sphinx它是第一个高性能的非特定人大词汇量连续语音识别系统在声学识别层面以多个说话人发音的大规模语音数据为基础通过对连续语音中上下文发音变体的hmm建模语音音素识别率有了长足的进步语音信号的特征是随时间变化的具有短时性在550ms的一段时间间隔中保持相对稳定一致的特性
结合本次编程实践,重点体会自定义函数在Python应用系 统中的作用,进一步了解和体验Python语言中函数定义程 序模块的结构设计方法。
在语音识别应用中,相似音容易造成识别上的混淆,这对 实际应用系统工作有什么影响?如何改进你的系统设计尽 量减少相似音的负面影响?
在语音识别应用中,周围环境中的噪音,对语音识别将产 生很大干扰。在系统设计中有没有针对性的办法?请思考 ,如何尽量降低噪音对语音识别效果的影响?请提出设计 方案。
人工智能全套课件.

一、教学内容二、教学目标1. 理解机器学习的基本原理,掌握主要的分类和回归算法。
2. 学习神经网络的架构,了解深度学习在多个领域的应用。
三、教学难点与重点教学难点:神经网络的结构与训练过程,深度学习的具体应用。
教学重点:机器学习的基本概念,各类算法的原理及实现。
四、教具与学具准备1. 电脑及投影设备,用于展示课件和实例。
3. 笔记本和教材,供学生记录重点内容。
五、教学过程2. 理论讲解:介绍机器学习的基本概念,讲解各类算法原理。
3. 实例演示:以图像识别为例,展示神经网络的构建与训练过程。
4. 随堂练习:让学生运用所学知识,完成简单的分类和回归任务。
5. 深度学习应用:介绍深度学习在自然语言处理等领域的应用案例。
六、板书设计1. 机器学习基础:分类算法、回归算法。
2. 神经网络与深度学习:结构、训练、优化。
3. 应用案例:图像识别、自然语言处理。
七、作业设计1. 作业题目:(1)简述机器学习的基本概念及其应用。
(2)比较线性回归和逻辑回归的异同点。
2. 答案:(1)机器学习是指让计算机通过数据学习,不断提高性能的过程。
应用领域包括:搜索排名、推荐系统、语音识别等。
(2)线性回归和逻辑回归的异同点:同:都是回归算法,通过优化目标函数求解参数。
异:线性回归适用于连续型输出,逻辑回归适用于二分类输出。
(3)神经网络训练过程:输入数据、前向传播、计算损失、反向传播、更新权重。
八、课后反思及拓展延伸1. 反思:关注学生在课堂上的参与度,及时解答疑问,提高教学效果。
2. 拓展延伸:鼓励学生深入学习相关领域知识,如计算机视觉、自然语言处理等,提高实际应用能力。
组织课外实践活动,让学生在实际项目中锻炼技能。
重点和难点解析:1. 教学难点:神经网络的结构与训练过程。
2. 实例演示:以图像识别为例,展示神经网络的构建与训练过程。
3. 作业设计:神经网络训练过程的详细解答。
详细补充和说明:一、神经网络的结构与训练过程1. 初始化:为神经网络中的权重和偏置赋予随机值。
人工智能开源硬件python编程实践试题答案

《人工智能开源硬件与python编程实践》试卷答案一、单项选择题(每题2分,共20分)1、下列编程语言及工具中,开放源代码的是()A. C++B. JavaC. PythonD. VB2、Python程序中,自定义函数的语句块使用()方式来表示起始和结束。
A. 使用括号{}B. 使用括号[]C. 使用括号()D. 缩进3、OpenAIE硬件中能够运行Python程序是因为MPU芯片中固化有()A. IDE开发环境B. 编译器C. 解释器D. Python库4、如果要利用OpenAIE IDE编程工具辅助进行程序调试,可以利用()中交互的信息。
A. 视频显示区B. 串行终端监视区C. 外部调试文件D. 新建调式窗口5、关于轨迹跟踪与拟合方法,说法错误的是()A. get_regression方法只能处理黑线B. get_regression方法进行线性回归计算C. get_regression方法最小二乘法D. get_regression方法也可以用来对复杂些曲线轨迹进行拟合6、某同学自行采集人脸样本图像进行Haar模型训练,正确的过程包括()A. 每张人脸只选一张照片纳入训练集,选另一张照片纳入测试集B. 选一部分人脸照片作为正样本,选另一部分人脸照片作为负样本C. 对采集的样本照片进行规范化,统一图像格式和宽度比D. 训练后,使用负样本进行模型测试7、下列属于经典卷积神经网络模型的是()A. AlexNetB. PyTorchC. CaffeD. frontface8、手写体数字识别可以使用以下哪种模型?()A. cifar10B. Lenet5C. Haar CascadeD. Smilenet9、下列哪种技术应用在语音识别领域?()A. HMMB. LenetC. HaarD. Canny10、语音识别应用中,常常针对特定应用场景设置命令词及短语列表,这样做的原因是()A. 抗噪声B. 消除相似音影响C. 受声学模型词汇集的限制D. 改善识别性能二、概念解释(每题5分,共20分)1、Hough变换2、二维码3、卷积神经网络4、ASR语音识别三、简答题(每题10分,共30分)1、OpenAIE人工智能硬件中固化了哪些Python编程库?2、简述基于OpenAIE硬件的语音识别应用程序设计过程。
人工智能基础与应用 配套课件

内容 导航
CONTENTS
了解人工智能
第1章 人工智能概述
16
了解深度学习
人工智能发展现状 人工智能机器学习框架
怎样学习人工智能
1.3 人工智能发展现状
第1章 人工智能概述
17
➢ 在竞赛领域,在ILSVRC的图像分类比赛中,2012年,AlexNet网络(一个7层的卷积神经网络)将图像分类的错误率从2011年的 26%下降到16%。
➢ 当然,手机的语音助手也可以有相同的功能,如Siri、小爱 同学等。
1.1 了解人工智能
3.机器翻译
第1章 人工智能概述
8
在日常学习或者工作中,人们经常会有一些单词不认识或者要把某句话翻译成英语,目前 借助软件或者网页就可以实现中英文互译。这里举一个例子,当翻译“我在周日看了一本书” 的时候,人工翻译可以很好地翻译出“I read a book on Sunday”,但是对于机器而言,它有 着不同的翻译结果,首先就是一词多义的问题,如“看”这个词,可以翻译为 “look”“watch”“read”等,其次就是语序问题,“在周日”这样的时间状语一般习惯放在句子 后面,在翻译时需要做到“信、达、雅”,现在基于深度学习的翻译基航
CONTENTS
了解人工智能
第1章 人工智能概述
18
了解深度学习
人工智能发展现状 人工智能机器学习框架
怎样学习人工智能
1.4.1 机器学习框架简介
第1章 人工智能概述
19
常用的人工智能机器学习的基本框架包括TensorFlow、PaddlePaddle、Caffe、PyTorch、MXNet等, 其说明如表1-1所示。
1.2 了解深度学习
第1章 人工智能概述
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
threshold 控制从霍夫变换中监测到的圆。只返回大于或等于阈值的 圆。一个圆的大小是组成圆的所有索贝尔滤波像素大小的总和。
margin的分量x_margin、y_margin和r_margin用来控制所检测的圆的 合并。
圆形检测find_circles方法
image.find_circles()方法,使用霍夫变换在图像 中查找圆,返回一个image.circle对象列表;
x_stride是霍夫变换时需要跳过的x像素的数量。 若已知圆较大,可增加 x_stride 。
y_stride是霍夫变换时需要跳过的y像素的数量。 若已知圆较大,可增加 y_stride 。
经验及调试方法
image.circle对象有四个值:x,y,r (半径)和magnitude。magnitude 是检测圆的强度,值越高越好
roi是一个用以搜索的矩形区域(x, y, w, h),图像操作范围仅限于roi区 域内的像素。如果未指定,默认的roi即整幅图像。
x_stride是霍夫变换时需要跳过的x像素的数量。若已知圆较大,可增 加x_stride。
利用霍夫变换完成空间映射;
用计数器统计出现次数最高的未知系数组合,如 (ρ,θ)等。
知识拓展:直线检测
根据提取出的很多特征点(X0,Y0),(X1,Y1),..., (Xn,Yn)求待拟合直线Y=kX+b中的斜率k和偏移b 。
通过任意两点得到若干组(k,b),选取出现次数 最多的一组(k,b)就是要求的参数。
知识拓展:图像预处理方法
灰度化 二值化 图像增强 图像去噪 边缘检测
知识拓展:灰度化
灰度化是一种常用的图像预处理方法,它将彩色 图像转化为灰度图像,应用在图像分析与识别等 应用中;
在RGB空间中,空间的原点对应的是黑色,距离 原点最远的那个顶点对应的是白色。原点和白色 顶点的连线段上对应了从黑色到白色的灰度值, 也称亮度值;
通过选取合适的阈值,将256个不同等级的灰度 图像进行划分,划分结果仍然可以描绘图像的整 体或局部特征,这样就实现了图像检测主要是侦测诸如直线、圆形、 椭圆形、矩形等几何形状,常用的算法是霍夫变 换。
霍夫变换是通过直角坐标系和极坐标系之间的变 换将图像空间中具有相同特征的直线或者曲线映 射到参数空间中的一个点上,然后在参数空间中 对点进行描述,使结果更易识别和检测,最后用 累加器进行累加,从而把检测图形的问题转化为 寻找最大累加值的问题。
把图像平面上的特征像素点映射到参数平面上, 通过累计可能会出现几组参数峰值点,可以检测 出图像中的多条直线。
知识拓展:圆检测
对圆的检测本质上就是求三个参数(x0,y0,r),所 以就可以通过任意三点求解三个未知数,然后对 (x0,y0,r)这个集合投票,最终出现次数最多的一 组参数就是决定圆方程的参数。
分析与思考
find_rects方法可以快速实现矩形的检测与追踪。生活中 经常会遇到三角形、菱形等其它几何形状的物体(如图) ,利用霍夫变换检测直线的方法有助于这些形状的检测吗 ?利用网络查阅相关技术方法,给出解决方案。
利用find_circles函数可以实现圆形物体的识别追踪,实际 生活中会有识别椭圆等形状物体的需求。如何参考圆的检 测原理,进行椭圆等形状物体的追踪?利用网络查阅相关 技术方法,给出解决方案。
for r in img.find_rects(threshold = 25000): #查找矩形,阈值=10000
img.draw_rectangle(r.rect(), color = (255, 0, 0)) 颜色为红色
#画出矩形,
for p in r.corners():
#找出矩形的四个角
img.draw_circle(p[0], p[1], 5, color = (0, 255, 0))# 四个角顺时针 画出绿色的半径为5像素的圆形
threshold控制从霍夫变换中监测到的圆。只返回 大于或等于 threshold 的圆。应用程序的正确的 threshold值取决于图像。注意:一个圆的大小 (magnitude)是组成圆所有索贝尔滤波像素大小的 总和。
圆形检测例程
while(True): img = sensor.snapshot().lens_corr(1.3) #进行镜头畸变校正,去除图 像中的鱼眼效应; for c in img.find_circles(threshold = 2500, x_margin = 10, y_margin = 10, r_margin = 10,r_min = 2, r_max = 100, r_step = 2): #以圆心(c.x(), c.y())和半径c.r(),用黄色画圆; img.draw_circle(c.x(), c.y(), c.r(), color = (255, 255, 0))
灰度图像只含有亮度信息,不含色彩信息,其亮 度是连续变化的,要表示灰度图像就需要把亮度 值进行量化,通常把灰度划分为256个灰度级, 从0到255。
知识拓展:二值化
值化也是图像预处理的一种技术,又称图像黑白 化。
通过二值化的处理,可以凸显出图像的轮廓。它 将像素点的灰度值设置为0或者255,不采用其它 灰度值,目的是使整个图像都呈现出黑白效果。
Threshold参数的取值要根据应用场景的情 况进行调节。在矩形边缘处所有像素上滑 动索贝尔算子并进行累加,边界值小于 threshold的矩形会进入返回列表。
矩形检测例程
while(True):
clock.tick()
img = sensor.snapshot()
# find_rects中threshold应设置为足够高的值,以滤除在图像中检测到 的具有低边缘幅度的噪声矩形。最适用与背景形成鲜明对比的矩形。
人工智能开源硬件与python编程实践
基于计算机视觉的 物体形状检测
情境导入
视觉分拣机器人,利用视觉系统采集图像,计算 机系统进行图像处理,先完成特征点检测、轮廓 检测等过程,再进行图像匹配或形状识别。
生活中经常遇到需要对物体形状进行判断的情形 ,自动拣球机可以发现视野内的乒乓球、高尔夫 球、足球等圆形物体,餐盘识别系统可以发现矩 形、圆形等指定形状的餐盘。学习物体形状检测 方法,了解相关应用技术,具有实际意义。
知识拓展:霍夫变换的步骤
用canny算子进行边缘轮廓提取。在做霍夫变换 时,如果将所有的像素点都做映射处理,会导致 计算量太大,一般都是先用canny算子对边缘轮 廓做提取,尽可能的去掉平滑区域的点,减少计 算量;
利用二值化的方法以及开闭等形态学操作提取轮 廓,去掉噪声等扰动,求得在拟合线性方程时尽 可能准确;
设计与实践
形状检测Python编程接口 圆形检测编程 矩形检测编程 调试、验证及完善
形状检测编程接口
人工智能开源控制板上集成的Python视觉 库中提供利用霍夫变换检测直线、圆形、 矩形的算法;
提供find_lines方法进行直线检测; 提供find_circles方法进行圆形检测; 提供find_rects方法进行矩形检测。
利用霍夫变换进行圆检测,就是将图像空间中的 边缘特征像素点映射到参数空间,然后把参数空 间中的坐标点元素对应的累加值进行累加,最后 根据累加值确定圆心和半径。
知识拓展:矩形检测
基于窗口霍夫变换与阈值分割自动识别图 像中的矩形策略:通过图像窗口霍夫变换 ,提取霍夫图像的峰值(对应原始图像的 线段),当四个峰值满足某些几何条件时 ,则检测出矩形。
r_min,r_max和r_step用来控制测试圆的半径。 缩小测试圆半径的数 值可以提升搜索性能。
阈值 threshold = 3500比较合适。如果视野中检测到的圆过多,需要 增大阈值;相反,如果视野中检测到的圆过少,需要减少阈值。
矩形检测find_rects方法
image.find_rects()方法用于查找图像中的 矩形,返回一个image.rect 对象的列表。该 方法适用于检测与背景形成鲜明对比的矩 形。
在形状追踪应用中,环境光照的变化对识别形状结果有影 响吗?光照的影响严重到什么程度?请找到一种对策,并 设计解决方案。
如何利用find_blobs、find_circles等方法,同时进行颜色 识别与形状的综合识别?请尝试编程解决。
任务与目标
了解图像处理及图形识别技术的基本原理、相关 算法和应用框架;
掌握运用人工智能开源硬件设计智能应用系统的 方法,掌握Python语言的编程方法;
应用人工智能开源硬件和Python相关算法模块设 计物体形状检测功能;
针对生活应用场景,进一步开展创意设计,设计 具有实用价值的物体形状检测应用系统。