点击上方“小白学视觉”,选择加"星标"或“置顶”
重磅干货,第一时间送达
计算机视觉是人工智能的一个领域,专注于教计算机解释和理解视觉世界。它涉及使用算法、深度学习模型和其他技术使机器能够识别图像或视频中的对象。计算机视觉可用于各种任务,如面部识别、目标检测、图像分割、运动估计和跟踪等。
计算机视觉的重要性在于,它能够在没有任何人为干预的情况下,根据所看到的内容做出决策。
例如,如果你正在制造一辆自动驾驶汽车,那么你就需要计算机视觉技术,以便自动检测障碍物并采取适当的行动,比如在需要时减速或停止。同样,如果你希望家中或办公室的安全系统自动化,那么计算机视觉也会派上用场,它可以识别有进入权限的人的脸,而拒绝那些没有权限的人进入。
Python 是机器学习项目中最流行的编程语言之一,因为与 Java 和 C++ 等其他编程语言相比,它简单易读。Python 附带了许多可以加快开发速度的库,其中一些重要的库是OpenCV、TensorFlow、PyTorch 等,它们专门用于图像处理相关任务。
本文旨在向初学者介绍这一领域,为他们提供有关涉及图像的机器学习应用程序背后概念的基本知识,并从高层次的角度深入了解这些库如何在底层协同工作,以便他们在阅读本文后轻松开发自己的项目。
近年来,随着可用于面部识别或自动驾驶系统等对象识别任务的深度学习算法的发展,计算机视觉得到了显著发展。卷积神经网络 (CNN) 的使用使研究人员能够开发强大的模型,即使使用少量训练数据也能准确识别图像——这一过程称为迁移学习。与支持向量机或决策树等传统机器学习方法相比,这进一步提高了其准确性和性能水平。
计算机视觉的应用范围广泛而多样:
医学诊断工具,如 X 射线成像分析软件
安全措施,例如生物特征认证系统
通过机器人手臂控制程序实现工业自动化
娱乐技术,如增强现实游戏或零售店的虚拟试衣间
所有这些都严重依赖计算机视觉技术!
此外,许多公司使用此技术通过使用图像处理技术(例如文本检测/识别和光学字符读取(OCR))来自动化其业务流程。这些自动化解决方案有助于降低成本,同时提高全球多个行业的效率。
图像表示是将数字图像存储在存储器中供计算机系统使用的过程。它涉及将图像中的视觉数据转换为数值,这些数值可以使用算法或其他软件工具进行操作或分析。
这里的目标是在图像中创建对象的表示,这样机器就可以更容易地理解这些对象,从而允许人类使用计算机对数目巨大的对象进行管理。
图像处理是指用于处理数字图像的技术,其目的是提高图像质量或从中提取有用信息,例如识别边缘或纹理等特征,以便在稍后进行特征提取任务时更好地对这些图像中的对象进行分类(见下文)。
图像处理通常包括降噪(平滑粗糙区域)、对比度增强(使黑暗部分更亮)、色彩校正/平衡(调整色调)等操作,所有这些操作的复杂程度各不相同,这取决于与计算机视觉技术相关的项目在开发周期中的任何特定时刻所需要的内容。
它具体指的是当试图识别图像中的模式时所采用的方法,无论是通过人工手段,还是利用卷积神经网络的自动化方法。
人工手段是指:通过人工干预,专家手动概述感兴趣的区域,然后将其输入到机器学习模型中,以根据预先提供的示例训练来识别某些特征
自动化方法是指机器能够自动检测输入中存在的各种类型的特征,例如面部、眼睛等。
这两种策略都用于相同的目的,即提供可靠的来源和数据,以进一步分析下游过程,从而使最终用户能够快速准确地获得结果。
第一步是安装必要的库:Numpy、Matplotlib 和 OpenCV。安装这些包可以通过你计算机的包管理器或直接从他们的网站下载它们来完成。在系统上安装所有这些包后,你就可以开始使用 Python 编写计算机视觉任务的代码。
接下来我们将看看使用 python 加载图像,以便它们可以处理各种任务,例如对象检测或面部识别。有多种方法可以实现这一点,包括将图像文件读入 NumPy 数组,或从给定的文件路径字符串创建 OpenCV 实例。
最后,让我们谈谈如何使用一些基本操作(例如过滤和增强技术)来处理加载的图像数据,这些操作允许我们对最终产品进行更多的控制,而不是仅仅依靠原始像素值来提供访问。
过滤技术涉及应用某些算法来修改每个单独的像素值,而增强技术通常指在保存编辑会话期间所做的任何更改之前,在现有图片帧本身内锐化细节。
通过将这两种策略结合在一起,用户可以获得更大的权力来决定他们在完成各自的项目后,最终会获得什么样的输出结果。
对象识别是一种基于 AI 的技术,可根据形状或颜色等特征识别图像或视频中的对象。该技术已应用于许多领域,例如出于安全目的的面部识别、使用条形码或二维码自动识别零售店的产品、自动驾驶汽车识别道路上的障碍物等。
例如:亚马逊的“Just Walk Out”(https://justwalkout.com/)功能,它使用对象识别算法来检测顾客从货架上拿走的物品,这样他们离开商店时就不需要排队结账了。
人脸检测和识别是另一个 AI 应用程序,即使在低光照环境或由于戴眼镜/帽子等造成的部分遮挡等具有挑战性的条件下,它也能从数字图像中以高精度识别人脸。它变得越来越流行,因为它使身份验证过程比密码/pin等传统方法简单得多。
人脸检测和识别系统无处不在,解锁智能手机(Apple 的 Face ID)、办公室/建筑物的门禁系统、学校和大学的出勤监控系统等等。
物体跟踪是一种计算机视觉技术,它通过识别物体相对于其他元素的位置来跟踪视频帧中的物体。
例如,人们在商场走来走去,而购物中心监控摄像头分别跟踪他们,而不会混淆谁是谁。
图像分割涉及将图像分解成其组成部分,即像素,以便可以根据不同的标准对每个部分进行分类——这有助于更有效地识别具有不同特征的区域,从而使与分析医学扫描相关的任务更加容易。
例如,放射科医生在 MRI 扫描中使用分割技术来更好地分析肿瘤。
与 C++ 或 Java 等其他语言相比,易于使用。只需几行代码,你就可以快速轻松地创建复杂的算法,而无需学习复杂的语法或从头开始编写冗长的程序。
有许多包含预写函数的库可用,这些函数允许开发人员专注于项目背后的逻辑,而不是每次需要在程序中实现新内容时都花时间从头开始编写代码,从而使开发变得更加简单。
但是,将 Python 用于计算机视觉项目时也存在一些限制;一个是速度,因为它是一种解释型语言,因此执行时间往往比编译语言(如 C++ 或 Java)慢,这可能会影响大型项目的性能,其中需要在实时场景中快速处理大量数据点,例如机器人控制系统,在这种情况下,每毫秒对系统自身实现的总体精度水平都有影响。
另一个限制是由于其动态类型检查而难以调试某些错误,与 Java 等静态类型语言相比,乍一看更难追踪,如果在运行时发生任何意外行为,编译器会立即抛出错误,以帮助查明更快地解决问题,从而节省宝贵的开发时间。
本文为读者提供了全面的指南,帮助他们了解基础知识并开始从事计算机视觉项目。它将为你提供一个良好的基础,以进一步探索深入机器学习和人工智能的迷人世界。
好消息!
小白学视觉知识星球
开始面向外开放啦
下载1:OpenCV-Contrib扩展模块中文版教程
在「小白学视觉」公众号后台回复:扩展模块中文教程,即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。
下载2:Python视觉实战项目52讲
在「小白学视觉」公众号后台回复:Python视觉实战项目,即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。
下载3:OpenCV实战项目20讲
在「小白学视觉」公众号后台回复:OpenCV实战项目20讲,即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。
交流群
欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器、自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~