之前在自己搭建图像识别的AI环境时,需要至少半天甚至更多的时间,因为使用多项开源技术,各种技术之间的兼容性往往非常复杂,如果都使用最新的版本,通常会出现不兼容的情况,需要各种试错,反复安装,极为头痛。而Oracle OCI当中为大家提供了配置好的,并且可以免费使用的AI集成环境,您只需要支付计算资源和存储资源的费用,就可以使用由专业人士为大家搭建好的AI环境,而这个环境不会额外收费。前一段时间一直在做图像识别的案例,期间在网络上看到一篇文章,使用pulse进行模糊人脸图像处理的例子,于是想搭建一个环境测试一下。因为该环境需要使用到GPU运算,在常规的AI机器学习环境之上还要配置GPU的驱动及做相关的设定,这使环境搭建变得更加复杂。好在OCI的marketplace提供AI all in one的image,我们只需要点选几下鼠标,就可以轻松创建出适用于图像处理的GPU机器学习环境。

今天就请和我一步步来操作,从环境搭建到使用pulse进行图像去除马赛克吧。

5c382d1b2fd63a471dd1e13c84fa1acd.png

1、在OCI当中创建GPU机器学习环境

在您登陆Oracle Cloud环境之后,进入instance选项,创建instance。本次我选择的是美国数据中心,您可以根据自己的情况,选择有GPU环境的数据中心。

62bf4da49255f33eedc11c431b79f133.png

请点击下图中红框所示按钮,修改操作系统安装介质。

528bc0cd2e5cd6d9d2a7e38a2584c7cb.png

选择Oracle images当中的AI (All-in-One) GPU Image for Data Science这个介质,这是免费使用的。

7b3aa38f57dcbe82b8366a60bef58ef7.png

然后选择计算资源的shape,本次由于要使用到GPU资源,所以请按照下图的方式进行选择。因为我们的计算量不大,所以选择最低端的GPU shape即可。

9ea70050064a7748cc185799587ee23f.png

接下来提供连接到虚拟机的公钥,然后点击Create按钮创建instance,只需要1-2分钟的时间就可以创建完毕。

8a055d005c1488a4989b00295ba12e14.png

5c382d1b2fd63a471dd1e13c84fa1acd.png

2、网络设定

您可以根据需要对当前系统的防火墙进行设定,比如关闭防火墙,使用root用户执行systemctl stop firewalld将防火墙关闭,执行systemctl disable firewalld彻底关闭。另外需要注意的是,需要在OCI环境中,对当前实例所使用的安全列表进行设定,比如一会儿我要使用9999端口作为jupyter notebook的端口,那么请将该端口放开。

5c382d1b2fd63a471dd1e13c84fa1acd.png

3、安装anaconda和dlib

因为本次要使用到人脸识别技术,所以需要安装dlib,并且为了后续的计算方便,建议大家也安装Anaconda。

A、先将安装dlib之前所需的安装包和支持文件安装上。

yum -y install cmake

yum -y install boost

pip install cmake

B、下载Anaconda

wget https://repo.anaconda.com/archive/Anaconda3-2020.02-Linux-x86_64.sh

C、安装Anaconda

bash Anaconda3-2020.02-Linux-x86_64.sh

D、激活Anaconda

conda activate

E、升级Anaconda,这个动作会需要大概5-10分钟的时间

conda upgrade --all

F、安装dlib

pip install dlib

5c382d1b2fd63a471dd1e13c84fa1acd.png

4、设定jupyter环境并启动jupyter notebook

A、首先设定环境变量,执行下方代码即可:

source mlenv/bin/activate

B、生成密码文件

jupyter notebook password

您会看到如下提示,说明密码文件已经存入这个json文件当中。

Wrote hashed password to /root/.jupyter/jupyter_notebook_config.json

C、生成配置文件

jupyter notebook --generate-config

您会看到下面提示,表示配置文件生成完毕

Writing default config to: /root/.jupyter/jupyter_notebook_config.py

D、将密码文件当中的密码放入配置文件

首先使用cat或者vi,查看在上面第二步(B步骤)生成的密码文件,您将看到如下信息,将passoword后面的双引号中的信息复制出来。

d656072b6323c28e380556afb6b219af.png

打开上面C步骤生成的配置文件,将如下信息加到文件的最后,并将刚才复制的密码写入。注意,在密码前面,我写了u。本次使用9999端口作为jupyter notebook的端口

eff61f0f18e5cb3de34fcab7c25bd81c.png

E、启动jupyter notebook

jupyter notebook --allow-root &

来到浏览器中输入IP:9999,然后会被要求输入密码,将刚才您设定的密码输入即可。我先写几行代码,看看当前的设备是否可以正常使用GPU。

9cbc79a9de7c267b9fe5591e481b454c.png

5c382d1b2fd63a471dd1e13c84fa1acd.png

5、下载pulse

来到https://github.com/adamian98/pulse,下载源代码。下载的是zip格式的文件,使用unzip解压即可。

7319a366e8e56a054010d897e20315be.png

5c382d1b2fd63a471dd1e13c84fa1acd.png

6、使用pulse进行图像处理。

进入解压好的路径,创建cache目录,并给予正确的访问权限,比如chmod -R 777 cache。cache是用来一会儿在处理图像时,在线下载模型的。创建input路径,并设定权限,这个路径是用来放入马赛克图片的。怕涉及版权,我将我自己的照片模糊处理之后,放入input文件夹。

29337043fec7bd5b2cc14f58a00ad540.png

然后在命令行中,执行2000步运算,处理之后的结果将被放入runs目录。

185f48e5ce7915f4eacdd59489e65ca7.png

使用ftp下载下来或者在jupyter notebook的文件管理器中看一看,我的天啊,吓屎了。这这这,这是谁啊!!!!!!眼睛挺大,还有长睫毛,不错。眉毛怎么回事儿?眼袋怎么这么大?嘴巴也不像啊,另外,我的眼镜呢?给我P没了?。而且这不是华人的面孔啊,怎么回事儿啊?

原因很简单,因为pulse的训练集是白种人的面部图片,所以程序自然会使用它的“学习成果”去预测马赛克之前的原始图像。后续可以对算法和训练集进一步优化,让它适合各个人种。

2b52e4299f5989ef47750ceae7264675.png

今天的内容就到这里了,我去想想怎么优化一下算法,看看能不能把我P得更好看一点,哈哈哈。

相关链接:

Oracle数据科学公开课(1):OCI基础

Oracle数据科学公开课(2):OCI Data Science Tenancy Setup

Oracle数据科学公开课(3): Resource Stack

Oracle数据科学公开课(4):Notebook的创建与管理

Oracle数据科学公开课(5):JupyterLab环境详解

Oracle数据科学公开课(6):Notebook Session Enviroment

Oracle数据科学公开课(7):ADS Python SDK

Oracle数据科学公开课(8):ADS Connectivity to Data

手把手教你:搭建Data Science环境

手把手教你:使用Oracle Data Science分析纽约民宿数据

扫描下方QR Code即刻预约ADW演示

e84b869819dcb6ecabd9f992834135ad.png

编辑:殷海英

bb9a79e4c261db0e3cdf1809c8dfc4a2.png

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