2016年5月21日土曜日

[GPGPU] 機械学習で画風を変換する方法 [Machine Learning]

How to install and use the chainer-gogh

2015年9月に公開された画風を変換するアルゴリズム「chainer-gogh」をインストールして使ってみました。
https://github.com/mattya/chainer-gogh
使い方までの手順をまとめてみました。


環境

  • CUDAコア数が48、動作周波数が900HMzのNVIDIAグラフィックスを搭載したノートPC
  • 64bit版 Ubuntu Linux 15.10


CUDA Toolkitが使えるLinux PCを用意する

CUDAはNVIDIA製の一部のグラフィックスに搭載される並列演算に特化した機能です。
CUDA ToolkitはCUDAの機能を利用するための開発環境です。
chainer-goghはCUDA Toolkitを利用すると高速に処理できます。
今回はchainer-goghをCygwinやホストOSがWindowsのVirtualBoxで実行したのですが、このブログを書いている時点ではどちらもCUDA Toolkitが利用できず、画像1枚変換するのに90時間ほどかかりそうでした。

そこでUSBメモリードライブにUbuntu 15.10をインストールして使いました。
blog.fujiu.jp 機械学習で画風を変換する方法


必要な環境をインストールする

Ubuntu 15.10でchainer-goghを使えるようにするまでインストールするものが沢山ありました。
すべて端末からインストールしました。

グラフィックスドライバーをインストールする

システム設定 - ソフトウェアとアップデート - 追加のドライバー
から検証済みのドライバーをインストールしました。

NVIDIA純正のドライバーは
  • インストール時にX Serverを停止する必要がある
  • インストール後にOSが起動しない
などの問題がありました。

また、Ubuntu 16.04では検証済みのドライバーのインストール後にX-Windowでログインできなくなるトラブルがありました。

CUDA Toolkit をインストールする



インストール後は次の環境変数の設定が必要です。~/.bachrc に追記しておくと端末起動時に自動で設定されます。


cuDNNに対応していればインストールする

cuDNNはCUDAの処理を最適化をする機械学習用ライブラリーです。
Accelerated Computing Developer Programにユーザー登録するとダウンロードできます。
cuDNNが使えればchainer-goghの高速化が期待できますが、今回はPCが対応してなかったので使えませんでした。

GCC4.9ををインストールする

Ubuntu 15.10はGCC5がインストールされていますが、ChainerフレームワークのインストールにはGCC4.9が必要でした。


Pythonのライブラリー群をインストールする

下記のコマンドだと不要なものもあるかもしれませんが、必要なものが欠けてると何もできないのでまとめてインストールします。


Chainerフレームワークをインストールする



次のコマンドを実行して何も表示されなければCUDAが使えます。


このコマンドを実行して
ImportError: No module named cupy
と表示されるようならCUDA Toolkitがインストールされてないか環境変数が正しく設定されてません。
CUDA ToolkitがインストールしてChainerフレームワークをインストールをインストールし直してください。

gitをインストールする



chainer-goghと学習モデルをインストールする

学習モデルは作者曰く「お手軽」のものを使いました。


これで必要な環境が揃ったはずです。


使い方

ホームディレクトリに
変換したい画像 input.png
画風スタイルの画像 style.png
がある場合、次のコマンドで変換できます。


処理中はホームディレクトリに img_・・・・.png という画像ファイルが作られます。
im_04950.png が完成です。下が完成の画像です。

所要時間は次の通りでした。
  • CPUのみで推定90時間
  • CUDAで約45分
  • cuDNNは未対応なので検証不可

白地が多い画像は苦手のようです。


トラブルシューティング

実行したらCUDAに対応していなかった (cannot import name core)

CUDAを使わずに実行する


cuDNNをインストールしたらcuDNNに未対応で実行できない (CUDNN_STATUS_ARCH_MISMATCH)

環境変数のcuDNNのパス設定を削除してChainerフレームワークを再インストールする。

Chainerフレームワークを再インストールする方法



GCCを元に戻す方法




関連ブログ

Android4.0をVmwareやVirtualBoxで起動する
Windows8をVirtualBoxにインストールする
[Blender] Pythonで複数の設定を一瞬で編集する方法

