郭麗 胡志恒 趙恒謙 張瑞彬 吳瑞翔 高振 肖珂珂
DOI:10.16661/j.cnki.1672-3791.2108-5042-3116
摘? 要:深度學(xué)習(xí)模型結(jié)構(gòu)復(fù)雜,利用其進(jìn)行圖像分類需要龐大的數(shù)據(jù)量,圖像數(shù)據(jù)集的規(guī)模和質(zhì)量直接影響模型的效果,同時人工獲取文物圖像時,存在諸多不便。該文利用網(wǎng)絡(luò)爬蟲技術(shù)在故宮博物院官網(wǎng)批量獲取不同年代的青花瓷文物圖像,大大提高工作效率,然后對獲取的文物圖像進(jìn)行全方位的分析和處理,為用戶之后進(jìn)行不同年代的青花瓷圖像分類提供數(shù)據(jù)源。
關(guān)鍵詞:網(wǎng)絡(luò)爬蟲? ?青花瓷文物? ?數(shù)據(jù)裁剪? ?數(shù)據(jù)增強? ?數(shù)據(jù)集構(gòu)建
中圖分類號:TP391.41? ? ? ? ? ? ? ? ? ? ?文獻(xiàn)標(biāo)識碼:A文章編號:1672-3791(2021)08(a)-0015-04
Design and Construction of Blue-and-White Porcelain Image Dataset Based on Web Crawler
GUO Li? ?HU Zhiheng? ?ZHAO Hengqian*? ?ZHANG Ruibin? ?WU Ruixiang? ?GAO Zhen? XIAO Keke
(College of Geoscience and Surveying Engineering, China University of Mining & Technology(Beijing), Beijing, 100083 China)
Abstract: The structure of deep learning model is complex.Using it for image classification requires a huge amount of data. The scale and quality of image data set directly affect the effect of the model. At the same time, there are many inconveniences when manually obtaining cultural relic images. Through web crawler, we obtained images of blue-and-white porcelain from various dynasties in batch from Palace Museum official website, which greatly improves efficiency. We conduct an all-around analysis and processing of these images, thereby provide a data source for any users when classifying blue-and-white porcelain images from different dynasties.
Key Words: Web crawler; Blue-and-white porcelain; Data clipping; Data augmentation; Dataset construction
我國歷史源遠(yuǎn)流長,文物遺存豐富,其中古陶瓷類文物種類繁多,工藝精湛,文化內(nèi)涵豐富,具有極高的科技研究價值。成熟的青花瓷出現(xiàn)在元代景德鎮(zhèn),明清時期是青花瓷發(fā)展的主流,對青花瓷器文物的研究不僅可以反映出當(dāng)時的社會文化,更是對傳統(tǒng)文化的一種傳承與保護(hù)。采集青花瓷文物圖像并對其進(jìn)行預(yù)處理,是便于后續(xù)對不同年代的青花瓷文物進(jìn)行分類。
對不同年代的青花瓷文物的分類離不開深度學(xué)習(xí),同時深度學(xué)習(xí)模型結(jié)構(gòu)復(fù)雜,利用其進(jìn)行圖像分類需要龐大的數(shù)據(jù)量,圖像數(shù)據(jù)集的規(guī)模和質(zhì)量直接影響模型的效果,利用網(wǎng)絡(luò)爬蟲技術(shù)批量下載博物館官方提供的青花瓷文物圖像可以大大提高數(shù)據(jù)獲取的效率。圖像的預(yù)處理工作也是非常重要的環(huán)節(jié),預(yù)處理的主要目的是篩選特征圖像,突出待識別圖像的特征,才能有效擴充數(shù)據(jù)集[1]。該文重點討論圖像的獲取和處理工作,為下一步研究做好充分準(zhǔn)備。
1? 圖像獲取
為了保證數(shù)據(jù)來源真實可靠,經(jīng)過調(diào)研最終確定選擇故宮博物院提供的陶瓷藏品,同時為了快速批量獲取各個年代的青花瓷圖像,筆者使用網(wǎng)絡(luò)爬蟲技術(shù)從故宮博物院官網(wǎng)批量獲取各個年代的青花瓷圖像。爬蟲使用的編程語言是Python和JavaScript,依賴庫主要是lxml、js、py_mini_racer、ScrapyPillow、OpenCV等。其中l(wèi)xml是一個使用C語言編寫的第三方庫,它結(jié)合了速度以及簡單方法提取結(jié)構(gòu)化XML的優(yōu)點,對于在網(wǎng)頁中提取數(shù)據(jù)很方便[2]。
利用網(wǎng)絡(luò)爬蟲技術(shù)獲取圖像具有快速、方便的特點,但同時也存在一些困難。當(dāng)下的前端技術(shù)發(fā)展很快,幾乎所有的網(wǎng)站都加入了反爬機制,如果簡單的暴力提取,不僅不會提取到大量數(shù)據(jù),還會被封掉IP,甚至?xí)獾糍~號,所以選擇使用大量代理IP和攔截請求,修改js代碼的逆向爬蟲技術(shù)。這樣不僅可以不必分析結(jié)構(gòu)化的HTML文件,還大大提高了獲取速度,但缺點是接口分析難度相比于HTML分析至少是提高了一個數(shù)量級[3]。對于信息量不大且反爬比較嚴(yán)重的網(wǎng)站就會使用lxml直接提取信息[4]。而對于信息量很大,但是接口容易分析而且逆向破解可以實現(xiàn)的話,主要使用逆向爬蟲的方法。如果實在是難以實現(xiàn),我們最終選擇使用Selenium獲取數(shù)據(jù),這是一個網(wǎng)站自動化測試包,在網(wǎng)站前端復(fù)雜而信息量不大的情況之下使用它進(jìn)行數(shù)據(jù)獲取是一個很好的選擇[5]。
在圖像獲取的過程中,會有一些不是青花瓷的圖像被意外下載,對待這個問題,我們使用的是TensorFlow Hub的目標(biāo)探測模型,對于不是瓷器的圖像選擇放棄下載,很大程度上減輕了人工去錯的壓力。由于網(wǎng)絡(luò)請求耗時太長,我們需要充分利用多線程提高效率,同時考慮Python多線程不能充分利用多核,加入了多線程也是提高效率的方法[6]。
最終,使用網(wǎng)絡(luò)爬蟲技術(shù)獲取到明清時期24個年代的青花瓷圖像,為了之后使用深度學(xué)習(xí)模型進(jìn)行青花瓷文物圖像分類,選擇數(shù)據(jù)量較為豐富且具有代表性的10個年代青花瓷文物圖像進(jìn)行后續(xù)研究。其中,10個年代分別為:明成化、明嘉靖、明隆慶、明萬歷、明宣德、明永樂、明正德、清康熙、清乾隆、清雍正。
2? 圖像裁剪
基于Python的圖像裁剪主要用到的是OpenCV庫和PIL(Python Imaging Library)庫。OpenCV是一個基于BSD許可(開源)發(fā)行的跨平臺計算機視覺和機器學(xué)習(xí)軟件庫,可以運行在Linux、Windows、Android和Mac OS操作系統(tǒng)上。它輕量級而且高效——由一系列C函數(shù)和少量C++類構(gòu)成,同時提供Python、Ruby、MATLAB等語言的接口,實現(xiàn)了圖像處理和計算機視覺方面的很多通用算法。主要用于圖像分割、機器視覺、人機互動等相關(guān)研究。
PIL是Python一個強大方便的圖像處理庫。PIL庫可以完成圖像歸檔和圖像處理兩方面功能的需求。
(1)圖像歸檔:對圖像進(jìn)行批處理、生成圖像預(yù)覽、圖像格式轉(zhuǎn)換等。
(2)圖像處理:圖像基本處理、像素處理、顏色處理等。
2.1 整體裁剪
由于獲取的圖像大小不一,為了便于后續(xù)研究工作的順利開展,先對圖像數(shù)據(jù)進(jìn)行裁剪處理,統(tǒng)一裁剪成像素大小為224×224。為了避免裁剪后出現(xiàn)變形等失真情況,裁剪之前先將圖像補成以原圖像的長邊為邊長的正方形,再批量對其進(jìn)行裁剪。
裁剪流程圖如圖1所示,為了獲得原圖像的長和寬,先用Image.fromarray函數(shù)實現(xiàn)從數(shù)組到圖像的轉(zhuǎn)換,再通過函數(shù)image.size獲取原圖像的長和寬,將原圖像的長度作為正方形的邊長生成正方形的底圖,底圖的R、G、B賦值都為127,因此生成的是灰色的底圖。在此基礎(chǔ)上,將圖像裁剪成224×224大小,使用到的是image.resize函數(shù)。
將圖像進(jìn)行整體裁剪,實際上類似圖像縮放,并沒有真地裁剪掉圖像的有效信息。圖2是青花瓷文物圖像整體裁剪的結(jié)果。
2.2 局部裁剪
為了更細(xì)致地描述青花瓷器的特征,同時達(dá)到數(shù)據(jù)集擴充的目的,我們進(jìn)行了圖像的局部裁剪,獲得每張圖像的一些局部區(qū)域來作為輸入進(jìn)行青花瓷器的分類。如果從圖像左上角或右下角等處進(jìn)行裁剪,會得到大量圖像的背景信息,為了保證每張裁剪后的圖像信息有效,分別以每張圖像長和寬的1/1.5處、1/2處、1/2.5處和1/3處為中心進(jìn)行局部裁剪,裁剪的圖像大小為100×100。裁剪用到的函數(shù)是image.crop,最后將裁剪后不包含青花瓷器特征的圖像或只包含少量特征的圖像刪除。
3? 數(shù)據(jù)增強
從故宮博物院官網(wǎng)爬蟲獲取的數(shù)據(jù)經(jīng)篩選后,每個朝代只有幾十張圖像,數(shù)據(jù)量遠(yuǎn)遠(yuǎn)不夠,而數(shù)據(jù)增強可以有效增加訓(xùn)練樣本、減少網(wǎng)絡(luò)的過擬合現(xiàn)象,通過對訓(xùn)練圖像進(jìn)行變換可以得到泛化能力更強的網(wǎng)絡(luò),更好的適應(yīng)應(yīng)用場景。因此采用數(shù)據(jù)增強來擴充數(shù)據(jù)集,使擴充后的數(shù)據(jù)集滿足輸入到深度學(xué)習(xí)模型的需要。具體方法有添加椒鹽噪聲、高斯噪聲、旋轉(zhuǎn)、調(diào)整圖像亮度等。
首先,由于imread不能直接讀取中文路徑的圖像,所以讀取中文路徑的圖像用cv2.imdecode(np.fromfile(file_path,dtype=np.uint8),-1)來解決——先用np.fromfile()讀取為np.uint8格式,再使用cv2.imdecode()解碼。然后對每張圖像進(jìn)行以下處理:分別添加30%的椒鹽噪聲和高斯噪聲、以圖像中心為旋轉(zhuǎn)中心旋轉(zhuǎn)15°、調(diào)整圖像的亮度為原來的90%和150%,使其更暗或更亮,這樣最終得到的圖像數(shù)量是原來的5倍。圖3是部分青花瓷文物圖像數(shù)據(jù)增強的結(jié)果。
4? 結(jié)語
該文使用網(wǎng)絡(luò)爬蟲技術(shù),同時結(jié)合多個第三方庫,從故宮博物院獲取了多個年代的青花瓷文物圖像,經(jīng)過對其進(jìn)行分析和裁剪、數(shù)據(jù)增強等處理,最終選擇數(shù)據(jù)量較為豐富且具有代表性的10個年代的青花瓷文物圖像構(gòu)建數(shù)據(jù)集。該數(shù)據(jù)集不僅滿足了日后使用深度學(xué)習(xí)模型進(jìn)行圖像分類工作的要求,還為其他類別圖像數(shù)據(jù)集的構(gòu)建提供了思路。
參考文獻(xiàn)
[1] 曾銘杰.基于深度學(xué)習(xí)的陶瓷類目識別[J].電腦知識與技術(shù),2021,17(13):174-175.
[2] 張楠.Python語言及其應(yīng)用領(lǐng)域研究[J].科技創(chuàng)新導(dǎo)報,2019,16(17):128-129.
[3] 吳道君.大數(shù)據(jù)背景Python在網(wǎng)絡(luò)爬蟲框架中的應(yīng)用[J].科學(xué)技術(shù)創(chuàng)新,2021(21):97-99.
[4] 陶衛(wèi)衛(wèi).Python爬蟲的Cookie反爬應(yīng)對策略研究[J].信息與電腦:理論版,2021,33(8):189-192.
[5] 趙涵原.基于Python爬蟲的書籍?dāng)?shù)據(jù)可視化分析[J].電子技術(shù)與軟件工程,2021(14):178-179.
[6] SHANG S T,WU H G,MA J T.An Improved Focused Web Crawler based on Hybrid Similarity[J].International Journal of Performability Engineeri-ng,2019,15(10):2645-2656.