ROMANCE DAWN for the new world

Microsoft Azure を中心とした技術情報を書いています。

Azure Custom Vision を Docker コンテナで使ってみた

先週の土曜日、Japan Azure User Group 9周年イベントで LT してきました。

jazug.connpass.com

タイトルからお察しの通り、懇親会でのネタ的な内容だったので、このスライドに大した話は書いてありません。

speakerdeck.com

せっかくなので、デモを構築した手順をまとめておきたいと思います。

Azure Custom Vision とは

Azure Custom Vision は、画像に任意のラベルを適用した判別モデルを構築できる Azure の AI サービスです。
似たようなサービスに Computer Vision もありますが、プリセットのラベルのみなので、自由にカスタマイズできるところが大きな違いです。

画像判別モデルを構築する

画像判別モデルは、Custom Vision Web サイトを利用して、画像のアップロード→トレーニング→評価の3ステップで構築できます。
このあたりの情報は多いので、公式ドキュメントなどを参照してください。
docs.microsoft.com

今回は、Dockerfile にエクスポートしたかったので、コンパクト ドメインを選択しました。プロジェクトを作成する際に、General (Compact) を選択します。
f:id:TonyTonyKun:20190910002839p:plain

プロジェクト作成後、五等分の花嫁の原作から集めてきた画像に、五つ子の名前をタグづけしてアップロードしました。

Dockerfileにエクスポートする

トレーニングした画像判別モデルをアプリケーションに組み込むには、いくつかの方法があります。
最もお手軽なのは、Custom Vision Web サイトで提供されるマネージドな API を呼び出すことですが、アプリケーションの形式に合わせて、画像判別モデルをエクスポートできます。

f:id:TonyTonyKun:20190910002919p:plain

今回は、Dockerfile を選択しました。コンテナ環境ならどこでもデプロイできます。Azure であれば、Web Apps とか Container Instances とか Kubernetes Services など、用途に合わせてサービスを選択することができます。
注意点として、コンテナ環境で動作するのですが、内部的に Azure 側への通信を行なっているため、完全なオフライン環境では動きません。
完全なオフライン環境で動かしたいときは、CoreML のような iOS 向けの形式を選択しましょう。

画像判別モデルを Docker コンテナでテストする

ダウンロードした ZIP を展開すると、Python で書かれたアプリケーションと Dockerfile が入った構成になっています。

f:id:TonyTonyKun:20190910002945p:plain

Dockerfile をビルドして、ローカルで実行します。

$ docker build -t thara0402/gotobun:2.0.0 .
$ docker run -it --rm -p 8080:80 thara0402/gotobun:2.0.0

あとは API を呼び出せば良いのですが、最近気に入っている Visual Studio Code の拡張にある REST Client を使いました。

f:id:TonyTonyKun:20190910003001p:plain

上記では、Azure Blob Storage にアップロードした画像 URL を渡していますが、/image で API を叩くと、画像データをそのまま POST することもできます。
原作から集めてきた未来の花嫁の画像を渡してテストしました。

まとめ

Azure Custom Vision は、画像に好きなラベルをつけて、自分だけの画像判別モデルを作ることができるサービスです。画像判別モデルは、アプリに合わせたフォーマットでエクスポートして組み込むこともできます。
少ない学習データ(最低5枚)でも大丈夫ですし、画像アップロード、トレーニング、評価の3ステップなので、何か自分の楽しめるネタで試してみるといいと思います。

気になる?未来の花嫁の予想結果ですが、長女か三女の可能性が高いようでした。ちなみに、五つ子の過去が明らかになる 11 巻は 9/17 に発売です。

五等分の花嫁(11) (講談社コミックス)

五等分の花嫁(11) (講談社コミックス)

ハワイ旅行に行ってきました

おかげさまで弊社も15周年ということで、家族も連れて社員旅行でハワイに行ってきました。

1日目

8月2日(金)の22時の便で、成田空港第二ターミナルからハワイに向かいました。

f:id:TonyTonyKun:20190812010829j:plain

ハワイまでのフライト時間は7時間30分、ハワイのダニエル・K・イノウエ国際空港に到着したのは、現地時間で金曜日の10時30分でした。日本との時差は19時間です。

f:id:TonyTonyKun:20190812010909j:plain

気温は30度ぐらいで暑いですが、湿度が少ないので日本と比べて過ごしやすいです。
宿泊するシェラトン・ワイキキ・ホテルまでは、ツアーの送迎バスで移動しました。オーシャンフロントの部屋なので、ワイキキのビーチが一望できます。遠くにダイヤモンドヘッドが見えて、ハワイらしい眺めでした。