以上、参考になれば幸いです。

2016年5月14日土曜日

[Docker] Eclipse Che でプログラミングする方法 [Java]

How to program in Eclipse Che

Eclipse CheはDockerで稼働しWebブラウザーでプログラミングする統合開発環境です。
以前のブログ で書いたとおりインストールしてみたのでプログラミングしてみます。


環境

  • Windows 10
  • Eclipse Che 4.0.1
  • Webブラウザーは Microsoft Edge


Workspaceを作る

Eclipse Cheが起動したらダッシュボードの左上のハンバーガーボタンをクリックして
blog.fujiu.jp Eclipse Cheでプログラミングする方法

Workspaceをクリックします。

右上のプラスのボタンをクリックすると新しいWorkspaceを追加できます。

追加するWorkspaceを設定する画面が表示されます。
今回はJAVAを作ることにし、全て初期設定のまま一番下の CREATE WORKSPACE をクリックします。

Workspaceの名前設定の画面が表示されます。
自分でWorkspaceの名前を入力してRENAMEをクリックすると変更できます。
RUNボタンでWorkspaceが作成されます。

Workspaceの作成いつまでたっても終わらない場合はブラウザーをリロードするとWorkspaceが完成していることがあります。
OPEN IN IDEでWorkspaceを操作する画面に変わります。


新しいProjectを作る

画面左上のWorkspaceメニューから Create Project をクリックします。

今回はMaven Projectを作ることにし、Nameにプロジェクトの名前を入力して Next ボタンをクリックします。

Mavenの設定に必要なArtifact IDやGroup IDを設定します。今回はArtifact IDにパッケージ名(自分のドメイン名)を、Group IDにプロジェクト名を設定しました。
Createボタンをクリックするとプロジェクトが作られます。

ここまでできれば今までのEclipseと同じように操作できます。


Workspaceをローカルディスクに保存する方法

画面左上のWorkspaceメニューから Download as Zip でローカルディスクにzipファイルとしてダウンロードできます。


使い心地

Eclipse Marsに比べると動作は軽快で画面が見やすくデザインされています。

その一方でEclipse Che 4.0.1では
  • ProjectがWorkspaceに自動で保存されない
  • GitのInitializeができない
  • Workspaceのロードにネットワークの帯域を喰われる
  • ショートカットキーがWebブラウザーにフックされて別のURLに遷移してしまう
  • エクスプローラーからドラッグ・ドロップでProjectにファイルの追加ができない
などのデメリットが目立ちました。
特にネットワークの負荷は深刻で、別窓で起動したWebブラウザーでWebサイトを閲覧したくてもタイムアウトしてしまうほどです。

現時点では実用面はEclipse Marsに及びませんでした。


関連ブログ

[Docker] Eclipse Che をWindowsにインストールする方法
[クラウド] Bluemix にJavaアプリを実装するまで
[クラウド] BluemixのJavaアプリ開発ではまったところと対処方法
[Java] Android StudioやEclipseのお節介な警告を消す方法
Visual Studio Community 2015 をISOファイルからWindows10にインストールする方法

以上、参考に
以上、参考になれば幸いです。

2016年5月7日土曜日

[Docker] Eclipse Che をWindowsにインストールする方法

How to run Eclipse Che on Windows

2016年3月、Webブラウザーで利用できる統合開発ツール Eclipse Che が正式公開されました。
今までのEclipseと違い、仮想OSとアプリケーションをひとまとめにしたイメージ(コンテナ)を実行するDockerというエミュレーターで動作します。
コンテナ化によりEclipse CheはWindowsやMacに限らずクラウドで稼働させても全く同じように利用できとのことです。
実際に使ってみたのでインストールする手順をまとめてみました。


環境

  • Windows 10
    BIOSの仮想化支援機能を有効に設定済み
  • Eclipse Cheは初期設定で8080番のポートを使うので8080番を使うWebサーバー(IIS、apache、nginxなど)は稼働させない


Java1.8 と Docker Toolbox をインストールする

Eclipse Cheの動作に必要なJava1.8とDocker Toolboxをインストールします。

