わかめの備忘録

Neural Style Transfer Tutorialを試してみた!

Kerasの製作者、François Chollet氏のツイートを
見てたらこんなツイートが

medium.com

どうやらNeural Style TransferのチュートリアルがGoogleColabで動かせるよという話みたいだ。
簡単に試せるならということで、とりあえず自分のTwitterアイコンをNeural Style Transferしてみた!

まずは葛飾北斎神奈川沖浪裏スタイル画像に使ってみた例

←から入力画像、スタイル画像、スタイル変換後の画像 f:id:wakame1367:20180821203009p:plain

次はフィンセント・ファン・ゴッホ星月夜スタイル画像に使ってみた例 f:id:wakame1367:20180821203056p:plain

その次はこの画像スタイル画像に使ってみた例 f:id:wakame1367:20180821203108p:plain

最後はこの画像スタイル画像に使ってみた例 f:id:wakame1367:20180821203336p:plain

Kerasのplot_modelでコケたときに見る記事

TL;DR

  • pydot の開発が再開?され
  • 最新版のpydotはPython3.5と3.6に対応したので
  • pydot 1.2.4を入れよう

github.com

記事の元ネタ

teratail.com

なぜこの記事を書いたのか

例えば「Keras plot_model error」などのキーワードでググると出てくるこの記事。

qiita.com

pydotは現在開発が止まっており、python3.5および3.6では動きません。 これらのバージョンのpythonを用いている環境では、 pydotplusまたはpydot-ngを代わりに使用することで対処できます。 私はpydotplusを使いました。

引用文より、繰り返しになりますがpydotは現在開発が止まっており、python3.5および3.6では動きません。という問題に対し
解決策としてpydotではなくpydotplusまたはpydot-ngを利用するとあります。
しかし最新版のKeras、具体的には2.1.6以降でこの解決策を適用しようとすると余計にハマります。
なぜかというと、Keras 2.1.6以降ではpydotのみImportしようとするからです。

# `pydot` is an optional dependency,
# see `extras_require` in `setup.py`.
try:
    import pydot
except ImportError:
    pydot = None

keras/vis_utils.py at 2.2.0 · keras-team/keras · GitHub

それに対し前のバージョン、具体的には2.0.5から2.1.5の間ではpydotとpydotplust、pydot-ngそれぞれImportしようとします。

try:
    # pydot-ng is a fork of pydot that is better maintained.
    import pydot_ng as pydot
except ImportError:
    # pydotplus is an improved version of pydot
    try:
        import pydotplus as pydot
    except ImportError:
        # Fall back on pydot if necessary.
        try:
            import pydot
        except ImportError:
            pydot = None

keras/vis_utils.py at 2.1.5 · keras-team/keras · GitHub

したがって、pydotの代わりにpydotplus、pydot-ngを利用しようとすると余計にハマるわけです。

約140年分の東京の平均気温をヒートマップ化してみた

この記事を読んでできること

誰でもこの記事と同じヒートマップが作れるようになれる。 toyokeizai.net

完成品

f:id:wakame1367:20180804211306p:plain

と言ってもまったく同じものができるわけではなく
自分が今持っている技術(PythonやPandas等)でヒートマップ化してみましょうという話。

データの準備

過去の気象データ・ダウンロード

今回利用するデータは気象庁が提供している過去の気象データになります。 下記リンクから以下の手順でダウンロードしてください。 www.data.jma.go.jp

都道府県・地区を選択する

今回は東京についての平均気温データを取得するので
東京をクリックしてください。

f:id:wakame1367:20180801225859p:plain:w500

東京をクリックするとこんな画面になると思います。
東京にチェックがついているか確認してください。
ついていればOKです。

f:id:wakame1367:20180801230130p:plain:w500

取得する項目(今回は日平均気温)を選ぶ

次に画面上のタブから項目を選ぶボタンを押して下さい。
そうするとこんな画面になると思います。

f:id:wakame1367:20180801231010p:plain:w500

そうしたらデータの種類-日別値項目-気温-日平均気温にチェックを入れて下さい。

f:id:wakame1367:20180801231216p:plain:w500

取得する期間を選ぶ

次に画面上のタブから期間を選ぶボタンを押して下さい。
そうするとこんな画面になると思います。 f:id:wakame1367:20180804182000p:plain:w500

取得する期間を選ぶのですが今回は記事と同じ期間を選んでみます。記事によると

このヒートマップは、夏期(6月から9月)の東京における過去140年間の日別平均気温を表したものだ。横軸は月、縦軸は年(1876年から2018年)を示している。

だそうなので、1876年から2018年までの期間を選んでみます。
過去の気象データ・ダウンロードではどうも一度にまとめてダウンロードできないようなので

  • 1876年 - 1940年
  • 1941年 - 2017年

と二段階に分けてダウンロードします。
特定の期間を複数年分、表示するにチェックを入れて以下のように期間を入力してください。 そうしたらCSVファイルをダウンロードボタンを押してCSVファイルをダウンロードしてください。 f:id:wakame1367:20180804182154p:plain:w500

f:id:wakame1367:20180804182211p:plain:w500

最後に2018年のデータをダウンロードします。
連続した期間で表示するにチェックを入れて以下のように期間を入力してください。 そうしたらCSVファイルをダウンロードボタンを押してCSVファイルをダウンロードしてください。 f:id:wakame1367:20180804184105p:plain:w500

