CNTKをC#で、ふたたび2019年12月02日 18:10

CNTKを用い、機械学習のうち、CNNを学んでみようとして、データを用意しては、学習しない、を繰り返し、途中、サイクリングや読書に逃避しつつ、ずいぶんと時間を費やす。結局、敷かれた道を歩むのが最短だったか、と今さら気づく。

漢字要素ラベリング

最初は、木や土、といった漢字の構成要素を識別できないか、と試みる。ラベリングしたデータは4000ほど。さっぱり学習が進まない。

ガルパンキャララベリング

漢字の構成要素は、画面のあちこちに現れる。これは、場所を特定してから識別しなければいけないか、と、もう少し簡単なデータを探す。手元に、Webで公開されている、もっとらぶらぶ作戦です、のPDFがあったので、顔の部分を切り出して、ラベリング。1500ほど。こちらも、学習が進まない状況は変わらず。

MNISTデータ変換

うまくいかないのは、データの不備か、学習プログラムのせいか、アルゴリズムを追えばよいわけではないので、切り分けが難しい。基本に戻って、MSのTutorialにある手書き数字の識別の例題を実装。ところが、ここでも学習は進まず。

MNIST Pythonサンプル

C#のAPIの方は、巷の情報も少ない。さらに戻って、Pythonの例題を実装。Visual StudioにPythonの環境も実装されたので、あわせて試す。文法解析などはしてくれるが、C#ほど親切ではない。データを変換する処理を動かして、出力ファイルを比較して、問題の所在が判明。自前のデータ生成処理に不具合があった。

C# MLP

処理を修正して、データを出力し直し、C#の例題にあるコンソールアプリを動かす。MLP(Multi Layer Perceptron)の方は、誤識別率5%程度を達成。

C# CNN

CNN(Convolutional Neural Network)の方は、誤識別率2%程度と、もう少し優秀。

画像識別学習アプリ

自前の学習プログラムで改めて確認。同じように学習が進むことを確認。

漢字の構成要素やらぶらぶ作戦の顔データで試してみると、誤識別率は、実用に耐えるほどではないが、改善する傾向を見ることができた(50%を切るくらいまで)。この2例では、MLPの方が、学習の進みが早い。手書き文字の例題の傾向とあわせてみると、MLPでデータの有効性(学習性向)を把握して、CNNに進む方がよさそう。

総括すると、CNTKを学ぶ道筋は、素直にPythonの環境で、既知のデータを用いて、データと処理ロジックを確認した上、C#のアプリ実装に進み、自前のデータに進む、という段取りが確実。そうすれば、学習アルゴリズムの選択や、Neural Networkの試行錯誤に集中できる。今回は、今さら新言語をと、Pythonを迂回しようとしたのが誤り。

新調したGPU。MLPでHidden Layerが200層、CNNで最大フィルタ数が16、画像は64x64ピクセル。これで、GPUのメモリ使用量が1.5GB弱(ブラウザが使う分を含む)。以前の0.5GBのQuadroでは不足だったはず。今度は、4GBあるので、もう少し試せそう。

問題はこの先。十分な学習に必要なデータ数は、かなり多め。個人の関心の向く中で用意するには、どうしたものか。大きな組織に属するもの以外には、お呼びではないのか。

興味の向くようなデータを公開してくれる組織が増えないと、例題のその先に進む学習者は増えない。逆にゲームやコンテストのノリで募れば、面白くもなりそう。くずし字のプロジェクトは、そのいい例かも。

Visual Studio 20192019年04月04日 14:05


VS2019

4月に入って早々、Visual Studio 2019がリリース。ぱっと見すぐに気づくのは、フラットなUIになったこと、スタートウインドウがダイアログになったこと。What's New は、インストーラの方に。機能面では、チームでの作業支援の充実かな。コーディング支援もいろいろあるようだけど、それは使い込んでから。

プライバシーポリシーとサポート情報 - からだを動かすリズム計2018年11月15日 09:30

本アプリについて (About this app)

※本アプリは、2018年11月、ストアでの新規配信を終了しています。

本アプリは、身体を動かす際などにリズムを取るためのものです。ストレッチ運動などをする際に、リズムを崩さないようにする手助けとなることを想定しています。

一回の動作の拍数(1~4)と、目標の動作数を設定すると、図形の動きと音でリズムを取ります。たとえば、1回の動作を2拍で行い、30回を動作数に設定すると、2拍のリズムを30回の区切りで実行します。1拍の時間は、0.5~3秒の間で設定できます。

また、開始、終了、1拍の時間変更は、音声認識での操作でも行えます。音声認識には、マイクが必要です。

プライバシーポリシー (Privacy statement)

からだを動かすリズム計
対象アプリ:からだを動かすリズム計