今回は下記サイトからJava SE Development Kit 8をダウンロードしてインストールしました。
http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

Docker Toolboxは公式サイトからダウンロードしてインストールしました。
Virtual BoxやGit for Windowsなどが含まれていますがそれらも必要なので全てインストールします。
https://www.docker.com/products/docker-toolbox


Eclipse Cheをダウンロードする

Eclipse Cheを公式サイトからダウンロードします。
http://www.eclipse.org/che/download/

今回はZIP Packageをダウンロードして
D:\eclipse-che-4.0.1
に解凍して使います。


環境変数を設定する

JAVA_HOME というJava1.8のインストールパスへの環境変数が必要です。
また、Git for WindowsのインストールパスがPATH環境変数に含まれている必要があるようです。


Eclipse Che を起動する

Dockerはコマンドラインで操作します。
Dockerを起動し、Eclipse Cheを展開したサブフォルダーの
bin\che.bat run
を実行します。

今回は D:\eclipse-che-4.0.1 に展開したので
/d/eclipse-che-4.0.1/bin/che.bat run
と入力します。
blog.fujiu.jp Eclipse Che をWindowsにインストールする方法

時間がかかりますがDockerのコンソール出力が落ち着いたら

Webブラウザーで
http://localhost:8080
を開いてこんな画面が表示されたらインストール成功です。

次回はEclipse Cheを使ってみます。
次回を書きました → [Docker] Eclipse Che でプログラミングする方法 [Java]


関連ブログ

[クラウド] Bluemix にJavaアプリを実装するまで
[Java] Android StudioやEclipseのお節介な警告を消す方法
[Azure] クエリちゃんの動画投稿数をツイートするサービス をGitHubに公開するまで
Visual Studio Community 2015 をISOファイルからWindows10にインストールする方法

以上、参考になれば幸いです。

2016年4月30日土曜日

[Android] 楽天Edyの決算処理が中断で支払いできない原因と直し方 [おサイフケータイ]

How to fix the Rakuten Edy error

楽天Edyで決済しようとしたらこんな画面がでました。
決済処理が中断されている場合があります。
ご購入サイトから、お客様のEdy決済が完了しているかどうかをご確認ください。
blog.fujiu.jp [Android] 楽天Edyの決算処理が中断で支払いできない原因と直し方 [おサイフケータイ]

このエラーの原因と対策方法をまとめました。


環境

  • Androidスマートフォン SH-60E


デフォルトのブラウザーで開けば決済できる

この画面のお支払い画面のリンクを開くとき

ChromeやFirefoxで開いていたので決済できませんでした。
地球のようなアイコンの「ブラウザ」で開いたら決済できました。


ブラウザを選ぶ画面が出ない場合

ChromeやFirefoxが「常時」に設定されていると選択する画面が表示されません。
設定 - アプリ
からChromeやFirefoxを開いて
デフォルトでの起動 の 設定を消去
をタップすると次回から選択画面が表示されます。


選択肢にブラウザがない場合

ブラウザが無効に設定されていると、選択画面が表示されても選択肢にブラウザが表示されません。
設定 - アプリ - 全てのアプリ
からブラウザを開いて 有効にする をタップすると次回から選択肢に表示されます。


関連ブログ

FirefoxでJavaSriptが応答しなくなるサイトの対策と高速化
[SEO] ブログのPocket(あとで読むサービス)への登録数を調べる方法
ツイッターのアカウントをブロックやミュートせずにタイムラインから消し去る方法
Blogger.com (blogspot)のツイッターカードにサムネイルを設定する 2016年版
[セキュリティ] 引用サイト・Togetterに引用された自分のツイートを検索・削除する方法
[セキュリティ] Twitterの「このリンクは安全ではない」「このリクエストを保留しています」の対策2015年版

以上、参考になれば幸いです。

2016年4月23日土曜日

[クラウド] BluemixのJavaアプリ開発ではまったところと対処方法

The programming pitfalls in Bluemix

コンソールJavaアプリとして開発した
クエリちゃんの動画投稿数をツイートするサービス
をIBMのクラウドサービス・Bluemixで実行してはまったところと対処方法をまとめてみました。

