高宏旭 曹大軍 楊倪智
1.中郵建技術有限公司;2.南京金陵文化傳播有限公司;3.中通服咨詢設計研究院有限公司
隨著科學技術的發展,社會分工協作的必要性越來越明顯,專業的人做專業的事才能將事情做精做深,科學研究同樣如此。從整體架構層面,將整個科研工作分解成一個個相對獨立的任務包,由不同人員完成不同的任務包,實現任務模塊的并行處理,加速任務進度同時提高任務完成質量,已經成為一種共識。
基礎開發環境是支撐科研任務分工協作的基石,部署開發平臺通常是研究工作的第一步,開展基于人工智能的圖像識別研究亦不例外。為了避免研究人員重復開發具有相同功能的代碼,研究開始前需要整合很多基礎開發包以部署形成圖像識別開發環境平臺。這些外部第三方程序包在引入開發平臺的過程中對研究人員帶來了極大挑戰:一方面,需要豐富的操作系統及網絡配置相關知識;另一方面,具備較大的學科背景跨度。因此,搭建開發平臺往往會浪費研究人員大量的寶貴時間。為降低圖像識別開發平臺的部署難度,節省開發時間,研究面向人工智能的圖像識別開發平臺的一鍵部署方法成為亟待解決的難題。
本文結合工作實際提出了一種圖像識別模型訓練開發平臺一鍵部署方案,其創新性包括兩個方面:一是設計了面向人工智能應用的通用開發平臺部署框架;二是引入平臺搭建依賴清單并應用批處理腳本解決各類平臺關聯工具包的快速、高效、透明安裝,實現圖像處理開發訓練平臺的快速搭建。本文所提出的開發平臺構建方案大大降低了圖像識別乃至人工智能項目的研發準入門檻,提高了項目研發效率,縮短了項目研發周期,加快了研發成果的產出。
搭建圖像識別模型訓練開發平臺的首要步驟是分析平臺需求并設計平臺框架,其中固定操作系統類型及版本是核心工作之一。事實上,對不同的操作系統,模型訓練開發平臺相關依賴工具包的適應性存在細微的差別,這種差別會直接影響平臺功能和實驗結果,因此固定操作系統版本及引入第三方包的版本,是極為重要和必要的,需要慎重選擇。
操作系統確定后,安裝好對應Python包管理器及環境管理器Anaconda,后續所有批處理操作都基于該版本Anaconda的conda命令進行管理,或者基于pip進行相關的包管理。這兩種平臺操作管理方案的區別是:前者安裝和管理來自Anaconda的工具包,這些工具包可能包含任何語言編寫的軟件包;后者雖然為官方認可的安裝包管理器pip,但是只能安裝基于python語言的軟件包。此外,在創建虛擬機能力及安裝依賴項檢查的能力上,conda也優于pip,因此建議使用conda作為包管理器。
確定好平臺操作系統并選擇好平臺軟件包管理工具后,即可按照圖1給出的圖像識別模型訓練開發平臺部署框架圖,部署流程構建圖像識別模型的訓練開發平臺框架,整體思想為確定在哪種操作系統上進行安裝,而后根據操作系統不同下載對應的Anaconda版本,安裝“包管理器及環境管理器Anaconda”,根據事先準備好的安裝列表,對要安裝的內容進行批處理腳本編寫,編寫完畢后,后續就可以基于該批處理腳本進行自動化安裝,新環境搭建時,運行該腳本,腳本設置斷點執行的能力,當在某一環節安裝出錯,拋出對應的錯誤提示信息,用戶解決后,繼續運行該批處理程序,程序可以從斷點后繼續執行,直至安裝完畢。如圖1所示。
圖1 圖像識別模型訓練開發平臺部署框架
在圖像識別模型訓練開發平臺搭建的過程中,涉及到種類繁多、學科跨度大的海量工具包的安裝,收集整理平臺搭建依賴清單,即準備好平臺部署所需的各種工具,是極具挑戰的難題之一,這讓初級研發人員望而生畏。
一種有效的解決方法是對平臺搭建依賴的工具包進行細致地分類整理并形成清單,合理定義編排工具包的安裝順序,最后通過設計批處理腳本來解決工具包的安裝難題。通常,Linux操作系統下采用Shell命令編排安裝工具包的批處理腳本,而Windows操作系統下采用BAT命令編排安裝工具包的批處理腳本。
就圖像識別研究而言,其模型訓練開發平臺依賴的工具包可以分為如下幾類:開發語言相關、代碼管理相關、配置文件相關、算法相關、圖像處理相關、機器學習相關、可視化工具、圖形處理器(Graphic Processing Unit,GPU)的應用程序編程接口(Application Programming Interface,API)管理工具等。工具包的詳細分類見圖2圖像識別訓練開發平臺搭建依賴工具包分類清單所示。
需要說明的是,圖2中特別引入了“創建虛擬環境”的分支以支持平臺功能的擴展,例如:當人工智能應用項目研發同時需要圖像識別模型和語音識別模型兩個訓練開發平臺時,可以將兩個平臺各自獨立依賴的程序包分別安裝在兩個虛擬環境上形成兩個獨立的開發平臺,從而避免不同平臺間的功能沖突。
圖2 圖像識別訓練開發平臺搭建依賴工具包分類清單
基于上文提出的圖像識別模型訓練開發平臺部署框架,本節通過軟件編程導入各類工具包并構建平臺的功能模塊,進而實現開發平臺的具體部署。
實現圖像識別模型訓練開發平臺部署的關鍵是編寫安裝工具包的批處理腳本。本文基于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
}
當安裝程序成功執行完畢,圖像識別模型訓練開發平臺即構建部署完成,基于該平臺即可開展不同的圖像識別項目研發。
值得說明的是,上述圖像識別訓練開發平臺無論是架構還是工具包安裝批處理腳本文件,均與工具包的具體內容弱相關,因此可以通過增加依賴工具包方便地擴展平臺功能,這意味著平臺具有良好的可擴展性。此外,通過整體替換平臺依賴工具包清單并基于上述批處理腳本文件進行安裝部署,原來的圖像識別訓練開發平臺隨之變為新的功能平臺,這意味著平臺具有良好的移植性。
本文探討了圖像識別模型訓練開發平臺的快速部署方法,設計了一種通用開發平臺部署框架,給出了平臺操作系統選擇建議,提出了基于分類清單的平臺依賴工具包的批處理安裝策略,并通過編寫腳本文件實現了平臺的快速構建。所提出的圖像識別模型訓練開發平臺一鍵部署方案有效降低了智能圖像識別研究的入門門檻,將研究人員從復雜的前置工作中解放出來,專注于算法的實現與調優,大大縮短了項目研發周期;同時使研發管理規范化,根據項目進展情況酌情維護平臺腳本并定期發布新版本,提高了項目開發效率。該方案亦具有可擴展性和可移植性,能夠靈活應用于語音識別等其他人工智能研究領域。