長沙民政職業技術學院 譚剛林
本論文對基于Mac OS操作系統的TFRecords圖片數據集制作進行了有效地探索。從數據采集、圖片預處理到生成TFRecords數據的整個TFRecords圖片數據集的制作流程步驟都進行了詳細介紹,為基于Mac OS操作系統進行Tensorflow開發的研究人員提供了有效的參考途徑。
Mac操作系統是基于Unix開發而來,對python支持相當友好,但最大的缺點就是非常封閉,各種沙盒安全機制,導致除了官方的顯卡,對其它顯卡支持相當地差,基于此原因,谷歌官方現在放棄了Tensorflow GPU版本對Mac的后續支持。
蘋果電腦在市場上占有6%左右市場份額(各個評測機構發布的數據不一樣),在Mac系統上進行Tensorflow開發是開發人員的選項之一。數據集是使用Tensorflow進行機器學習的“糧食”,谷歌官方推薦的數據集格式為TFRecords格式。筆者完成了在Mac OS Catalina(10.15.7)上進行tfrecords圖片數據集的制作,對在Mac系統上進行Tensorflow開發進行了有效地探索。
MAC OS是基于UNIX的蘋果電腦專用操作系統,由于蘋果公司自己生產MAC的大部分硬件,MAC所用的操作系統是它自行開發的,系統的穩定性高、病毒攻擊少于windows系統。根據市場調研機構Canalys發布的數據顯示,2020年第一季度蘋果電腦出貨量占全球PC出貨量的6%,如圖1所示。
本論文所用操作系統平臺為MAC OS Catalin(10.15.7)。
Conda是一種通用包管理系統,旨在構建和管理任何語言和任何類型的軟件。環境管理允許用戶方便地安裝不同版本的python并可以快速切換。Miniconda是簡化版的Conda,只包含最基本的python與conda,以及相關的必須依賴項,對于空間要求嚴格的用戶,Miniconda是一種更優選擇。只包含最基本的東西,其他的庫需要用戶后期安裝。本論文的開發環境通過Miniconda3來進行管理。
Python是結合了解釋性、編譯性、互動性和面向對象的腳本語言。具有易學習、易閱讀、易維護,標準庫豐富,可跨平臺使用和系統兼容性好等特點。Python 2.7被確定為最后一個Python 2.x版本,目前python最新版本為python3.8,本論文的研究是基于python3.8進行開發。

圖1 2020年第一季度電腦出貨量
TensorFlow是谷歌開源的一款深度學習框架,2015年谷歌首次發布了TensorFlow1,2019年谷歌對TensorFlow進行了重大版本更新,發布了TensorFlow2。新的版本TensorFlow2推薦使用tf.keras、tf.data等高級庫,采用Eager模式搭建原型,tf.data處理數據,tf.feature_column提取特征,tf.keras搭建模型,tf.saved_model打包模型。TensorFlow2相對TensorFlow1來說,對用戶更友好,更容易入門。TensorFlow2已被眾多企業與初創公司廣泛用于自動化工作任務和開發新系統。

圖2 攝像頭采集到的圖片
圖片拍攝采用威視達康的C7837WIP無線網絡攝像頭,圖像傳感器為1/4in,720p逐行掃描方式。使用C7837WIP采集黑色標志線圖片,采集到的圖片如圖2所示。圖片大小為,png格式的彩色圖片。共采集500張圖片,其中400張圖片存放在train文件夾中作為訓練集,100張圖片存放在test文件夾中作為測試集。
攝像頭采集到圖片過大,若直接將此類圖片輸入到機器學習網絡進行學習,導致計算量過大。先對圖像進行裁剪,裁剪掉周圍無關的圖像。根據圖片的特點將的圖像裁剪成的圖像(如圖3所示),方便后期機器學習。圖片裁剪python程序流程如圖4所求。mac系統中的文件夾會有一些隱藏文件,在讀入圖片之前要先判斷文件是否為圖片文件,只能對圖片文件進行裁剪操作,否則python程序運行時會報屬性錯誤。

圖3 裁剪后的圖片
對于裁剪后的圖片喂入機器學習網絡時數據量還是過大,對裁剪后的圖片再縮小4倍成的圖片。在python中導入opencv-python模塊,利用cv2.resize(image,size,inte rpolation=cv2.INTER_AREA)函數對圖片進入縮小操作。縮小后的圖片如圖5所求。

圖4 圖片裁剪流程圖

圖5 縮小4倍后的圖片

圖6 生成TFRecords數據流程圖
TFRecords是TensorFlow中常用的二進制數據打包格式。將訓練數據集和測試數據集分別打包成TFRecords文件,配合TF中相關的DataLoader / Transformer等API實現數據的加載和處理,便于高效地訓練和評估模型。TFRecords內部使用了“Protocol Buffer”二進制數據編碼方案,幫助開發人員合理地存儲數據,程序運行時,只占用一個內存塊,只需一次性加載一個二進制文件的方式即可,對大型訓練數據很友好。
生成TFRecords數據程序流程如圖6所示。訓練集和測試集要分開運行,最終生成2個.tfrecords文件。
通過實驗,發現在Mac系統Catalina(10.15.7)上制作TFRecords圖片集是完全可行的。在運行速度和穩定性上相對Windows系統來說更穩定。