2017年5月6日土曜日

CNTKのチュートリアルを動かしてみる

Microsoftが公開している機械学習フレームワーク「CNTK」を触ってみました。

環境構築

次の環境で試しました。これらのインストールは終わっているものとします。

  • Windows 10 Pro (64bit)
  • Anaconda 4.2.0


Python仮想環境の作成

コマンドプロンプトを起動し、次のコマンドで"cntk"という名前の仮想環境を作成します。Pythonのバージョンは3.5にしておきます。
conda create -n cntk python=3.5

Python仮想環境の起動

activateコマンドで仮想環境を起動します。
activate cntk

CNTKのインストール

CNTKをインストールする前に、いくつかのライブラリをインストールしておきます。
conda install jupyter
conda install matplotlib
conda install scipy
その後、CNTKの本体をインストールします。
pip install https://cntk.ai/PythonWheel/CPU-Only/cntk-2.0rc2-cp35-cp35m-win_amd64.whl


サンプルプログラムのダウンロード

次のコマンドでCNTKのサンプルプログラムをダウンロードします(カレントフォルダーにダウンロードされます)
python -m cntk.sample_installer

チュートリアルの起動

Jupyterを起動します。
jupyter notebook
Jupyter Notebook上で、ダウンロードしたサンプルプログラムの中から、Turorialsフォルダーの中のCNTK_101_LogisticRegression.ipynbをクリックして、ノートを表示させます。


2017年5月4日木曜日

GIS関係者に知ってほしい次世代海洋データ標準S-100

はじめに

国際水路機関(IHO)は、2010年に、「S-100」と呼ばれる新しい海洋データ標準をリリースしました。
IHOが現時点で公開している海洋データ標準としては、ほかに「S-57」と呼ばれる仕様があり、電子海図のデータ仕様として広く普及しています。しかし、この仕様は拡張性(データ定義の見直しの都度、仕様をバージョンアップしなければならない)やメンテナンス性(仕様のバージョンアップのたびに、ECDISなどの表示装置側でソフトウェアアップデートが必要になる)などの面で問題があり、これらを改善するためにS-57を全面的に見直して新たな標準を作る、というのがS-100の背景になっています。

S-100の特徴

S-100の大きな特徴として、次の2点をあげておきます。

地理情報の標準への対応

S-100は、地理情報のグローバルスタンダードであるISO19100シリーズをベースに(ところどころS-100独自の拡張を加えて)作られています。多くのデータはGMLファイルとして配布されると思われるので、一般的なGISソフトウェアでも扱いやすくなります。

データフォーマットとデータ定義の分離

S-100では、データ作成のためのフレームワーク(データモデルやファイルフォーマットなど)のみが提供され、具体的なデータの内容を決めるのは、個々のデータ仕様の役割となります。たとえば、「S-101」というデータ仕様では、S-100で定めるデータモデルに基づいて、電子海図ドメインのデータの定義(「海岸線」「航路標識」など)を行います。


このような分離を行うことによって、表示装置でS-100のフレームワークにさえ正しく対応しておけば、データ仕様の変更やデータ仕様そのものの追加があった場合でも、表示装置側のアップデートを行うことなく、仕様の変更に対応できることになります。

S-100の現状

データ仕様の大半はIHOで作成途中ですので、これらのデータが一般に出回るのは、まだまだ先の話になります。
主要なものを下の表に挙げます。
  • S-101(電子海図)…2019年リリース予定
  • S-102(水深)…リリース済
  • S-111(潮流)
  • S-121(境界情報)
  • S-122(MPA:海洋保護区域)…2019年リリース?
  • S-123(無線サービス)
  • S-124(航行警報)
今後どれだけ普及するかは正直わかりませんが、海洋GISデータはすべてS-100ベースのデータになる、という未来もあるかもしれません。

技術的な話

S-100のデータ構造を扱えるライブラリの存在を現時点で確認できていませんが、前述のとおり、S-100はISO19100シリーズが基になっているため、GeoToolsのOpenGIS実装(org.opengisパッケージ)の内容がかなり参考になるはずです。
S-100対応のECDISのSDKがあるようなので、こういうものの中にはおそらく入っているのでしょう。

参考資料