基于AI的计算机视觉识别在Java项目中的使用(三) —— 搭建基于Docker的深度学习训练环境

深度学习在哪里?

我们已然生活在数字时代,一天24小时我们被数字包围。我们生活中的方方面面都在使用数字来表达、传递、存储。我们无时无刻不在接收数字信息,而又无时无刻不在生产数字信息。

在数字世界中,可以通过计算寻找隐藏于数字背后的逻辑、规律、模型。通过它们又可以去发现、预测、创造、重塑我们的世界。深度学习就是寻找数字世界深处运作模型的一种重要方法。

今天,很多领域都能看到深度学习的身影:从L5级自动驾驶到基于图像识别的自动制导武器,从物流分拣机器人到扫地机器人,从资本市场的量化投资到保险和信贷中的风控,从医疗诊断到药物研发,从自动翻译到相机美颜,从头条到抖音 ...... 不知不觉中它正在遍地开花,影响着甚至操控着我们的生活。

还有哪些行业、领域可以用深度学习来赋能?可以说已经或正在做数字化转型,并且依靠经验直觉来工作的领域几乎都行。

入手深度学习有哪些要求

希望将深度学习作为生产力工具的开发者,需要对其背景知识有一些了解。以下内容可做入门参考:

1、编程基础:在模型训练过程中主要使用Python;

2、数学基础:导数和微分、线性代数、概率和统计;

3、深度学习的基本理论:包括神经网络的基本原理、激活函数、损失函数、反向传播、梯度下降和梯度下降加速方法、学习速率优化、正则化、归一化等,还有基本的卷积神经网络、循环神经网络、强化学习等;

4、最好对常用的深度模型 AlexNet、VGG Net、GoogleNet、ResNet、ResNeXt、R-CNN、YOLO、SegNet、GAN 等有基本了解;

可以先把运行环境搭起来,对哪个方面有兴趣可以一边找些DEMO增加感性认识、提升信心和兴趣,同时去深入理解背后的理论。

如何选择深度学习框架

要入手深度学习的例子,首先要选择一个深度学习框架。

好的深度学习框架可以让我们方便地定义深度神经网络模型,导入训练数据,执行和监控训练过程,保存和部署训练结果。

做深度学习有多种可供选择的框架:Tensorflow、PyTorch、Caffe、Theano、MXNet、Torch、还有百度的PaddlePaddle...... PyTorch 和 TensorFlow 应该是使用最多的。

TensorFlow偏向于工业应用,PyTorch偏向于学术研究。我们可以先熟悉一种框架,对于一种框架的使用经验也很容易迁移到其他框架上。我一直用的TensorFlow, 后面环境搭建和示例都以TensorFlow作为基础框架。

搭建深度学习训练环境

自己开发使用的Windows10,在Windows下准备基于Tensorflow的深度学习训练环境主要有两种方式,具体可以参考TensorFlow官方文档:

第一种:安装Python环境,然后通过pip安装TensorFlow。如果要使用支持CUDA的GPU训练,则要另外安装NVIDIA GPU驱动程序、CUDA工具包、cuDNN SDK等。

第二种:直接使用已经安装配置好的TensorFlow Docker镜像。如果在Windows10下用过WSL和Docker,这种方法比较方便。

Windows10下,配置带GPU加速的Docker深度学习环境

如果要训练较大较深的模型,那么用GPU加速会节省不少时间。下面是安装步骤:(参考Nvidia官方文档)

第一步:安装NVIDIA Windows驱动和Linux子系统

  1. Docker容器中使用GPU,首先需要将windows10升级到21H2以上版本。

  2. 下载安装最新的Windows版Nvidia驱动程序。

下面的步骤在Windows命令行下执行:

# 安装wsl
C:\> wsl.exe --install     
# 将wsl升级到最新
C:\> wsl.exe --update
# 使用 wsl2
C:\> wsl --set-default-version 2
# 查看所有可用的Linux子系统版本
C:\> wsl --list --online
# 安装指定版本的linux操作系统
C:\> wsl --install -d Ubuntu-20.04

第二步:安装Nvidia-Docker

以下命令在刚安装的Linux子系统中执行:

$ curl https://get.docker.com | sh      
$ distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
$ curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
$ curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
$ sudo apt-get update
$ sudo apt-get install -y nvidia-docker2    
# 测试安装是否成功
$ docker run --gpus all nvcr.io/nvidia/k8s/cuda-sample:nbody nbody -gpu -benchmark  

第三步:运行带有GPU加速的TensorFlow Docker镜像

C:\> docker run --gpus all -d -it -v D:\tf\notebooks:/tf/notebooks -p 8888:8888 tensorflow/tensorflow:latest-gpu-jupyter

该镜像自带Jupyter Notebook。容器运行后可以在后台看到如下网址,使用该网址就能访问Jupyter Notebook的IDE环境

基于AI的计算机视觉识别在Java项目中的使用(三) —— 搭建基于Docker的深度学习训练环境_第1张图片

基于AI的计算机视觉识别在Java项目中的使用(三) —— 搭建基于Docker的深度学习训练环境_第2张图片

本期到此为止。《基于AI的计算机视觉识别在Java项目中的使用》专题将按下列章节展开,欢迎关注我的个人公众号( TuXiang )和CSDN( TuXiang++ )。

一、《基于AI的计算机视觉识别在Java项目中的使用 —— 背景》

二、《基于AI的计算机视觉识别在Java项目中的使用 —— OpenCV的使用》

三、《基于AI的计算机视觉识别在Java项目中的使用 —— 搭建基于Docker的深度学习训练环境》

四、《基于AI的计算机视觉识别在Java项目中的使用 —— 准备深度学习训练数据》

五、《基于AI的计算机视觉识别在Java项目中的使用 —— 深度模型的训练调优》

六、《基于AI的计算机视觉识别在Java项目中的使用 —— 深度模型在Java环境中的部署》

你可能感兴趣的:(AI,TensorFlow,人工智能,计算机视觉,java)