これでヒートマップを描画するためのデータの準備ができました。

データの可視化

コードはGoogleColabで実行できるように下記リンク先で閲覧可能です。

GoogleColab - heatmap.ipynb

自分の環境で試したいという方はファイル > .ipynbをダウンロードを押すとJupyterNotebook形式のファイルが
ダウンロードできます、そちらを自分のGoogleDriveにアップロードしてGoogleColab環境で実行してもらえれば冒頭のヒートマップが描画できます。

GoogleColabの使い方についてはこちらで説明しています。 wakame1367.hatenablog.com

最後に

toyokeizai.net

こちらの記事で使われているライブラリ、記事より引用すると

ヒートマップの画像生成にはJavaScriptライブラリのP5.jsを用いている。

とのこと。P5.jsの使い方はさっぱりわからないし、 可視化に使っているデータを見てみると(記事の「データをダウンロード(JSON)」からダウンロードしてみてください)

f:id:wakame1367:20180731213512p:plain

おそらく1日毎の平均気温を配列に格納しているようですが
可視化のためにこのJSONファイルを作成するスクリプトを作るのも面倒なので、なんとか元のCSVをそこまで加工せずに可視化ができないかを考えたというのがこの記事を書いたモチベーションになります。

参考

GTSRBデータセットを利用した画像分類(1)

今後参加するであろう画像分類コンペへの対策や
今までDeepLearningについて学んできた内容のおさらいとして
今回からGTSRBのデータセットを使い モデル構築の方法や
データセットの取扱い方法などを実践してみたいと思います。

第一回目はこちらのチュートリアルをやってみます。 chsasank.github.io

またこの記事から続く連載記事の最終目標を転移学習(Transfer Learning)やデータ加工(Data Augumentation)等の技術を駆使して「過去のコンペ1位の精度である99.71%に近づける」に設定したいと思います。

まずは利用するGTSRBデータセットについて。

GTSRBとは

International Joint Conference on Neural Networks (IJCNN) 2011で開催されたドイツの道路交通標識画像分類コンペのこと。

データセット概要

The German Traffic Sign Recognition Benchmark(GTSRB)

  • 単一画像、マルチクラス分類
  • 訓練、テスト画像含め50,000枚以上の画像群
  • 43種類のクラス
  • 光の状態、明るさや暗さを加味したデータセット

下記画像はコンペで使われる43種類の画像群になります。 f:id:wakame1367:20180628220514p:plain

また、上記データセットは下記リンクからダウンロードできます。
ダウンロードURLを赤色の枠で囲っておきました。
German Traffic Sign Benchmarks f:id:wakame1367:20180629220503p:plain

f:id:wakame1367:20180629220512p:plain

43種類それぞれのドイツ道路交通標識の詳細について参考リンクをおいておきます。 www.berlinnet789.de

ソースコード

実際に使ったソースコードを用意しました。 github.com リポジトリ名間違えた・・・

MOOC受講履歴・予定まとめ

MOOCとは

Massive Open Online Course (MOOC、ムーク) またはMassive Open Online Courses (MOOCs、ムークス) は、インターネット上で誰もが無料[1] [2] で受講できる大規模な開かれた講義のことである[3][4]。代表的なプラットフォームとしては「Coursera」「edX」や、日本版としてはJMOOC[5]が提供する「gacco」「OUJ MOOC」があり、条件を満たせば修了証が交付される

Wikipedia - Massive open online courseより

MOOCについては少し触ってみたけどよく理解できなかった技術を体系的に学ぶときに利用しています。実習(プログラミングなど)を挟むので理解の助けになり、気に入っています。今後も計画的な予定を立てて、積極的に受講していく予定です。

MOOCの定義として「無料で受講できる」とありますが、講義を聴講するだけは無料でCertificateの発行は有料(Coursera)だったりするので無料有料関係なく受講したものを下記に表にまとめています。

受講済み

今までに受講したMOOCへのリンクやCertificateのリンクを載せています。

Coursera
Title Course Link Certificate Link
Machine Learning Link -
Neural Networks Deep Learning Link certificate
Improving Deep Neural Networks: Hyperparameter tuning, Regularization and Optimization Link certificate
Structuring Machine Learning Projects Link certificate
Convolutional Neural Networks Link certificate
Sequence Models Link certificate
Deep Learning Specialization deeplearning.ai 5 Course Certificates - certificate
Google Cloud Platform Fundamentals: Core Infrastructure Link -
Udemy
Title Course Link Certificate Link
Go: The Complete Developer's Guide (Golang) Link -
Machine Learning A-Z™: Hands-On Python & R In Data Science Link -
Deep Learning A-Z™: Hands-On Artificial Neural Networks Link -
TensorFlow, Python3, OpenAI Gymで学ぶ】強化学習入門 Link -

受講予定

今後受講したいMOOCへのリンクを載せています。

Coursera
Title Course Link Certificate Link
Machine Learning with TensorFlow on Google Cloud Platform Specialization Link -
Architecting with Google Cloud Platform Specialization Link -
Udemy
Title Course Link Certificate Link
Complete Python Web Course: Build 8 Python Web Apps Link -
REST APIs with Flask and Python Link -
Python and Django Full Stack Web Developer Bootcamp Link -
Udacity
Title Course Link Certificate Link
Software Debugging Automating the Boring Tasks Link -