f:id:TonyTonyKun:20190812011009j:plain

夕飯は、参加したメンバー全員でホテルのレストラン「カイ・マーケット」に行きました。1階にあるビュッフェ形式のレストランで、ビーチのすぐ近くなので夕焼けが綺麗でした。

f:id:TonyTonyKun:20190812011111j:plain
f:id:TonyTonyKun:20190812011136j:plain

2日目

朝早起きして、ダイヤモンドヘッドへ登山に向かいました。オアフ島にある火山ですが休火山となっていて、山頂の展望台からの景色を観ることが目的です。

ダイヤモンドヘッドまでの移動手段にはトロリーバスや The Bus があるのですが、少し寝坊してしまったこともあって Uber を使いました。ホテルからスマホアプリで呼んで2分ぐらいで来てくれて、ダイヤモンドヘッドまで15分ぐらい($12)でお得な感じでした。
車で行けるのは、DIAMOND HEAD VISITOR CENTER まで。入場料($1)を払って、登頂にチャレンジです。

f:id:TonyTonyKun:20190812011345j:plain
f:id:TonyTonyKun:20190812011431j:plain

なだらかな舗装された道からスタート。遠くに見える山頂の展望台がゴールです。

f:id:TonyTonyKun:20190812011521j:plain
f:id:TonyTonyKun:20190812011548j:plain

こんな景色を観ながら、山頂を目指します。途中から舗装されていない山道となり、急な階段が続きます。

f:id:TonyTonyKun:20190812011633j:plain
f:id:TonyTonyKun:20190812011701j:plain

途中の展望台から観る景色も、なかなか良かったです。

f:id:TonyTonyKun:20190812012036j:plain

さらに階段を進むとトンネルがあり、そのさきに山頂がありました。ここまで1時間くらいです。展望台から眺めるワイキキビーチの景色は、絶景でした。この写真、結構気に入っています。

f:id:TonyTonyKun:20190812012109j:plain

ダイヤモンドヘッドから下山した後、麓から徒歩7分ぐらいの場所にあるKCCファーマーズマーケットに寄りました。

f:id:TonyTonyKun:20190812012225j:plain

毎週土曜日に大学の駐車場で開催されるファーマーズマーケットです。ちなみに、KCCはカピオラニ・コミュニティ・カレッジの略です。ハワイのローカルな食材やお土産が売っていて、ちょっとしたお祭りみたいな雰囲気でした。

f:id:TonyTonyKun:20190812012328j:plain
f:id:TonyTonyKun:20190812012409j:plain

ハワイ産のアワビを焼いているお店があって、そこそこ美味しかったです。

ここからは、グリーンラインのトロリーバスでワイキキまで戻り、ホテルから一番近い Eggs‘n Things の Saratoga 店でパンケーキを食べました。

f:id:TonyTonyKun:20190812012545j:plain

Banana Whipped Cream & Macadamia Nuts を注文しました。美味しかったですが、二人でシェアしても十分なサイズでした・・・

f:id:TonyTonyKun:20190812012447j:plain

パンケーキを食べた後はホテルに戻り、プールやビーチで遊びました。ワイキキビーチまで近いので、シェラトンは良かったです。

f:id:TonyTonyKun:20190812012619j:plain

夕方には買い物がてら、アラモアナセンターに行きました。ピンクライン のトロリーバスで15分ぐらいです。お土産の雑貨とかTシャツとかを買ったりました。なんとなく Microsoft Store にも行きました。

f:id:TonyTonyKun:20190812012706j:plain

夕飯はフードコートでハンバーガーを食べて、ホテルに戻りました。

3日目

翌日の朝食は、ホテルのすぐ前にあるロイヤル・ハワイアンセンターにある Island Vintage Coffee で、アサイーボウルを食べました。これ、めっちゃ美味しかったです。

f:id:TonyTonyKun:20190812012744j:plain

この日のメインは、ウェット アンド ワイルドです。オアフ島の西にあり、空港やパールハーバーのもう少し先になります。

日本でホテルからの送迎と入場券がついたツアーを申し込んでおきました。車で30分ほどで到着しました。

f:id:TonyTonyKun:20190812012839j:plain

ウェット アンド ワイルドは、ハワイで唯一のウォーターパークで、スライダーや波のプールが充実しているので、一日楽しめました。

f:id:TonyTonyKun:20190812012924j:plain
f:id:TonyTonyKun:20190812013009j:plain

夕飯は、ウルフギャング・ステーキハウスに行きました。ロイヤル・ハワイアンセンターの3階にあります。看板メニューのポーターハウス・ステーキは、テンダーロインとショートロインの2種類が楽しめて、ボリューム満点で美味しかったです。

