图像识别模型训练开发平台一键部署方法
2021-07-22高宏旭曹大军杨倪智
高宏旭 曹大军 杨倪智
1.中邮建技术有限公司;2.南京金陵文化传播有限公司;3.中通服咨询设计研究院有限公司
0 引言
随着科学技术的发展,社会分工协作的必要性越来越明显,专业的人做专业的事才能将事情做精做深,科学研究同样如此。从整体架构层面,将整个科研工作分解成一个个相对独立的任务包,由不同人员完成不同的任务包,实现任务模块的并行处理,加速任务进度同时提高任务完成质量,已经成为一种共识。
基础开发环境是支撑科研任务分工协作的基石,部署开发平台通常是研究工作的第一步,开展基于人工智能的图像识别研究亦不例外。为了避免研究人员重复开发具有相同功能的代码,研究开始前需要整合很多基础开发包以部署形成图像识别开发环境平台。这些外部第三方程序包在引入开发平台的过程中对研究人员带来了极大挑战:一方面,需要丰富的操作系统及网络配置相关知识;另一方面,具备较大的学科背景跨度。因此,搭建开发平台往往会浪费研究人员大量的宝贵时间。为降低图像识别开发平台的部署难度,节省开发时间,研究面向人工智能的图像识别开发平台的一键部署方法成为亟待解决的难题。
本文结合工作实际提出了一种图像识别模型训练开发平台一键部署方案,其创新性包括两个方面:一是设计了面向人工智能应用的通用开发平台部署框架;二是引入平台搭建依赖清单并应用批处理脚本解决各类平台关联工具包的快速、高效、透明安装,实现图像处理开发训练平台的快速搭建。本文所提出的开发平台构建方案大大降低了图像识别乃至人工智能项目的研发准入门槛,提高了项目研发效率,缩短了项目研发周期,加快了研发成果的产出。
1 图像识别模型训练开发平台的部署框架设计
搭建图像识别模型训练开发平台的首要步骤是分析平台需求并设计平台框架,其中固定操作系统类型及版本是核心工作之一。事实上,对不同的操作系统,模型训练开发平台相关依赖工具包的适应性存在细微的差别,这种差别会直接影响平台功能和实验结果,因此固定操作系统版本及引入第三方包的版本,是极为重要和必要的,需要慎重选择。
操作系统确定后,安装好对应Python包管理器及环境管理器Anaconda,后续所有批处理操作都基于该版本Anaconda的conda命令进行管理,或者基于pip进行相关的包管理。这两种平台操作管理方案的区别是:前者安装和管理来自Anaconda的工具包,这些工具包可能包含任何语言编写的软件包;后者虽然为官方认可的安装包管理器pip,但是只能安装基于python语言的软件包。此外,在创建虚拟机能力及安装依赖项检查的能力上,conda也优于pip,因此建议使用conda作为包管理器。
确定好平台操作系统并选择好平台软件包管理工具后,即可按照图1给出的图像识别模型训练开发平台部署框架图,部署流程构建图像识别模型的训练开发平台框架,整体思想为确定在哪种操作系统上进行安装,而后根据操作系统不同下载对应的Anaconda版本,安装“包管理器及环境管理器Anaconda”,根据事先准备好的安装列表,对要安装的内容进行批处理脚本编写,编写完毕后,后续就可以基于该批处理脚本进行自动化安装,新环境搭建时,运行该脚本,脚本设置断点执行的能力,当在某一环节安装出错,抛出对应的错误提示信息,用户解决后,继续运行该批处理程序,程序可以从断点后继续执行,直至安装完毕。如图1所示。
图1 图像识别模型训练开发平台部署框架
2 开发平台部署工具准备
在图像识别模型训练开发平台搭建的过程中,涉及到种类繁多、学科跨度大的海量工具包的安装,收集整理平台搭建依赖清单,即准备好平台部署所需的各种工具,是极具挑战的难题之一,这让初级研发人员望而生畏。
一种有效的解决方法是对平台搭建依赖的工具包进行细致地分类整理并形成清单,合理定义编排工具包的安装顺序,最后通过设计批处理脚本来解决工具包的安装难题。通常,Linux操作系统下采用Shell命令编排安装工具包的批处理脚本,而Windows操作系统下采用BAT命令编排安装工具包的批处理脚本。
就图像识别研究而言,其模型训练开发平台依赖的工具包可以分为如下几类:开发语言相关、代码管理相关、配置文件相关、算法相关、图像处理相关、机器学习相关、可视化工具、图形处理器(Graphic Processing Unit,GPU)的应用程序编程接口(Application Programming Interface,API)管理工具等。工具包的详细分类见图2图像识别训练开发平台搭建依赖工具包分类清单所示。
需要说明的是,图2中特别引入了“创建虚拟环境”的分支以支持平台功能的扩展,例如:当人工智能应用项目研发同时需要图像识别模型和语音识别模型两个训练开发平台时,可以将两个平台各自独立依赖的程序包分别安装在两个虚拟环境上形成两个独立的开发平台,从而避免不同平台间的功能冲突。
图2 图像识别训练开发平台搭建依赖工具包分类清单
3 开发平台部署的代码实现
基于上文提出的图像识别模型训练开发平台部署框架,本节通过软件编程导入各类工具包并构建平台的功能模块,进而实现开发平台的具体部署。
实现图像识别模型训练开发平台部署的关键是编写安装工具包的批处理脚本。本文基于Linux操作系统的shell命令编写平台工具包安装的批处理脚本文件并命名为setup.sh。运行Linux命令source setup.sh,根据提示键入相应数字,即可完成所需工具包的安装与调用,实现平台开发环境的一键部署。
平台工具包安装批处理脚本伪代码如下:
while true
do
menu
choice
case $select in
1)
Creat_virtual
Active_virtual
…
Setup_face_recognition
Setup_pandas;;
2)
Active_virtual
…
Setup_face_recognition
Setup_pandas;;
…
23)
Setup_face_recognition
Setup_pandas;;
24)
Setup_pandas;;
100)
exit;;
*)
echo “choice error”
esac
done
考虑到工具包在安装过程中可能出错而影响开发平台的功能部署和正常使用,因此需对安装过程进行跟踪。当出现安装故障时,脚本应抓取故障信息显示给用户,用户根据提示信息解决安装故障,然后继续执行setup.sh脚本完成工具包的安装和平台环境部署。
安装故障信息抓取功能伪代码如下:
Setup_Cython() {
conda install Cython
if [ $? -eq 0 ]; then
echo “安装完成Cython”
else
echo $?
exit
fi
}
当安装程序成功执行完毕,图像识别模型训练开发平台即构建部署完成,基于该平台即可开展不同的图像识别项目研发。
值得说明的是,上述图像识别训练开发平台无论是架构还是工具包安装批处理脚本文件,均与工具包的具体内容弱相关,因此可以通过增加依赖工具包方便地扩展平台功能,这意味着平台具有良好的可扩展性。此外,通过整体替换平台依赖工具包清单并基于上述批处理脚本文件进行安装部署,原来的图像识别训练开发平台随之变为新的功能平台,这意味着平台具有良好的移植性。
4 结束语
本文探讨了图像识别模型训练开发平台的快速部署方法,设计了一种通用开发平台部署框架,给出了平台操作系统选择建议,提出了基于分类清单的平台依赖工具包的批处理安装策略,并通过编写脚本文件实现了平台的快速构建。所提出的图像识别模型训练开发平台一键部署方案有效降低了智能图像识别研究的入门门槛,将研究人员从复杂的前置工作中解放出来,专注于算法的实现与调优,大大缩短了项目研发周期;同时使研发管理规范化,根据项目进展情况酌情维护平台脚本并定期发布新版本,提高了项目开发效率。该方案亦具有可扩展性和可移植性,能够灵活应用于语音识别等其他人工智能研究领域。