画像処理パイプライン
同僚が、Machine Learning モデルの精度を高めるために、American Sign Language(米国手話)の画像へ前処理を行う関数を書きました。この関数はグレースケール画像を入力として、Canny エッジ検出を実行します。Canny エッジ検出は古典的なコンピュータビジョンでよく使われ、画像中の物体の輪郭を強調します。これをデータセット内のすべての画像に適用したいと考えています。
同僚が書いた関数は compute_edges() という名前で環境に用意されています。入力は次元が (1, h, w) の画像で、高さ h と幅 w は任意の整数です。
画像の Dask 配列は image_array として環境にあり、形状は (N, h, w, 3) です。ここで N は画像数で、3 つのチャネルは赤・青・緑を表します。
dask.array は da としてインポート済みです。
この演習はコースの一部です
Pythonで学ぶDaskによる並列プログラミング
演習の手順
- 最後の次元に沿って平均を取り、カラー画像をグレースケールに変換します。
- グレースケール画像配列の
.map_blocks()メソッドを使って、各画像にcompute_edges()関数を適用します。 - エッジ画像の 0 番目だけを選択して計算します。
plt.imshow()を使ってエッジを描画します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Convert the color photos to grayscale
grayscale_images = ____
# Apply the edge detection function
edge_images = ____.____(____)
# Select the zeroth image and compute its values
sample_image = ____
# Show the result
____(____, cmap='gray')
plt.show()