劉小鋒 任弘毅
(東北大學(xué) 計算機科學(xué)與工程學(xué)院 國家級計算機實驗教學(xué)示范中心 遼寧省沈陽市 110819)
生活中有一類任務(wù),比如語音識別和圖像識別,這類任務(wù)對人來說很容易執(zhí)行,但是由于難以進行詳細的描述,所以難以直接用早期人工智能的方法來實現(xiàn),這時就需要引入深度學(xué)習(xí)技術(shù)。2006年,Hinton 提出了深度學(xué)習(xí)的概念[1],該方案可以讓計算機從經(jīng)驗中學(xué)習(xí),并根據(jù)層次化的概念體系來理解世界,而每個概念則通過與某些相對簡單的概念之間的關(guān)系來定義。讓計算機從經(jīng)驗獲取知識,可以避免由人類來給計算機形式化地指定它需要的所有知識。層次化的概念讓計算機構(gòu)建較簡單的概念來學(xué)習(xí)復(fù)雜概念。如果繪制出表示這些概念如何建立在彼此之上的圖,我們將得到一張層次深很多的圖,這種方法稱為深度學(xué)習(xí)。由于傳統(tǒng)的考勤方式操作復(fù)雜,安全性差,逐漸無法適應(yīng)現(xiàn)代社會的需要,使用深度學(xué)習(xí)的方法可以較好地解決這個問題,因此,要使用基于深度學(xué)習(xí)的方法實現(xiàn)流水線考勤系統(tǒng)。鄧熠等[2]人以樹莓派和Intel Movidius 神經(jīng)棒NCS 為硬件平臺設(shè)計了基于深度學(xué)習(xí)的考勤系統(tǒng),避免了傳統(tǒng)考勤機需要近距離刷臉的弊端;李雄等[3]人將VGG16 深度神經(jīng)網(wǎng)絡(luò)提取的Bottleneck 特征輸入至全連接網(wǎng)絡(luò)用以人臉分類;劉杰等人[4]利用深度學(xué)習(xí)技術(shù)開發(fā)了基于人臉識別的會議考勤系統(tǒng);陳超等人[5]基于深度學(xué)習(xí),在樹莓派上實現(xiàn)人臉識別和表情識別。本文利用經(jīng)典的AlexNet 網(wǎng)絡(luò)模型[6]進行訓(xùn)練,這里重點闡述環(huán)境配置和訓(xùn)練結(jié)果,為初學(xué)者提供技術(shù)幫助。
系統(tǒng)總體設(shè)計目標:
(1)采用兩個差別較大的區(qū)域來模擬流水線的兩個生產(chǎn)車間。
(2)在規(guī)定的工作時間內(nèi),工作人員只能出現(xiàn)在規(guī)定的工作區(qū)域,如果工作人員未在規(guī)定的工作時間出現(xiàn)在指定的工作區(qū)域,那么在生成的結(jié)果文件中記錄離崗,否則記錄在崗。
(3)通過調(diào)取錄像來分析工作人員是否出勤。在生成結(jié)果文件前,需要將視頻截取成圖片集,對圖片組進行深度學(xué)習(xí)后,根據(jù)深度學(xué)習(xí)結(jié)果來判斷是否有人在崗。
從NVIDIA 官網(wǎng)下載 CUDA[7]及相配套的 cuDNN,舊版CUDA 與新顯卡不兼容,CUDA9.0 版本由于 10 系列顯卡采用了全新的帕斯卡架構(gòu),我們測試所用電腦為 9 系顯卡,且VS 版本為2013 版,故選用了主流的CUDA8.0,以及相對應(yīng)的 cuDNN5.1。
打開CUDA 安裝文件,解壓安裝,選擇精簡安裝并選擇所有的驅(qū)動組件。之后驗證CUDA 是否安裝成功,打開cmd,輸入nvcc -V,已安裝 8.0 版本,說明CUDA 安裝成功。
安裝且配置驗證好 CUDA 以后,安裝 CUDNN,把解壓后的文件復(fù)制CUDA 文件夾中驗證 CUDNN 安裝成功。CUDNN 安裝成功后,打開 VS2013,新建項目里面輸入如下所示的代碼:
CUDNN 安裝成功后,需執(zhí)行以下四步操作,以確定 CUDNN正確安裝。 (1)在項目屬性/VC++ Directories/Include Directories 中添加入 include 的路徑。 (2)在項目屬性/VC++ Directories/Libary Directories 中添加入 libx64 路徑。 (3)在項目屬性/Linker/Input/Additional Dependencies 中添加入 cudnn.lib。 (4) 在項目屬性/CUDA C|C++ / Device /Code Generation 中,將 sm_20 改為 sm_30。運行后得到【CUDNN_STATUS_SUCCESS】結(jié)果,說明 CUDNN已經(jīng)正確安裝。
三是實質(zhì)與形式標準綜合說,即主張從實質(zhì)與形式相結(jié)合的角度來劃分犯罪的輕重等級。例如,有論者認為,所謂輕罪,是指行為已構(gòu)成犯罪但社會危害性較小,行為人主觀惡性不大或者其智力、身體有缺陷或者其行為可能判處3年有期徒刑以下刑罰的犯罪;除此之外,則為重罪[8]。這種對輕罪與重罪的劃分,實際上主要堅持的仍是實質(zhì)標準,同時也兼顧到了形式標準。
(1)下載代碼,在 GitHub 上找到源碼壓縮包 https://github.com/Microsoft/caffe,得到文件“caffe-master.zip”,解壓。
(2)打開 caffe-master 文件夾,之后看到一個 windows 文件夾,然后繼續(xù)打開, windows 文件夾,看到里面一個 CommonSettings.props.example 文件,復(fù)制出來一 份,并改名字為 CommonSettings.props
(3)用VS2013 打開Caffe.sln,打開 CommenSetting.probs.在cudapath 那里把 計算機學(xué)院通信工程專業(yè)生產(chǎn)實習(xí)報告 -20- CUDA(含有已經(jīng)放進去的 CUDNN)的目錄路徑放到其中。如圖 1所示。
圖1:Caffe.sln 內(nèi)容
(4)設(shè)置好之后開始編譯 libcaffe,編譯成功后在 caffe-master文件夾下面就應(yīng) 該出現(xiàn)一個名叫 Build 的文件夾,以后編譯的成功和運行需要的文件都會存放在 buildX64Release 下面。
(5)其他組件在后面生成模型的需要的時候隨時可以編譯。
(1)Caffe[8]需要先把數(shù)據(jù)轉(zhuǎn)化為 lmdb 或 leveldb 格式進行讀取。lmdb 是 lightning(閃電的) memory-mapped database manager 的縮寫,能夠把原始數(shù)據(jù)通過 更為高效的存儲方式存儲,從而加快讀取和訓(xùn)練速度(lmdb 比 leveldb 更快,本次 我們使用 lmdb)。 實現(xiàn)這個轉(zhuǎn)化的代碼是examplesmnist 的 convert_mnist_data.cpp,其運行腳本 create_mnist.sh 是 linux 下的代碼。
(2) 用VS 打開examplesmnist 目錄下的 lenet_solver.prototxt,因為我們最終訓(xùn) 練模型用 gpu 生成,所以最后一行用gpu。
圖2:lenet_train_test.prototxt 文件中內(nèi)
(4)編寫bat 腳本進行正式訓(xùn)練,回到 caffe-windows 的根目錄下新建一個 bat 并寫入以下內(nèi)容即可開始訓(xùn)練。
(5)當(dāng)?shù)螖?shù)達到 lenet_solver.prototxt 定義的 max_iter 時,就可以認為訓(xùn)練 結(jié)束了。并且最終會在目錄examplesmnist 下產(chǎn)生訓(xùn)練出的模型(文件后綴名為 caffemodel 和 solverst)。
(1)錄制兩個視頻,兩個視頻用來模擬工廠流水線兩個不同的區(qū)域。由于系統(tǒng)設(shè)計時間和條件有限,這里選擇在寢室內(nèi)錄制,以寢室內(nèi)兩個差別較大的區(qū)域作為工廠里面兩個不同的區(qū)域,錄制好的兩個視頻文件,并將視頻內(nèi)進行截圖。
(2)將兩個視頻流分割成兩個圖片集,這里利用 c++語言調(diào)用 OpenCV 來實現(xiàn)視頻分割。
(3)圖片分割完成后,需要用 bat 批處理文件調(diào)用兩個測試文件分別對兩組圖 片進行測試,測試文件里的內(nèi)容。
(4)為了使生成的測試結(jié)果輸出到 txt 文本中,又寫了兩個bat 批處理文件,只需運行這兩個文件便可得到測試結(jié)果。在 txt 文本當(dāng)中輸出的結(jié)果如圖 3所示。
圖3:txt 考勤結(jié)果文本
(1)在兩段視頻錄制過程中,只要出現(xiàn)判決為無人的情況就得出缺勤的結(jié)果,并將結(jié)果輸出。
(2)由于將視頻文件分割成圖片過程中,人物的快速行動會使截圖不清晰,從而會使得一段時間內(nèi)的圖片識別出現(xiàn)誤差,因此規(guī)定少于連續(xù)3 張圖片判決為同一結(jié)果的為無效判決,在輸出考勤結(jié)果時對這種情況不予考慮。
(3)由于本實習(xí)是模擬工廠流水線環(huán)境,所以可以根據(jù)實際需要將系統(tǒng)改為實時系統(tǒng),當(dāng)工作人員在規(guī)定時間內(nèi)超出自己的工作區(qū)域就向工廠相關(guān)負責(zé)人員發(fā) 出一條警報信息,以便負責(zé)人員能夠?qū)@類情況進行即時處理。
(4)考慮到交接班的情況,規(guī)定在交接班的某一段時間內(nèi)無論做出什么樣的判決結(jié)果都不記為缺勤。
隨著計算機技術(shù)及人工智能的發(fā)展,深度學(xué)習(xí)技術(shù)應(yīng)用在各個領(lǐng)域。本文將流水線考勤系統(tǒng)存在存在的問題,利用深度學(xué)習(xí)技術(shù)進行彌補,有效的提高了檢測效果。使學(xué)生通過典型應(yīng)用案例,理解深度學(xué)習(xí)模型的訓(xùn)練過程,掌握系統(tǒng)的設(shè)計方法。系統(tǒng)初步完成了考勤系統(tǒng)的功能,今后還在管理界面制作、后臺數(shù)據(jù)庫管理等方面進行完善,通過系統(tǒng)的設(shè)計和完善對以后的工作和學(xué)習(xí)有很大幫助。