ソースはソースはGitHubにあります。
https://github.com/mtk-f/TweetNicoMovieForQuerychan


環境

  • Eclipse Mars. 2 でMavenプロジェクトとして開発したコンソールJavaアプリ


Bluemixの環境変数ではまった

このアプリはTwitter4jライブラリーを使ってツイッターに文章を投稿します。
投稿するにはツイッター用のAPI KEYを設定する必要があります。
API KEYは非公開パラメーターなのでソースに載せることができません。

Twitter4jライブラリーはAPI KEYをソースに書く以外に環境変数に設定する方法があり、Bluemixはダッシュボードから環境変数を設定できます。
Twitter4jの環境変数はピリオド(ドット)の文字を含むのですが、Bluemixはピリオドを含む変数名を設定すると実行時にエラーになります
ピリオドを含む環境変数名はBluemixのbashでexportコマンドが失敗します。

例えば環境変数にこんな設定をすると
blog.fujiu.jp [クラウド] BluemixのJavaアプリ開発ではまったところと対処方法

こんなログが出力されます。
/bin/bash: line 20: export: `twitter4j.oauth.consumerKey=1234': not a valid identifier

対策としてピリオドを含まない環境変数を使うように対応しました。


Bluemixのログではまった

標準出力はBluemixのログに出力されるのですが、標準出力した順番とログに出力される順番は一致しないことがあります。
例えば次のJavaアプリを実行すると


Bluemixのログに次のように出力されました。


ログを読むときは時系列順に読み替える工夫が必要です。



関連ブログ

[クラウド] Bluemix にJavaアプリを実装するまで
[Java] Android StudioやEclipseのお節介な警告を消す方法
[Azure] クエリちゃんの動画投稿数をツイートするサービス をGitHubに公開するまで
C#のAzure用Webジョブ開発ではまったところ

以上、参考になれば幸いです。

2016年4月16日土曜日

[クラウド] Bluemix にJavaアプリを実装するまで

How to push java console applications for Bluemix

IBMのクラウドサービス・Bluemixを使って クエリちゃんの動画をランダムにツイート というアプリケーションを稼働させました。
blog.fujiu.jp [クラウド] Bluemix にJavaアプリを実装するまで

ソースはソースはGitHubに投稿してあります。
https://github.com/mtk-f/TweetNicoMovieForQuerychan

このアプリをBluemixで稼働させるまでの手順をまとめました。

環境

  • Windows 10
  • Eclipse Mars 2、Pleiades日本語化プラグイン


コンソールJavaアプリはjarファイルにエクスポートする必要がある

BluemixはEclipseで作ったJava EEアプリケーションをや配備するEclipse用プラグインが公開されていますが、コンソールJavaアプリはEclipseから配備することができませんでした。

今回作ったアプリケーションは、Main()メソッドから処理を開始するコンソールアプリケーションです。
BluemixにコンソールJavaアプリを配備するにはまずjarファイルにエクスポートします。
Eclipseでjarファイルにエクスポートする方法は次の通りです。

プロジェクトのプロパティーを開いてメイン・クラス項目にMainメソッドを持つクラスを設定します。

プロジェクトのエクスポートから 実行可能JARファイル をクリックしてjarファイルの保存場所とファイル名を指定するとエクスポートできます。


Bluemixにjarファイルを配備するにはcfコマンドを使う

Bluemixにjarファイルを配備するには cf.exe というコマンドラインインターフェイスをダウンロードして操作します。
コマンドプロンプトから文字入力による操作が必要なので難易度が高めです。

ダウンロードはこちら。
https://github.com/cloudfoundry/cli/releases

あらかじめWebのダッシュボードからBluemixのエンドポイントを調べておきます。
自分のエンドポイントはシドニーでした。

ここからコマンドプロンプトでcf.exeを使って操作します。

Bluemixのエンドポイントに接続します。
シドニーの場合の例:
cf api https://api.au-syd.bluemix.net

ログインします。
Bluemixにアカウント登録したメールアドレスが必要です。
例:
cf login -u メールアドレス -o メールアドレス -s dev
このあとパスワードを聞かれるので入力します。

jarファイルをアップロードします。
例:
fc push "アプリケーション名" -p "jarファイル名" -no-route

これでコンソールJavaアプリをBluemixに配備することができました。
配備したアプリケーションの開始や終了はcfコマンドからもWebのダッシュボードからも操作できます。


Bluemixを使ってみた感想

Azureに比べるとBluemixの日本人のユーザーは少ない印象ですが、丁寧に日本語翻訳された資料が公開されているので情報量には困りませんでした。
今回はコンソールアプリを試しましたが、Java EEアプリケーションを Websphere Application Server の仮想環境で運用すると威力を発揮しそうです。

なお、Azureには日本人がデザインした「クラウドガール・クラウディア窓辺」というイメージキャラクターがいてことあるごとにノベリティを配布いしていますが、Bluemixにはそのようなキャラクターはいません。


関連ブログ

[Azure] クエリちゃんの動画投稿数をツイートするサービス をGitHubに公開するまで
C#のAzure用Webジョブ開発ではまったところ
[Java] Android StudioやEclipseのお節介な警告を消す方法

以上、参考になれば幸いです。

2016年4月9日土曜日

[Visual Studio] C# のお節介な警告を消す方法

How to hide warnings on C#

Visual Studioで開発したAzureのWebジョブアプリ用
クエリちゃんの動画投稿数をツイートするサービス
は完成するまで多くの警告が表示されました。
Visual Studioの警告は「直さなくても動作するけど直した方がいい」というものがほとんどで、開発中に表示されることはよくあります。
警告を消す方法を調べてまとめました。


環境

  • Windows 10
  • Visual Studio 2015 Community


警告はアノテーションで消せる

たとえば
この非同期メソッドには 'await' 演算子がないため、同期的に実行されます。'await' 演算子を使用して非ブロッキング API 呼び出しを待機するか、'await Task.Run(...)' を使用してバックグラウンドのスレッドに対して CPU 主体の処理を実行することを検討してください。
という警告を消すとします。
blog.fujiu.jp [Visual Studio] C# のお節介な警告を消す方法

エラー一覧でコードの数字を調べます。
コードに CS1998 とあるので数字は 1998 です。

ソースに
#pragma warning disable 1998
と書くと、それ以降の CS1998 の警告は全て無視されます。

また、
#pragma warning restore 1998
と書くと、それ以降の CS1998 の警告が表示されるようになります。

警告を消したい範囲を
#pragma warning disable 1998

#pragma warning restore 1998
で囲むように書けば別の範囲のCS1998の警告をもれなく発見できます。

別の警告
(略) 呼出しの結果に 'await' 演算子を適用することを検討してください。
を消したい場合はコードが CS4014 なので
#pragma warning disable 4014

#pragma warning restore 4014
で囲みます。


コードを正しく書けば警告は解決する

Visual Studioの警告はほとんどが解決手段がある場合に表示されます。
たとえば 1998 の警告
この非同期メソッドには 'await' 演算子がないため、同期的に実行されます。
が表示されるメソッドで、オブジェクトを返さない(void関数のようにしたい)場合は

をメソッドの最後に追加します。

別の警告
(略) 呼出しの結果に 'await' 演算子を適用することを検討してください。
の場合はメソッドの定義にawaitキーワードを追加します。
Mainエントリーポイントのように awaitキーワード が使えないメソッドは、非同期メソッドをWait()メソッドで呼びます。
Wait()メソッドについては
C#のAzure用Webジョブ開発ではまったところ
でまとめてあります。

ほとんどの警告はコードを修正することで解決します。
完成時は警告やアノテーションは残さないようにコードを修正するべきです。


関連ブログ

[Java] Android StudioやEclipseのお節介な警告を消す方法
C#のAzure用Webジョブ開発ではまったところ
[Azure] クエリちゃんの動画投稿数をツイートするサービス をGitHubに公開するまで
Visual Studio Community 2015 をISOファイルからWindows10にインストールする方法
[Android] Xamarin でアプリを作ってみました

以上、参考になれば幸いです。