OCI数据科学工作坊:机器视觉

数据科学早就深入在我们每天的生活当中,几乎在各个领域都能看到它的身影。机器视觉是人工智能快速发展的一个分支。简言之,机器视觉就是用机器代替人眼来做测量和判断。在工业、农业、交通、航天等领域都有着广泛的应用。

大家可能觉得机器视觉离我们很远,其实并不是这样,我们可以用自己的个人计算机搭建简单的图像识别系统,来初步了解机器视觉的工作原理与应用。今天我们就通过一个例子为大家介绍,如何搭建机器学习——图像识别系统。因为今天我们的运算量比较大,为了加速运算,我们使用Oracle公有云环境作为我们的基础架构。在今天的模型训练阶段,我们要做10万次迭代,如果使用个人计算机恐怕要15天以上的运算时间,使用OCI上面8  OCPU 128GB内存的机器,也需要7天以上的时间,但如果使用Oracle  OCI上的GPU3.1环境(第三代GPU公有云的最低端型号)仅仅需要4个小时就能完成模型。这也就是为什么人工智能环境往往需要较大的计算资源并使用公有云环境,Oracle的高性能计算云服务,为大家提供价格低廉、性能强大的人工智能基础架构。您可以点击文章末尾的链接,直接下载运算好的模型,避免在个人电脑上花费半个月的时间去创建模型。

OCI数据科学工作坊:机器视觉

1、基础环境搭建

今天我们使用Oracle公有云上的GPU环境作为我们的基础设施,您也可以使用本地计算机或者其他公有云作为您的基础设施。我们创建一个云端Linux环境,叫做AI,使用ubuntu20.4作为操作系统。大家也可以选择任何您所熟悉的操作系统。

OCI数据科学工作坊:机器视觉

为了加速运算,我们今天选择GPU3.1环境,在这个环境中,我们为大家提供6 cores CPU以及90GB的内存和4Gbps的网络带宽。大家也可以使用CPU环境或者性能更高带有4块显卡的GPU3.4环境进一步缩短运算时间。

OCI数据科学工作坊:机器视觉

OCI数据科学工作坊:机器视觉

接下来下载登录系统所需的秘钥。

OCI数据科学工作坊:机器视觉

等待1分钟左右的时间,我们的环境就创建好了。

OCI数据科学工作坊:机器视觉

2、安装Cuda环境

今天我们使用的是在美国本土数据中心的GPU3.1环境,这个环境使用的是特斯拉V100系列的显卡,您可以在我们的Ashburn及其他数据中心选择更新的特斯拉A100系列显卡。

OCI数据科学工作坊:机器视觉

我们来到https://developer.nvidia.com/Cuda-downloads下载适合您操作系统的Cuda。

OCI数据科学工作坊:机器视觉OCI数据科学工作坊:机器视觉

wget https://developer.download.nvidia.com/compute/cuda/11.2.0/local_installers/cuda_11.2.0_460.27.04_linux.runchmod +r cuda_11.2.0_460.27.04_linux.runsudo sh cuda_11.2.0_460.27.04_linux.run

这里需要注意的是,有些朋友喜欢使用通过yum或者apt在线进行安装。首先在线安装时,下载速度与直接下载run文件相比会显得缓慢。其次,通过在线安装方式,系统有可能下载的软件版本过于老旧导致后面的程序执行失败。比如今天我们使用的cuda为11.2.0版本。如果通过在线安装,不少朋友遇到安装的是10.1版本,并导致后面训练模型的python程序无法执行。

执行上述脚本之后,大家将看到如下安装界面:

OCI数据科学工作坊:机器视觉

我们键入accept同意软件许可。接下来选择安装选项,如果您使用的是非GPU环境,只需安装CUDA Toolkit11.2即可,后面的Demo和文档选择性安装。

OCI数据科学工作坊:机器视觉

安装需要一点时间,大概3-5分钟即可完成,完成后,我们将看到如下提示:

OCI数据科学工作坊:机器视觉

按照上图中的提示,设定环境变量,将刚安装的CUDA添加到PATH和LD_LIBRARY_PATH当中,然后使用nvcc --version命令查看安装是否正确。

ubuntu@ai:/u01$ nvcc --version                                                                                       nvcc: NVIDIA (R) Cuda compiler driverCopyright (c) 2005-2020 NVIDIA CorporationBuilt on Mon_Nov_30_19:08:53_PST_2020Cuda compilation tools, release 11.2, V11.2.67Build cuda_11.2.r11.2/compiler.29373293_0

OCI数据科学工作坊:机器视觉

3、安装Docker环境

因为我们稍后要安装的coco-annotator运行在Docker环境当中,所以我们首先在系统中配置Docker。关于Docker的安装,大家可以在网路上找到很多相关的资讯,在这里我就不再赘述。

ubuntu@ai:/u01$ cd /u01ubuntu@ai:/u01$ sudo curl -L "https://github.com/docker/compose/releases/download/1.28.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current                                 Dload  Upload   Total   Spent    Left  Speed100   651  100   651    0     0   5918      0 --:--:-- --:--:-- --:--:--  5918100 12.2M  100 12.2M    0     0  47.0M      0 --:--:-- --:--:-- --:--:-- 47.0Mubuntu@ai:/u01$ sudo chmod +x /usr/local/bin/docker-composeubuntu@ai:/u01$ sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-composeubuntu@ai:/u01$ docker-compose --versiondocker-compose version 1.28.0, build d02a7b1aubuntu@ai:/u01$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -ubuntu@ai:/u01$ sudo apt-get install docker-ce docker-ce-cli containerd.io

安装之后,可以使用hello-world进行测试。

