Dockerによる画像データ処理の環境構築

1. はじめに

 

ここではDockerによる環境構築を説明します。

 

1.1 なぜDockerなのか?

 

OpenDroneMapの使い方でもDockerを紹介しましたが、Dockerを使うのに重要な理由がいくつかあります。

  1. 作業環境などの影響を受けにくい
  2. 実行環境を共有できる
  3. 実行環境の管理が簡単

まず一つ目の「作業環境などの影響を受けにくい」が、Dockerを使う一番の理由と考えています。世の中、数え切れないほどのOSが存在します。Windows、Mac、Linux・・・バージョンなんかも考えると気が遠くなります。人によって使っているOSは異なります。Dockerは、Linux環境であれば、Windows、Mac、Linux内に簡単に仮想環境を構築することができます。しかも、処理は軽快です。

二つ目の「実行環境を共有できる」というのも非常に重要な理由です。このブログで有用な情報を公開しても、読者の環境で再現できなければ意味がありません。Dockerを使えば、そのような問題を解決できると期待できます。例えば、OpenDroneMapを個人の環境でビルドしようとすると、途方もなく大変です。Dockerでビルドできるようにしておけば、あらゆるパソコンで再現が可能です。

三つ目の「実行環境の管理が簡単」というのも非常に重要です。ソフトウェアというのは、日々、猛烈なスピードでアップデートされています。突然、プログラムが動かなくなってしまう場合があります。Dockerの構築では、Dockerfileというビルドのレシピを記述します。このレシピがあれば、仮想環境にどのパッケージがインストールされているか、把握することができます。

 

1.2 利用するツールやライブラリ

 

本ブログでは、主にUAVによる撮影手法や、撮影した画像の処理方法について紹介します。使用するツールは主に下記です。

  • Python – Anaconda 3-2.50
  • GDALなど
  • Jupyter notebook

UAVで撮影した画像は、衛星画像のように地理情報が含まれています。Pythonは、地理空間データを処理するためのライブラリが数多く整備されています。

GDALは、ラスターデータを処理するための代表的なライブラリです。PythonのAPIも用意されています。GDALから発展しているライブラリも使います。

Jupyterは、Pythonをブラウザ上で対話的に利用するツールです。通常の処理だけではなく、描画などが容易にでき、GitHubで表示ができるため非常に便利です。

 

2. 環境構築

 

2.1 Dockerのインストール

 

Docker本家のサイトからDockerをインストールします。

Windowsはここ

Macはここ

Ubuntuはここ

 

2.2 docker-composeのインストール

 

docker-composeは、YAMLファイルに記述されたDocker実行環境を実行するツールです。docker-composeを使うことで、Dockerの実行が大変楽になります。インストールするには、本家PythonのCookbookを参考にしてください。Pythonのインストールには、Python本家のインストーラを利用するのが簡単です。

Windowsはここ

MacやLinuxはここ

も参考にしてください。

 

2.3 Dockerの環境を構築

 

以下のコマンドを実行するか、ここからソースコードをダウロードしてください。

git clone https://github.com/geo-quantz/image_analytics

取得したディレクトリ先に移動し、端末で以下のコマンドを実行してください。あとは勝手にDockerイメージのビルドが進みます。時間がかかるので放置してください。

docker-compose build

次に以下のコマンドを順次実行してください。すると、Dockerイメージから実行可能なコンテナを作成し、コンテナ内で作業が可能になります。そして、Jupyterの利用をDockerを通して利用が可能になります。

docker-compose run --service-ports dev bash

jupyter notebook --no-browser --ip=0.0.0.0 --port=8888

ブラウザで http://0.0.0.0:8888/ にアクセスしてください。以下の画像のように表示されるはずです。これで、Jupyterの利用が可能です。もちろん、端末内でPythonの利用も可能です。

Leave a Reply

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください