计算机视觉 (CV) 是现代人工智能 (AI) 和机器学习 (ML) 系统的主要任务。它正在加速行业中的几乎每个领域,使组织能够彻底改变机器和业务系统的工作方式。
在学术上,它是计算机科学的一个成熟领域,数十年的研究工作已经进入该领域以使其丰富。深度神经网络的使用最近彻底改变了该领域并赋予它新的生命。
计算机视觉有多种应用领域,例如:
当然,与 CV 系统相关的挑战很多。例如,自动驾驶不仅仅使用物体检测,还包括物体分类、分割、运动检测等。
最重要的是,这些系统有望在几分之一秒内处理 CV 信息并做出高概率决策。更高级别的监督控制系统必须做出决定,负责最终的驾驶任务。
此外, 多个CV 系统/算法通常在任何受人尊敬的自动驾驶系统中发挥作用。在这些情况下,对并行处理的需求很高,这会导致底层计算机器承受很高的压力。
如果同时使用多个神经网络,它们可能会共享公共系统存储并相互竞争公共资源池。
就医学成像而言,计算机视觉系统的性能由了解图像背后的病理学的 经验丰富的放射科医师和临床专业人员来判断。此外,在大多数情况下,任务涉及识别患病率非常低的罕见疾病。
这使得训练数据稀疏和稀疏,即找不到足够的训练图像。因此,深度学习 (DL) 架构必须通过添加智能处理和架构复杂性来弥补这一点。
TensorFlow 是来自 Google 的一种广泛使用且备受推崇的开源 Python 包,它使构建计算机视觉深度学习模型变得简单直接。来自其官方网站:
“它拥有一个全面、灵活的工具、库和社区资源生态系统,使研究人员能够推动 ML 的最新技术发展,而开发人员则可以轻松构建和部署 ML 支持的应用程序。”
随着 TensorFlow 2.0 的发布和作为高级 API 的 Keras 库集成,可以轻松堆叠神经元层并构建和训练足够复杂的深度学习架构。
轻松 | 强大的 ML Production Anywhere | 强大的研究 |
现在,当然,TensorFlow 可用于为各种应用程序构建深度学习模型,包括,
但是,在本文中,我们重点关注使用 TensorFlow 使用卷积神经网络 (CNN) 构建简单对象分类任务的代码和实践示例。
这涵盖了 TensorFlow 的所有基本组件,例如层、优化器、误差函数、训练选项、超参数调整等。
深度学习任务和模型训练广泛受益于游戏处理单元 (GPU) 等专用硬件。
通用 CPU 在处理大量数据时会遇到困难,例如,对具有数万或数十万浮点数的 矩阵执行线性代数运算。
在引擎盖下,深度神经网络主要由矩阵乘法和向量加法等操作组成。开发 GPU(主要迎合视频游戏行业)是为了使用数千个微型计算核心处理大规模并行计算。
它们还具有大内存带宽,以处理神经网络训练数百个时期时这些计算所需的快速数据流(处理单元缓存到较慢的主内存并返回)。这使它们成为处理计算机视觉任务计算负载的理想商品硬件。
有多种途径可以将 GPU 用于深度学习任务。购买裸机服务器或工作站对于那些寻求最高可定制性的人来说可能是有益的。从 AWS 或 GCP 租用云上的 GPU 计算资源非常适合那些运行数据有限的短会话的人。或者使用免费(但有限)的资源,例如Google Colaboratory。数据集越大,模型越好,但在这个例子中,我们使用最后一个选项 Google Colab。
我们首先测试是否有 GPU 用于训练,
- import tensorflow as tf
- device_name = tf.test.gpu_device_name()
-
- if device_name != '/device:GPU:0':
- raise SystemError('GPU device not found')
-
- print('Found GPU at: {}'.format(device_name))
我们使用以下代码直接将数据集下载到本地环境(Google Colab)中。如果您在本地机器上工作(并且已经保存了文件),则相应地修改代码。
!wget --no-check-certificate \ https: //存储。谷歌 API 。com / laurencemoroney-博客。_ 应用点。com /马或人。压缩 \
-O / tmp /马-或-人。压缩
以下 python 代码将使用 OS 库来使用操作系统库,使您可以访问文件系统和 zipfile 库,从而可以解压缩数据。