本アプリの製作者である The Fourteenth Lab (第十四工房)は、本アプリによって、お客様の個人情報およびプライバシーに関する情報を収集しません。

サポート情報 (Support)

ご質問や不具合のご連絡は、このページの「コメント欄」をご利用いただくか、「このブログについて」に記載の連絡先までお願いします。

あらかじめのおことわり (FAQ)

1)音声認識は、マイクや機種の性能によって、認識具合が変わります。同じ動作にいくつか単語を用意していますので、認識しやすい単語を選んでください。

2)リング図形の表示には、WinRT XAML Toolkitを使用しています。

プライバシーポリシーとサポート情報 - トーンと色の見本帳2018年11月15日 09:30

本アプリについて (About this App)

※本アプリは、2018年11月、ストアでの新規配信を終了しています。

このアプリは、Windowsアプリの色デザインの補助のために、Windowsの定義色について、PCCSのトーン、色相、明度、彩度を概算し、トーンマップ上の位置を示します。また、PCCSの色について、RGB(ARGB)値を算出し、それに近いWindowsの定義色を求めます。

更新;2018年3月
生成した色について、色のタイルをクリップボードにコピーする機能を加えました。クリップボード経由で他のペイントアプリなどで参照できます。

※PCCS;日本色研配色体系

※アプリのページ

プライバシーポリシー (Privacy Statement)

トーンと色の見本帳
対象アプリ;トーンと色の見本帳

本アプリの製作者である The Fourteenth Lab (第十四工房) は、本アプリによって、お客様の個人情報およびプライバシーに関する情報を収集しません。

サポート情報 (Support)

ご質問や不具合のご連絡は、このページの「コメント欄」をご利用いただくか、「このブログについて」に記載の連絡先までお願いします。

使い方 (Usage)

利用方法は、アプリの「このアプリについて」に記載しています。ここでは、概要を示します。

●Windows定義色の色相、明度、彩度、トーンを調べる。

Windows定義色の確認

例として、一覧の中から、定義色「Chatreuse」を選択します。
・RGB(ARGB)値、実際の色を表す矩形を表示します。
・PCCSの色相、明度、彩度、マンセル色相の概算値を計算します。
・明度と彩度からトーンを判別します。

●PCCSサンプル色の色相、明度、彩度、トーンを確認する。

PCCSサンプル色の確認

例として、一覧の中から、「v20」(トーンvividの色相20)を選択します。
・RGB(ARGB)値、実際の色を表す矩形を表示します。
・定義に従い、PCCSの色相、明度、彩度、トーンを表示します。
・マンセル色相の概算値を計算します。

なお、RGBで表現できる範囲を超えた場合は、RGB値の右に「!」を表示します。この場合のRGB値は、越えた部分を上限値または下限値で置き換えたものになります。

●トーンと色相から生成される色を確認する。

トーンと色相から生成した色を確認

例として、トーンの一覧から「d Dull」、色相の一覧から「4:rO 赤みのだいだい」を選択します。
ついで、「トーンと色相からマップ」ボタンを押します。
・RGB(ARGB)値、実際の色を表す矩形を表示します。

●色相、明度、彩度を指定して、生成される色を確認する。

色相、明度、彩度からマップ

例として、色相から「20:V 青紫」、明度をスライダーを操作して70(縮尺は10倍なので実際の値は7.0)、彩度のスライダーを操作して60(縮尺は10倍なので実際の値は6.0)を指定します。
ついで、「色相、明度、彩度からマップ」ボタンを押します。
・RGB(ARGB)値、実際の色を表す矩形を表示します。
・明度x彩度のマップ上に色を表示します。

●トーンマップを確認する。

トーンマップ

色を生成すると、トーンマップにその位置を表示します。一つ前に作成した色が、Lightの円の時計で6時の位置に表示されました。表示位置は、黄(8:Y)が12時の位置、青紫(20:V)が6時の位置で、色相順に時計回りに配置します。

●選択した色相について、等色色相面を生成する。

等色相面

例として、色相から「20:V 青紫」を選択し、メニューから「色相を選んで等色相面を生成」(パレットのアイコン)を選択します。明度、彩度を1.0刻みで表示します。外側のトーンの明度から一定以上外れた色は表示しません。PCCSでは、色相ごとに明度の分布が異なり、青紫は下の方に寄っています。逆に黄は上の方に分布します。

あらかじめのおことわり (FAQ)

1)ディスプレイを通して実際に見える色は、ディスプレイの設定により変わります。紙に印刷した色と同じになるとは限りません。

2)トーンの識別は、トーン系列を近似する曲線を生成して計算しています。理論の裏付けのある計算式ではないので、それなりにずれています。参考程度にとどめてください。