4日目

翌日は、ハナウマ湾へシュノーケリングに行きました。ホテルから車で20分ほどですが、ライフジャケットやフィンをレンタルするツアーだったので、途中でショップに寄ってから向かいました。

ハナウマ湾は、正確にはハナウマ湾自然保護区と呼ばれる,自然保護区内にあるビーチです。

f:id:TonyTonyKun:20190812013742j:plain

入場料($7.5)を払ってから、ビーチに下りる前に約10分間のビデオ鑑賞が義務付けられています。キレイなビーチが広がり、サンゴ礁に集まるカラフルな魚たちがたくさん観ることができました。

f:id:TonyTonyKun:20190812013822j:plain
f:id:TonyTonyKun:20190812013915j:plain

今回の旅行に向けて、プールやビーチで貴重品を持ち歩くためと水中写真撮影のために、スマホの防水ケースを購入しました。

防水は問題なかったのですが、水中だとケースの上からスマホを操作できないんですね。キレイな魚たちの写真を撮りたかったのですが、少し残念でした。それでも十分に楽しめましたが。

f:id:TonyTonyKun:20190812014004j:plain

最後のディナーは、参加したメンバー全員でスター・オブ・ホノルル号に乗って、サンセットディナークルーズを楽しみました。

f:id:TonyTonyKun:20190812014033j:plain

船の下にも、カラフルな魚たちが沢山いました。

f:id:TonyTonyKun:20190812014105j:plain

コース料理を食べたり、目の前でダンサーがハワイアンショーを踊ったり、社長の誕生日をお祝いしたり、楽しい時間を過ごせました。

f:id:TonyTonyKun:20190812020953j:plain

船上からの景色は、こんな感じでした。

f:id:TonyTonyKun:20190812014204j:plain
f:id:TonyTonyKun:20190812014247j:plain

5日目

最終日は早朝から移動となり、11時の便で日本に帰国しました。ハワイでの4日間は、あっと言う間だったので、また行きたいですね。
とくに、ダイヤモンドヘッド山頂からの眺めとハナウマ湾のシュノーケリングが良かったです。アサイーボウルも美味しかったので、表参道の Island Vintage Coffee に行ってみようかな。
www.islandvintagecoffee.co.jp

立山黒部アルペンルートを使って登山に行ってきました

立山黒部アルペンルートとは、北アルプスを貫き、富山と長野を結ぶ山岳観光ルートです。夏休みが始まったこともあり、立山に登ってきました。
www.alpen-route.com

今回のルートは、車で扇沢まで向かい、そこから4つの乗り物を乗り継いで室堂まで行き、最後は登山で立山の主峰、雄山(標高3,003m)の頂上を目指します。

f:id:TonyTonyKun:20190727011232p:plain

扇沢

東京から車で中央道と長野道を乗り継いで安曇野ICで降り、扇沢駅に向かいました。

f:id:TonyTonyKun:20190727011517j:plain

扇沢駅の少し手前を車で走っていると、野生の猿の群れに遭遇。子猿が可愛かった。

f:id:TonyTonyKun:20190727011616j:plain

扇沢駅(1,433m)からは、関電トンネル電気バスで黒部ダム(1,470m)まで向かいます。黒部ダム建設時に、資材搬送用に掘削されたトンネル内を走リます。

f:id:TonyTonyKun:20190727011655j:plain

昨年までのトローリーバスに代わって、今年から新たに運行したそうです。移動距離は5.4Kmで、所用時間は16分ほどです。

黒部ダム

黒部ダムは、黒部峡谷に建設された日本一巨大なダムです。観光放水は、間近で見ると、かなりの迫力でした。

f:id:TonyTonyKun:20190727011824j:plain
f:id:TonyTonyKun:20190727103445j:plain

ダム展望台から外階段で降り、ダムえん堤を歩くことができます。

f:id:TonyTonyKun:20190727011940j:plain
f:id:TonyTonyKun:20190727103512j:plain

ダムえん堤の先には黒部湖駅(1,455m)があり、黒部ケーブルカーで黒部平駅(1,828m)まで向かいます。

f:id:TonyTonyKun:20190727012012j:plain

標高差約400m、最大勾配31度の急斜面を走るケーブルカーです。日本で唯一、全線地下式のケーブルカーだそうです。移動距離は0.8Kmで、所用時間は5分ほどです。

黒部平

黒部平駅からは、立山ロープウェイで大観峰駅(2,316m)へ向かいます。

f:id:TonyTonyKun:20190727012135j:plain
f:id:TonyTonyKun:20190727012208j:plain