OCI数据科学工作坊:机器视觉OCI数据科学工作坊:机器视觉

4、安装并启动Coco-annotator

Coco-annotator是一个基于Web的非常简单高效的标注工具,与传统的手工对图像进行标注,效率上有了极大的提升,并且简单易用,被广大机器学习从业人员和爱好者广泛应用。

项目地址为https://github.com/jsbroks/coco-annotator

OCI数据科学工作坊:机器视觉

OCI数据科学工作坊:机器视觉


Coco-annotator的安装非常简单,只要将它从GitHub下载下来,并启动它即可。

ubuntu@ai:/u01$ cd /u01ubuntu@ai:/u01$ git clone https://github.com/jsbroks/coco-annotatorubuntu@ai:/u01$ cd coco-annotatorubuntu@ai:/u01/coco-annotator$ sudo docker-compose up


启动之后,当前窗口不要关闭,我们会看到如下提示:

OCI数据科学工作坊:机器视觉

接下来到浏览器中访问该机器的5000端口即可使用。在第一次登陆时,简单注册即可。

OCI数据科学工作坊:机器视觉

提交信息之后,我们将看到如下界面。

OCI数据科学工作坊:机器视觉

在今天的实验中,我们创建两组图像,一组是由20张图片构成的训练图片,这20张图片中,每张图片都包含苹果和橙子,另一组是由3张图片构成的验证图片,这些图片中也包含苹果和橙子。我们都通过下面的方式对这些图片中的苹果和橙子进行标注。网路上有很多关于Coco-annotator的教学视频,可供参考。OCI数据科学工作坊:机器视觉

OCI数据科学工作坊:机器视觉然后将标记好的结果导出json文件,在后面的训练过程中,我们会使用到这些个文件。

OCI数据科学工作坊:机器视觉文件导出后,我们要记录他们的文件名和位置。

ubuntu@ai:/u01/coco-annotator/datasets/frt001$ cd .exports/ubuntu@ai:/u01/coco-annotator/datasets/frt001/.exports$ pwd/u01/coco-annotator/datasets/frt001/.exportsubuntu@ai:/u01/coco-annotator/datasets/frt001/.exports$ lscoco-1611827762.5512006.json

我们稍后还会使用到cocoapi,所以通过如下代码进行安装:

ubuntu@ai:/u01$ git clone https://github.com/philferriere/cocoapi.gitubuntu@ai:/u01/cocoapi/PythonAPI$ python3 setup.py install --user

OCI数据科学工作坊:机器视觉

5、安装Detectron2OCI数据科学工作坊:机器视觉

Detectron2  是 Facebook AI Research 推出的CV库,它实现了最新的目标检测算法,是对先前版本 Detectron  的完全重写,是目标检测三大最重要开源项目之一,也是我经常使用的CV库。它实现了10多篇计算机视觉最新的成果,它的GitHub地址为https://github.com/facebookresearch/detectron2

关于Detectron2的安装,大家可以参考官方文档https://github.com/facebookresearch/detectron2/blob/master/INSTALL.md

ubuntu@ai:~$ python3  -m pip install detectron2 -f   https://dl.fbaipublicfiles.com/detectron2/wheels/cu110/torch1.7/index.html

OCI数据科学工作坊:机器视觉6、模型训练

我们通过执行python程序来训练模型,文件已经连同训练好的模型一起打包,您可以点击文末链接进行下载。

ubuntu@ai:/u01/coco-annotator/datasets/frt001$ python3 training.py

在程序当中,我们进行10万次的迭代。如果使用OCI上的GPU3.1环境,大概需要4个小时。使用8  Cores  128GB的计算资源,需要7天左右的时间。如果您没有GPU资源,或者不想等待那么长的时间,可以使用我们为大家训练好的模型文件。在模型训练期间,您可以查看GPU的使用情况。

OCI数据科学工作坊:机器视觉程序执行完毕将返回如下结果:

OCI数据科学工作坊:机器视觉OCI数据科学工作坊:机器视觉7、验证训练结果

我们第4步对两个图片集使用Coco-annotator进行了标注,现在我们使用刚才训练好的模型,对测试集进行测试,看看我们的模型,是否可以在图片中找到苹果和橙子,该python程序,也一同在我们为大家提供的打包程序当中。

ubuntu@ai:/u01/coco-annotator/datasets/frt001$ python3 validation.py


下面是等待被检测的原图OCI数据科学工作坊:机器视觉

下面的图是程序验证之后的结果。因为我们选取的图片没有其他物体的干扰,所以大家看到了100%和99%,在一般场景下,结果不会这么理想。OCI数据科学工作坊:机器视觉

OCI数据科学工作坊:机器视觉欢迎您参加Oracle数据科学线上实验室

如果您对Oracle数据科学感兴趣,我们诚挚邀请您参加2021年2月2日北京时间11:00开始的Oracle数据科学线上实验室研讨会,在本次线上活动中,我们将为您介绍Oracle在数据科学方面的应用,并在后面提供实验环节。我们的APAC数据科学专家Aaron  Zhong先生将在Track2的实验环节当中与大家互动,Dr.Henry将负责Track1的在线答疑。可以通过点击阅读原文进行在线注册,期待您的关注,谢谢。

OCI数据科学工作坊:机器视觉

在此特别感谢Justin  Blau先生提供的大力支持与帮助,本文是基于Justin Blau先生的在线实验编辑而成(Much appreciated the  support of  Mr. Justin Blau. This article is based on his online lab. )


模型及Python程序下载,关注公众号并回复:机器视觉

编辑:殷海英


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


下一篇:【leetcode】300.Longest Increasing Subsequence