3)RGB値の各値は、0~255の値を取ります。生成する色が、この範囲を外れている場合(「!」を表記)、負の場合は0、255を越えた場合は255に丸めた上、RGB値を生成します。

4)本アプリが示す明度と彩度は、一般のペイントソフトのHLS表示における明度や彩度と異なります。お使いのペイントソフトで、表示されている明度と彩度を指定しても、同じ色にはなりません。ペイントソフトでは、コンピュータで扱いやすいように、どの彩度でも明度の幅が同じになるように補正しています。本アプリが依拠するPCCSでは、高彩度ほど、明度の幅が狭くなります。

5)Windows定義色の「Transparent」(透明)は、白色の透明度100%と表示されます。

6) 生成した色について、右クリックで情報の参照とクリップボードへの色タイルのコピーができますが、表示されるトーンと、トーンマップ上の表示位置にずれがある場合があります。これは、生成された色がWindowsの表現可能範囲を越え、近似色の場合に生じます。

参考資料 (References)

1)中田満雄,北畠耀,細野尚志、「デザインの色彩」(部分改訂版)、日本色研事業株式会社,2016

2)Microsoft, How to Converting Colors Between RGB and HLS(HBS), https://support.microsoft.com/en-us/kb/29240, 2006
※このKB29240のアルゴリズム通りの実装はしていません。

3)クリップボードにコピーする色タイルの生成には、Win2Dのパッケージを利用しています。

プライバシーポリシーとサポート情報 - Network Time U2018年11月15日 09:30

本アプリについて (About this application)

※本アプリは、2018年11月、ストアでの新規配信を終了しています。

ネットワーク時刻を提供するサーバから時刻情報を取得し、本機の時刻とのずれを確認します。
Windows8.1用のストアアプリ(Network Time)を、Windows10のUWP用として若干の改良を加え移植したものです。

※2018年5月更新
ネットワーク時刻取得後、時刻表示の更新を続けるオプションを設けました。

This application retrieves a network time from a network time server (ntp server), and compare it to the local PC time.
This application is a 'Universal Windows app' ported from windows store app 'Network Time'.

※Network Time

※Network Time U (for Windows10, this app)

プライバシーポリシー (Privacy Statement)

Network Time U
対象アプリ: Network Time U

本アプリは、ネットワーク時刻を問い合わせるためにインターネット接続を利用します。
本アプリの製作者であるThe Fourteenth Lab (第十四工房) は、本アプリによって、お客様の個人情報およびプライバシーに関する情報を収集しません。

This application uses the 'Internet connection' to retrieve a network time by the network time protocol (ntp/udp).
No other information of any kind, personal or otherwise, is transmitted or collected by The Fourteenth Lab.

サポート情報 (Support)

ご質問や不具合のご連絡は、このページの「コメント欄」をご利用いただくか、「このブログについて」に記載の連絡先までお願いします。

If you have any questions or bug information, please fill in the comment field below or email me. The email address is printed in the left side.

あらかじめのおことわり (FAQ)

1)本アプリは、ネットワーク時刻を提供するサーバとの通信にUDP/IP上の通信手順(NTPプロトコル)を用いています。この通信手順は、送達確認を行わないため、通信相手が結果を返さない場合でも、エラーは表示されません。

1) This application uses the network time protocol on udp/ip which has no handshaking dialogues; therefore, no error message is printed when the server does not respond to the request.

2)平均通信時間は、往路と復路の通信時間の平均です。

2) Average communication time is the average of calling and receiving round trip delays.

3)オプションで「詳細モード」を選択する場合の表示は、NTPプロトコルの仕様書が定める以下の内容に対応します。(Japanese only)

時刻サーバの応答:leap
時刻の階層:stratum
時刻の同期間隔:poll
時刻の精度:precision
時刻の識別情報:reference id、stratumが0の場合は kiss code

プライバシーポリシーとサポート情報 - Network Time2018年11月15日 09:30

本アプリについて (About this application)

※本アプリは、2018年11月、ストアでの新規配信を終了しています。
※本アプリは、Windows8.1用のものです。Windows10では、更新版をご利用ください。

ネットワーク時刻を提供するサーバから時刻情報を取得し、本機の時刻とのずれを確認します。

This application retrieves a network time from a network time server (ntp server), and compare it to the local PC time.

プライバシーポリシー (Privacy Statement)

Network Time
対象アプリ: Network Time

本アプリは、ネットワーク時刻を問い合わせるためにインターネット接続を利用します。本アプリの製作者であるThe Fourteenth Lab (第十四工房)は、本アプリによって、お客様の個人情報およびプライバシーに関する情報を収集しません。

This application uses the Internet connection to retrieve a network time by network time protocol (ntp/udp). No other information of any kind, personal or otherwise, is transmitted or collected by The Fourteenth Lab.