景観保護のため支柱が一本もないので、360度のパノラマを楽しむことができます。移動距離は1.7Kmで、所用時間は7分ほどです。

大観峰

大観峰駅からは、立山トンネルトローリーバスで室堂(2,450m)へ向かいます。

f:id:TonyTonyKun:20190727012350j:plain

雄山の直下を貫通している立山トンネルを走るバスです。自然環境保護のため電気で走るトロリーバスは、日本でここだけらしい。移動距離は3.7Kmで、所用時間は10分ほどです。

f:id:TonyTonyKun:20190727012425j:plain

ちなみに、大観峰駅で買った「ほたるいかの素干」がめっちゃ美味しかったです。そのまま食べてもよし、ライターで炙ってもよし、日本酒に入れてもよし。

f:id:TonyTonyKun:20190727020650j:plain

室堂

ようやく、立山黒部アルペンルートの中間地点となる室堂に到着です。

f:id:TonyTonyKun:20190727012603j:plain

立山玉殿の湧水。日本一高所で採水される湧水らしい。

f:id:TonyTonyKun:20190727012638j:plain

みくりが池。天気は良くなかったですが、少しだけ「逆さ立山」を観れたし、青く澄んだ紺碧の湖面は綺麗でした。

f:id:TonyTonyKun:20190727012728j:plain

みくりが池温泉。今日の宿になる山小屋です。標高2,410mにある日本一高所の天然温泉は、なかなか良かったです。

f:id:TonyTonyKun:20190727012826j:plain

立山

翌朝、室堂から一ノ越を経て雄山へ登ります。子どもからお年寄りまで手軽に登れるコースらしい。正面の山頂に見える小屋(だいぶ小さいですが)がゴールです。

f:id:TonyTonyKun:20190727012906j:plain

一ノ越までは、整備された石畳みの登山道を歩いていくので、歩きやすいです。ライチョウやオコジョには遭遇できませんでしたが、綺麗な高山植物はたくさん咲いていました。途中には、まだ雪渓がいくつか残っていました。

f:id:TonyTonyKun:20190727012940j:plain

中継地点の一ノ越に到着。ここには山小屋と寄附トイレがあるので、休息をとりました。

f:id:TonyTonyKun:20190727013039j:plain

一ノ越からの景色は、こんな感じ。遠くに見えるのは、富山湾ですね。

f:id:TonyTonyKun:20190727013120j:plain
f:id:TonyTonyKun:20190727013153j:plain

目指す雄山の頂上がはっきりと見えてきました。結構急角度な岩場が続いています。ここから本格的な登山になりそう。

f:id:TonyTonyKun:20190727013348j:plain

岩場を登りかけて、後ろを振り返ると思いのほか急角度で、高いところが得意でない自分には、帰りが少し不安になります((((;゚Д゚)))))))

f:id:TonyTonyKun:20190727013438j:plain

あと、もう少しで頂上です。登りと下りが分かれていますが、決められたルートはなく、自分で足場を選んで登ります。標高が高いせいか、運動不足のせいか、すぐに息が切れるので何回も休憩しつつ、ベテランっぽい人に付いて行きながら頂上を目指します。

f:id:TonyTonyKun:20190727013546j:plain

そして、ようやく頂上に到着。

f:id:TonyTonyKun:20190727013619j:plain

山頂から景色は、こんな感じ。遠くに見えるのは富士山ですね。

f:id:TonyTonyKun:20190727013737j:plain
f:id:TonyTonyKun:20190727013810j:plain

ここから、さらに上に神社があって、そこが本当の頂上らしい。

f:id:TonyTonyKun:20190727013856j:plain

登拝料の500円を払って神社まで登り、ついに雄山の登頂に成功!

f:id:TonyTonyKun:20190727013937j:plain
f:id:TonyTonyKun:20190727014013j:plain

360度パノラマの絶景が広がっていました。神社でお祓いをしてもらい、下山しました。コンロでお湯を沸かして入れたコーヒーが美味しかった。

f:id:TonyTonyKun:20190727014128j:plain
f:id:TonyTonyKun:20190727014156j:plain

みくりが池温泉まで下山した後、山小屋でもう一泊してから帰路に着きました。
初心者コースと聞いて甘く見てたので、Tシャツ、ジーパン、スニーカーで登ったけど、そういう格好で登っている人あまりいなかったなあ(笑)結構しんどかったし、次回の登山はもう少しちゃんとした装備で挑戦しようかな。

おまけ

帰りに安曇野に寄って、ブルーベリー狩りをしたのですが、カブトムシが沢山いて、そっちのほうがテンション上がった。

f:id:TonyTonyKun:20190727020108j:plain
f:id:TonyTonyKun:20190727020135j:plain