王紅芳,何 昕,張 妮,宣靜雯
(1.西安工程大學(xué) 圖書館,陜西 西安 710048;2.西安工程大學(xué) 電子信息學(xué)院,陜西 西安 710048)
隨著現(xiàn)代社會(huì)文化的快速發(fā)展以及民眾對(duì)知識(shí)需求的增強(qiáng),新時(shí)代圖書館的職能早已從傳統(tǒng)的收集、存儲(chǔ)、借閱轉(zhuǎn)變?yōu)榱烁颖憷c現(xiàn)代化的管理與服務(wù)[1]。在大型圖書館多采用開(kāi)架閱覽的使用方式的前提下,大量圖書在被借閱后會(huì)因讀者還書操作不規(guī)范等原因,普遍存在錯(cuò)放現(xiàn)象[2]。
目前,在大多數(shù)圖書館主要采用人工巡檢方式完成圖書上下架、圖書錯(cuò)序整理等工作[3],該方式工作量大,效率低,是一項(xiàng)耗時(shí)、費(fèi)力、易錯(cuò)的工作,導(dǎo)致人力資源的大量浪費(fèi),使圖書整理退化成一種形式化的工作[4]。
圖書館巡架機(jī)器人是針對(duì)人工巡檢方式存在的不足,使用巡檢機(jī)器人取代人工方式實(shí)現(xiàn)對(duì)圖書館在架圖書進(jìn)行智能巡檢[5]。通過(guò)建設(shè)由巡檢機(jī)器人和協(xié)同管控平臺(tái)組成的圖書館智能巡檢機(jī)器人系統(tǒng)[6],可以使巡檢機(jī)器人按照預(yù)先設(shè)定的巡檢路線自動(dòng)對(duì)圖書館在架圖書進(jìn)行巡檢,避免人工方式導(dǎo)致的漏檢、記錄錯(cuò)誤等現(xiàn)象。同時(shí),巡檢機(jī)器人后臺(tái)數(shù)據(jù)處理中心能將巡視作業(yè)采集到的現(xiàn)場(chǎng)數(shù)據(jù)進(jìn)行記錄、分析、整理和可視化,提高圖書館數(shù)字化和智能化水平。因此,借助圖書館巡架機(jī)器人自動(dòng)對(duì)圖書館在架圖書的錯(cuò)序情況進(jìn)行巡檢,不僅能有效克服和彌補(bǔ)人工巡檢存在的缺陷和不足,而且還能提高巡檢的靈活性、智能性,減輕了圖書館管理人員的工作量,對(duì)構(gòu)建智能化圖書館具有一定的實(shí)際應(yīng)用價(jià)值[7]。
本文基于深度學(xué)習(xí)的Yolov3tiny圖書錯(cuò)序檢測(cè)算法[8],利用Pycharm-Python集成開(kāi)發(fā)工具和Pytorch深度學(xué)習(xí)框架、MySQL數(shù)據(jù)庫(kù)和移動(dòng)機(jī)器人搭建圖書巡檢智能系統(tǒng)[9]。該系統(tǒng)的主要功能有:1)實(shí)現(xiàn)圖書館在架圖書進(jìn)行智能化巡檢;2)識(shí)別錯(cuò)序圖書并將巡檢結(jié)果存儲(chǔ)到數(shù)據(jù)庫(kù);3)實(shí)現(xiàn)圖書館巡架機(jī)器人獲取巡檢數(shù)據(jù)的管理。
圖書館巡架機(jī)器人主要由軌道引導(dǎo)系統(tǒng)、圖書錯(cuò)序檢測(cè)算法,數(shù)據(jù)庫(kù)系統(tǒng)和客戶端四大部構(gòu)成,如圖1所示。
圖1 圖書館巡架機(jī)器人系統(tǒng)組成
軌道引導(dǎo)系統(tǒng)規(guī)定了移動(dòng)機(jī)器人的運(yùn)行路線,使其能高效遍歷圖書館內(nèi)書架圖書;圖書錯(cuò)序檢測(cè)算法能將機(jī)器人拍攝到的書籍圖像進(jìn)行處理并檢測(cè)索書號(hào),將檢測(cè)結(jié)果和相關(guān)數(shù)據(jù)送入數(shù)據(jù)庫(kù)中進(jìn)行儲(chǔ)存;數(shù)據(jù)庫(kù)系統(tǒng)由MySQL搭建而成,并使用了PyQT5設(shè)計(jì)了圖形交互頁(yè)面,客戶端由MySQL-client搭建,能夠?qū)崿F(xiàn)對(duì)數(shù)據(jù)庫(kù)中數(shù)據(jù)的查詢和操作。
軌道引導(dǎo)系統(tǒng)由移動(dòng)機(jī)器人上搭載的上位機(jī)(TX2圖像處理開(kāi)發(fā)板)與STM32以及一個(gè)8路磁導(dǎo)航傳感器共同構(gòu)成,如圖2所示。
圖2 移動(dòng)機(jī)器人軌道引導(dǎo)系統(tǒng)
移動(dòng)平臺(tái)根據(jù)上位機(jī)(TX2圖像處理開(kāi)發(fā)板)的指令運(yùn)動(dòng)到各個(gè)書架的附近,實(shí)現(xiàn)“巡”的功能。其底層驅(qū)動(dòng)過(guò)程如下:
移動(dòng)平臺(tái)根據(jù)TX2上位機(jī)發(fā)出的指令運(yùn)動(dòng)到指定書架附近,實(shí)現(xiàn)"巡"的功能,其底層驅(qū)動(dòng)過(guò)程如下:
1)TX2上位機(jī)通過(guò)串口通信發(fā)送控制信號(hào)給STM32下位機(jī),請(qǐng)求下位機(jī)向某一方向運(yùn)動(dòng);STM32收到請(qǐng)求信號(hào)后輸出相應(yīng)的電機(jī)控制信號(hào);由于STM32輸出的信號(hào)較弱,不足以驅(qū)動(dòng)電機(jī)運(yùn)動(dòng),需要通過(guò)電機(jī)驅(qū)動(dòng)模塊將STM32輸出的電機(jī)控制信號(hào)轉(zhuǎn)換成大功率信號(hào)。當(dāng)大功率信號(hào)傳遞到電機(jī)上后,電機(jī)將以相應(yīng)的速度和方向旋轉(zhuǎn),從而改變移動(dòng)機(jī)器人的運(yùn)動(dòng)狀態(tài)。
2)光電編碼器與電機(jī)同軸連接,該傳感器可以測(cè)量電機(jī)以何種轉(zhuǎn)速轉(zhuǎn)了多少圈,并將測(cè)量到的數(shù)據(jù)反饋給控制芯片STM32,以實(shí)現(xiàn)對(duì)電機(jī)的精準(zhǔn)控制。
3)當(dāng)移動(dòng)平臺(tái)的運(yùn)動(dòng)狀態(tài)發(fā)生改變時(shí),將會(huì)改變磁導(dǎo)航傳感器和磁條軌道的相對(duì)位置,引起磁導(dǎo)航傳感器測(cè)量信號(hào)發(fā)生變化,TX2上位機(jī)將根據(jù)磁導(dǎo)航傳感器返回的信號(hào)發(fā)送下一次控制信號(hào)。
由于移動(dòng)平臺(tái)上安裝有姿態(tài)傳感器,該傳感器可以將移動(dòng)平臺(tái)當(dāng)前的姿態(tài)(如小車的角度)反饋給STM32,使其對(duì)移動(dòng)平臺(tái)進(jìn)行更加穩(wěn)定的控制。
當(dāng)機(jī)器人運(yùn)行至?xí)芨浇?,?duì)書架上各層圖書進(jìn)行檢測(cè),實(shí)現(xiàn)“檢”的功能。機(jī)器人到達(dá)采集點(diǎn)后自動(dòng)拍攝書架上擺放的圖書圖像,并將其輸入Yolov3tiny檢測(cè)網(wǎng)絡(luò)中檢測(cè)圖書書脊上的索書號(hào)區(qū)域,對(duì)將分割出得到的索書號(hào)區(qū)域圖像送入字符識(shí)別網(wǎng)絡(luò),獲得圖書的索書號(hào),并與正確的索書號(hào)序列進(jìn)行比對(duì),由此判斷當(dāng)前書架上圖書的擺放狀態(tài)[10]。在圖書錯(cuò)序檢測(cè)過(guò)程中將拍攝的圖書圖像與檢測(cè)結(jié)果均存儲(chǔ)到后臺(tái)數(shù)據(jù)庫(kù)中,并將檢測(cè)結(jié)果顯示在機(jī)器人液晶顯示器上。整個(gè)圖書錯(cuò)序狀態(tài)識(shí)別過(guò)程如圖3所示。
圖3 圖書錯(cuò)序狀態(tài)識(shí)別過(guò)程
循跡定位使用8通道磁導(dǎo)航傳感器實(shí)現(xiàn),該傳感器用于測(cè)量移動(dòng)平臺(tái)和磁條之間的相對(duì)位置。當(dāng)TX2圖像處理開(kāi)發(fā)板通過(guò)磁導(dǎo)航傳感器檢測(cè)到移動(dòng)平臺(tái)偏離軌道時(shí),會(huì)向STM32下位機(jī)發(fā)送矯正行駛軌道信號(hào),下位機(jī)接收到正確的信號(hào)后,將輸出相應(yīng)的電機(jī)控制信號(hào),該信號(hào)經(jīng)過(guò)放大后改變移動(dòng)平臺(tái)的運(yùn)行狀態(tài)。在循跡過(guò)程中,移動(dòng)機(jī)器人會(huì)循環(huán)檢測(cè)是否到達(dá)停車點(diǎn),如果沒(méi)有到達(dá)停車點(diǎn)則一直循跡前進(jìn)。移動(dòng)平臺(tái)通過(guò)計(jì)算感應(yīng)磁條和磁導(dǎo)航傳感器之間的相對(duì)位置,不斷調(diào)整運(yùn)行軌跡實(shí)現(xiàn)循跡前進(jìn),整個(gè)過(guò)程見(jiàn)圖4。
圖4 循跡定位流程圖
圖書錯(cuò)序檢測(cè)算法基于Yolov3tiny目標(biāo)檢測(cè)網(wǎng)絡(luò)構(gòu)建。首先,將移動(dòng)機(jī)器人拍攝的書架圖書圖像輸入到Y(jié)olov3tiny目標(biāo)檢測(cè)網(wǎng)絡(luò)中,Yolov3tiny檢測(cè)到每本圖書書脊上的索書號(hào)區(qū)域,然后將分割出的索書號(hào)區(qū)域圖像使用光學(xué)字符識(shí)別算法識(shí)別并判斷圖書的擺放狀態(tài)。Yolov3tiny網(wǎng)絡(luò)結(jié)構(gòu)圖如圖5所示。
圖5 Yolov3tiny網(wǎng)絡(luò)結(jié)構(gòu)圖
服務(wù)器負(fù)責(zé)接收從客戶端發(fā)傳輸過(guò)來(lái)的圖書圖像,調(diào)用Yolov3tiny目標(biāo)檢測(cè)網(wǎng)絡(luò)檢測(cè)出每本圖書書脊區(qū)域上的索書號(hào)區(qū)域并進(jìn)行分割。對(duì)分割出來(lái)的每個(gè)圖書索書號(hào)圖像,使用錯(cuò)序檢測(cè)算法判斷是否存在錯(cuò)序圖書,并將檢測(cè)結(jié)果發(fā)送給客戶端顯示。服務(wù)器端信息存取過(guò)程如圖6所示。
圖6 服務(wù)器端數(shù)據(jù)庫(kù)存取過(guò)程
2.3.1 數(shù)據(jù)庫(kù)設(shè)計(jì)
本文設(shè)計(jì)了一個(gè)BookShelves表,以實(shí)現(xiàn)巡檢記錄的存儲(chǔ)。該表由CheckID、CheckTime、BookshelfID、BookNumber、CheckedResult、OriginalPhoto和CheckedPhoto七個(gè)字段構(gòu)成,其中CheckID、BookshelfID和BookNumber都是Int類型,用于記錄檢測(cè)編號(hào)、所擺放的書架編號(hào)和圖書數(shù)量;CheckTime是datetime類型,用于記錄巡檢時(shí)間;CheckedResult是varchar(255)類型,用于記錄檢測(cè)結(jié)果;OriginalPhoto和CheckedPhoto均為mudiumblob類型,分別記錄原始圖像和被檢結(jié)果圖像,巡檢記錄表邏輯結(jié)果如表1所示。
表1 數(shù)據(jù)庫(kù)設(shè)計(jì)
將系統(tǒng)檢測(cè)的當(dāng)前時(shí)間、檢測(cè)圖書編號(hào)、所在書架編號(hào)、圖書數(shù)量、被檢測(cè)結(jié)果,相機(jī)采集的原始圖片轉(zhuǎn)化的二進(jìn)制數(shù)據(jù)流和被檢測(cè)圖像等七種數(shù)據(jù)存入數(shù)據(jù)庫(kù),以便圖書管理員后續(xù)的查詢與整理工作。
巡檢記錄表除了記錄當(dāng)前檢測(cè)時(shí)間、檢測(cè)圖書編號(hào)、所在書架編號(hào)、圖書數(shù)量和被檢測(cè)結(jié)果,還將相機(jī)采集的原始書架上的圖書圖像和檢測(cè)結(jié)果圖像轉(zhuǎn)化為二進(jìn)制數(shù)據(jù)流存儲(chǔ)到巡檢記錄表中,以便圖書管理員進(jìn)行后續(xù)查詢,以方便快速定位存在圖書亂序錯(cuò)位書架位置。
2.3.2 客戶端設(shè)計(jì)
通過(guò)客戶端可以訪問(wèn)服務(wù)器上的數(shù)據(jù)庫(kù),完成巡檢記錄的增、刪、查、改操作,并將操作后的結(jié)果顯示到客戶端界面上。圖7為客戶端運(yùn)行模式圖??蛻舳塑浖ㄟ^(guò)動(dòng)態(tài)鏈接庫(kù)MySql-Client遠(yuǎn)程訪問(wèn)軌道機(jī)器人服務(wù)器上的數(shù)據(jù)庫(kù),并通過(guò)此動(dòng)態(tài)鏈接庫(kù)傳回記錄到客戶端。當(dāng)運(yùn)行此客戶端軟件時(shí),首先實(shí)例化一個(gè)新的線程,通過(guò)實(shí)時(shí)顯示模塊發(fā)送查詢最新?tīng)顟B(tài)指令,將返回的記錄表顯示到實(shí)時(shí)顯示模塊,由該模塊在線程內(nèi)循環(huán)執(zhí)行查詢指令和顯示功能,從而實(shí)時(shí)顯示圖書巡架機(jī)器人最新巡檢結(jié)果。
圖7 客戶端運(yùn)行模式
另外,系統(tǒng)設(shè)計(jì)了特定時(shí)間段的實(shí)時(shí)狀態(tài)查詢模塊和運(yùn)維記錄查詢模塊。實(shí)時(shí)狀態(tài)查詢模塊用于查詢用戶給定時(shí)間段內(nèi)的書架圖書的巡檢情況,包括指定時(shí)間段內(nèi)未報(bào)警和報(bào)警的巡檢記錄,點(diǎn)擊報(bào)警記錄可查看對(duì)應(yīng)記錄的采集圖片,能方便圖書管理員人工審查系統(tǒng)運(yùn)行狀。運(yùn)維記錄查詢模塊主要用于查詢指定時(shí)間段內(nèi)所有巡檢情況,圖書管理員可將指定的巡檢記錄以Word報(bào)表的形式導(dǎo)出,以便存檔備查。
當(dāng)系統(tǒng)開(kāi)始運(yùn)行后,默認(rèn)顯示實(shí)時(shí)狀態(tài)界面,如圖8所示。左上角的圖片為圖書館巡架機(jī)器人最新采集的設(shè)圖書圖片,右上角的五個(gè)文本框分別顯示此圖片的巡檢編號(hào)、巡檢時(shí)間書架編號(hào)是否錯(cuò)序以及巡檢結(jié)果。如果存在錯(cuò)序情況,最下方將以數(shù)據(jù)網(wǎng)格形式顯示錯(cuò)序圖書基本信息。
圖8 實(shí)時(shí)狀態(tài)顯示界面
當(dāng)點(diǎn)擊查詢運(yùn)維按鈕時(shí),打開(kāi)如圖9所示查詢運(yùn)維界面圖,該界面為用戶提供了查詢巡檢記錄的功能,用戶選擇需要查詢的開(kāi)始時(shí)間和結(jié)束時(shí)間,選擇查詢類型包括所有記錄、報(bào)警記錄,點(diǎn)擊相應(yīng)按鈕可以顯示用戶所選條件的相應(yīng)記錄。當(dāng)點(diǎn)擊任意一條記錄,界面下方將會(huì)顯示用戶點(diǎn)擊記錄的所有信息,點(diǎn)擊輸出報(bào)表按鈕可以將查詢到的巡檢記錄以Word報(bào)表形式導(dǎo)出。
圖9 查詢運(yùn)維界面圖
圖10顯示了當(dāng)用戶點(diǎn)擊輸出報(bào)表后的詳細(xì)報(bào)表格式,輸出時(shí)間為用戶輸出報(bào)表時(shí)系統(tǒng)的時(shí)間,輸出類型記錄用戶選擇輸出的是所有記錄或報(bào)警記錄,報(bào)表內(nèi)容由序號(hào)、設(shè)備名稱、采集時(shí)間、是否錯(cuò)序、巡檢結(jié)果構(gòu)成。
圖10 輸出的word報(bào)表
本文設(shè)計(jì)了一種圖書館在架圖書巡檢機(jī)器人,該機(jī)器人由軌道引導(dǎo)系統(tǒng)、圖書錯(cuò)序檢測(cè)系統(tǒng)、數(shù)據(jù)庫(kù)存儲(chǔ)系統(tǒng)和客戶端系統(tǒng)四部分組成。通過(guò)在機(jī)器人上搭載智能化算法對(duì)圖書館內(nèi)各個(gè)書架進(jìn)行巡檢,分析并判斷書架上是否有錯(cuò)序圖書。相比于傳統(tǒng)的人工巡檢方式,圖書館智能巡架機(jī)器人巡檢效率高,為構(gòu)建智能化圖書館具有重要的實(shí)際意義和應(yīng)用前景。