簡體   English   中英

使用Dataflow進行圖像預處理

[英]Image preprocessing with Dataflow

任務:我將運行一個ETL作業,該作業將從GCS中提取TIFF圖像,使用OpenCV + Tesseract等開源計算機視覺工具的組合將這些圖像轉換為文本,並最終將數據加載到BigQuery中

問題:我正在嘗試使用Dataflow來執行ETL作業,因為我有數百萬個圖像(每個圖像是一個單獨的文件/ blob),我想擴展到數百台機器。 但是,我遇到了關於下載圖像的最佳方法的Dataflow(將在下面更詳細地描述)的一些問題。

問題:最終我試圖確定:

1)數據流是否是執行此操作的最佳解決方案? 我考慮過的替代方案是在大型機器上運行多線程作業。 我還應該考慮其他替代方案嗎?

2)如果數據流是最佳解決方案,那么我應該如何專門處理下載數百萬張圖像(以便我可以通過轉換運行它們)?

技術挑戰:

以下帖子推薦的解決方案建議在beam.io.gcp.gcsio.GcsIO().open(filepath, 'r')使用beam.io.gcp.gcsio.GcsIO().open(filepath, 'r')從GCS下載圖像。
我嘗試使用beam.io.gcp.gcsio.GcsIO().open(filepath, 'r')沿着這條路beam.io.gcp.gcsio.GcsIO().open(filepath, 'r') ,然而,我無法打開圖像。 這個問題在這里描述: IO.BufferReader問題

使用DirectRunner我可以使用from google.cloud import storage客戶端api下載圖像文件,我可以打開並預處理圖像沒問題。 但是,在使用dataflow runner時,我遇到了依賴性問題, AttributeError: 'module' object has no attribute 'storage'

話雖如此, 如果Dataflow是最佳解決方案,那么下載和處理數百萬張圖像的最佳方法是什么?

你正在做正確的思考。 你似乎遇到了兩個問題:

  • 對於io.BufferedReader問題,您需要添加一個允許您搜索Tiff文件的界面,正如您在問題中正確找到的那樣

  • 使用google.cloud.storage的問題似乎是依賴項在Dataflow環境中不可用。 要添加此依賴項,請查看Beam文檔中的管理Python管道依賴項

主要思想是您可以使用傳入的--requirements_file reqs.txt文件運行管道,列出您要添加的所有額外依賴項。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM