跳轉到主要內容
工程的博客

介紹內置圖像數據源在Apache 2.4火花

2018年12月10日, 工程的博客

分享這篇文章

介紹

與最近的進步深度學習圖像分類框架和對象檢測、標準圖像處理的需求在Apache火花從來沒有更大的。圖像處理和預處理的具體挑戰——例如,圖片(如有不同的格式。,jpeg, png等),尺寸,和配色方案,沒有簡單的方法來測試正確性(靜默失敗)。

圖像數據源地址這些問題代碼你可以通過提供的標準表示對來自特定的圖像的細節和抽象表示。

Apache 2.3提供了火花ImageSchema.readImagesAPI(參見微軟的文章在Apache火花圖像數據支持),這是最初的開發MMLSpark圖書館。在Apache 2.4火花,這是更容易使用,因為它現在是一個內置的數據源。使用圖像數據源,您可以從目錄和加載圖像得到DataFrame與單個圖像列。

這篇文章描述了一個圖像數據源,展示了它的使用深度學習管道在磚統一的分析平台Beplay体育安卓版本

圖像導入

讓我們看看如何通過圖像數據讀入火花圖像來源。在PySpark,您可以導入圖片如下:

image_df = spark.read。格式(“圖像”).load (“/路徑/ /圖片”)

類似的api存在Scala、Java和R。

圖像數據來源,可以導入一個嵌套目錄結構(例如,使用一個路徑/ / dir / * * /路徑)。對於更具體的圖片,您可以使用分區發現通過指定一個路徑分區目錄(即路徑/道路/ / dir /日期= 2018-01-02 /類別=汽車)。

意象圖式

圖像加載與單個列稱為“DataFrame形象。“這是一個struct-type列以下字段:

圖片:結構體包含所有圖像數據||——來源:字符串代表源URI||——高度:整數,圖像像素的高度||——寬度:整數,圖像在像素寬度||——nChannels:整數,顏色通道的數量||——模式:整數,OpenCV類型||——數據:二進製,實際的形象

雖然大多數領域都是不言而喻的,一些值得的解釋:

nChannels:顏色通道的數量。灰度圖像的典型值是1、3為彩色圖像(例如,RGB),和4彩色圖像alpha通道。

模式:整數標記提供了如何解釋數據字段的信息。它指定了數據類型和通道秩序中存儲的數據。字段的值預計(但不執行)映射到一個OpenCV下麵顯示的類型。OpenCV類型被定義為1、2、3或4通道和幾個像素值的數據類型。

映射類型的數字OpenCV(數據類型x頻道數量):

數據:圖像數據存儲在一個二進製格式。圖像數據被表示為一個三維數組的尺寸形狀(高度、寬度、nChannels)和數組類型t的值指定的模式。數組存儲在存儲順序。

通道順序

通道順序指定顏色的順序存儲。例如,如果你有一個典型的三個通道圖像用紅、藍、綠的組件,有六個可能的排序。大多數圖書館使用RGB或BGR。三(四)通道OpenCV類型預計將在BGR (A)。

代碼示例

深度學習管道提供了一個簡單的方法開始毫升使用圖像。從0.4版開始,深度學習管道使用上麵描述的意象圖式為圖像格式,取代前圖像模式中定義的格式深度學習管道項目。

在Python的例子中,我們使用學習轉移到構建一個定製的圖像分類器:

#圖像源目錄路徑sample_img_dir =…#使用新的圖像讀取圖像數據計劃image_df = spark.read。格式(“圖像”).load (sample_img_dir)#磚顯示包含內置的圖像顯示的支持顯示器(image_df)#分割訓練和測試數據集train_df test_df = image_df.randomSplit ([0.6,0.4])#火車邏輯回歸InceptionV3生成的特性:featurizer = DeepImageFeaturizer (inputCol =“圖像”outputCol =“特征”modelName =“InceptionV3”)#構建邏輯回歸變換lr = LogisticRegression(麥克斯特=20.regParam =0.05elasticNetParam =0.3labelCol =“標簽”)#構建毫升管道p =管道(階段= [featurizer, lr))#創建我們的模型p_model = p.fit (train_df)#運行我們的模型對測試數據集tested_df = p_model.transform (test_df)#評估我們的模型評估者= MulticlassClassificationEvaluator (metricName =“準確性”)打印("測試集精度= "+str(evaluator.evaluate (tested_df.select (“預測”,“標簽”))))

請注意:對於深度學習管道開發人員,新的圖像模式變化的順序從RGB顏色通道BGR。以減少混亂,一些內部api現在需要顯式地指定排序。

接下來是什麼

是很有幫助的,如果你可以返回的DataFrame通過示例df.sample,但抽樣不優化。為了改善這種情況,我們需要降低采樣算子圖像數據源,以便它不需要讀每一個圖像文件。此功能將被添加在數據源V2在未來。

新形象功能計劃在將來的版本中在Apache火花和磚,所以請繼續關注更新。你也可以嚐試深入學習例如筆記本電腦磚運行時5.0毫升

閱讀更多

為進一步閱讀圖像數據來源,以及如何使用它:

確認

由於丹尼·李,斯蒂芬妮Bodoff,朱爾斯s Damji貢獻。

免費試著磚

相關的帖子

看到所有工程的博客的帖子
Baidu
map