サポート情報 (Support)

ご質問や不具合のご連絡は、このページの「コメント欄」をご利用いただくか、「このブログについて」に記載のご連絡先までお願いします。

If you have any questions or bug information, please fill in the comment field below or email me.
The email address is printed in the left side. 

FAQ

1) 本アプリは、ネットワーク時刻を提供するサーバとの通信にUDP/IP上の通信手順(NTPプロトコル)を用いています。この通信手順は、送達確認を行わないため、通信相手が結果を返さない場合でも、エラーは表示されません。

This application uses network time protocol on udp/ip which has no handshaking dialogues; therefore, no error message is printed when the server does not reply to the request.

2) 平均通信時間は、往路と復路の通信時間の平均です。

Average communication time is the average of calling and receiving round trip delays.

3) オプションで「詳細モード」を選択する場合の表示は、NTPプロトコルの仕様書が定める以下の内容に対応します。(Japanese only)

時刻サーバの応答: leap
時刻の階層: stratum
時刻の同期間隔: poll
時刻の精度: precision
時刻の識別情報: reference id、stratumが0の場合は: kiss code

プライバシーポリシーとサポート情報 - 部屋の中の水分量U2018年11月10日 09:45

本アプリについて (About this application)

※本アプリは、2018年11月、ストアでの新規配布を終了しています。

部屋の室温、湿度、容積から空気中の水分量を求めます。また、加湿する場合に必要な水分量、除湿する場合に取り除く水分量を求めます。
Windows8.1用のストアアプリ(部屋の中の水分量)を、Windows10のUWP用として若干の改良を加え移植したものです。

※部屋の中の水分量(移植元)

プライバシーポリシー(Privacy Statement)

部屋の中の水分量U
対象アプリ:部屋の中の水分量U

本アプリの製作者であるThe Fourteenth Lab(第十四工房)は、本アプリによって、お客様の個人情報およびプライバシーに関する情報を収集しません。

サポート情報(Support)

ご質問や不具合のご連絡は、このページの「コメント欄」をご利用いただくか、「このブログについて」に記載のご連絡先までお願いします。

1)ver1.1.0.0では、Mobile端末でタイトル部分の背景が黒くなり文字が読めない不具合がありました。ver1.1.1.0で対応しました。(12/1/2015)

あらかじめのおことわり(FAQ)

1)飽和水蒸気圧の計算には、W. WagnerとA. Prussの近似式を用いています。計算式については、参考文献2)のサイトに掲載されたものを用いています。

2)グラフの表示には、WinRT XAML Toolkitを利用しています。

3)本アプリの「調湿に最低限必要な時間」は、部屋の湿気の出入りがないとした場合の時間です。実際には、換気に伴う出入りがありますので、時間は長くなります。

4)本アプリの「参考:計算過程」は、小数点以下6桁まで表示していますが、そこまでの精度があるわけではありません。有効数字は3~4桁です。

参考文献

1)国立天文台編、理科年表 2015年、丸善出版
 物49(411)ページ、「水の蒸気圧」、ほか

2)Kaye & Laby Online, Tables of Physical & Chemical Constants

3)卜部吉庸著、化学の新研究、三省堂
 2-3 液体の蒸気圧と沸騰、ほか

プライバシーポリシーとサポート情報 - Subnet Designer U2018年11月09日 09:00

本アプリについて (About this app)

※本アプリは、2018年11月、ストアでの新規配信を終了しています。
This app was unpublished at Nov. 2018.

本アプリは、IPv4のSubnetの設計において、必要なSubnetの数と1つのSubnetが収容するホスト数をもとに、最適なSubnetを求める作業を支援します。
Windows8.1用のストアアプリを、Windows10向けのUWPアプリとして移植したものです。

This app helps you design a subnet based on number of subnets and number of hosts per subnet. This Windows10 UWP app is ported from a previous Windows8.1 store app.

プライバシーポリシー (Privacy statement)

Subnet Designer U
対象アプリ:Subnet Designer U

本アプリの製作者であるThe Fourteenth Lab (第十四工房)は、本アプリによって、お客様の個人情報およびプライバシーに関する情報を収集しません。

This app uses no Internet connection. No information of any kind, personal or otherwise, is transmitted or collected by The Fourteenth Lab.

サポート情報 (Support)

ご質問や不具合のご連絡は、このページの「コメント欄」をご利用いただくか、「このブログについて」に記載の連絡先までお願いします。

If you have any questions or bug information, please fill in the comment field below or email me. The email address is printed in the left side.

あらかじめのおことわり (FAQ)

1)wildcard mask(または、inverse mask)は、Ciscoのルータでアクセスリストを設定する際などに用います。

Wildcard mask (or inverse mask) is applied to access list configuration in cisco routers.

※Ciscoのページ