ディープラーニング開発キット ·...

22
ディープラーニング開発キット ユーザーマニュアル 2020 3 3 株式会社リアリニット

Upload: others

Post on 26-May-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: ディープラーニング開発キット · ディープラーニング体験ソフトウェアに実装されている機能と近いものを開発した状態となっています。

ディープラーニング開発キット

ユーザーマニュアル

2020 年 3 月 3 日

株式会社リアリニット

Page 2: ディープラーニング開発キット · ディープラーニング体験ソフトウェアに実装されている機能と近いものを開発した状態となっています。

2

内容

1 はじめに .............................................................................................................................................................4

2 インストール ......................................................................................................................................................6

2.1 動作環境 ......................................................................................................................................................6

2.2 インストール方法 .......................................................................................................................................6

3 操作方法 .............................................................................................................................................................8

3.1 前提条件 ......................................................................................................................................................8

3.2 プロジェクトの作成 ....................................................................................................................................8

3.3 サンプルプロジェクトの内容 ...................................................................................................................10

4 関数一覧 ...........................................................................................................................................................12

5 お問い合わせ方法 .............................................................................................................................................22

Page 3: ディープラーニング開発キット · ディープラーニング体験ソフトウェアに実装されている機能と近いものを開発した状態となっています。

3

1 はじめに

Page 4: ディープラーニング開発キット · ディープラーニング体験ソフトウェアに実装されている機能と近いものを開発した状態となっています。

4

1 はじめに

本キットは、ディープラーニングを活用したシステムを開発するための基礎として利用できます。

ディープラーニングが行えるソフトウェア製品はたくさんありますが、ネットワークの設計だけでもプログラ

ミングが必要な製品が多く、十分な専門知識がない方には敷居が高いのが現状です。本キットでは、ネットワー

ク設計についてはプログラミング不要としており、独自のソフトウェアの開発に手軽に進んでいただくことがで

きます。

ディープラーニングに関連した専門用語がたくさんあり、初めて取り組む方に敷居を高く感じさせる一因とな

っているかもしれません。当社で配布している、ディープラーニング体験ソフトウェアには、わかりやすいマニ

ュアルを添付しており、専門用語をわかりやすく説明しています。詳しい説明はそちらに譲り、本マニュアルで

は、専門用語の説明は最低限としていますので、その点了解いただければと思います。

本ソフトウェアが、ディープラーニングに手軽に取り組みたい方の助けとなるようであれば、うれしく存じま

す。

Page 5: ディープラーニング開発キット · ディープラーニング体験ソフトウェアに実装されている機能と近いものを開発した状態となっています。

5

2 インストール方法

Page 6: ディープラーニング開発キット · ディープラーニング体験ソフトウェアに実装されている機能と近いものを開発した状態となっています。

6

2 インストール

2.1 動作環境

本キットを利用するために必要なハードウェアおよびソフトウェアは以下の通りです。

項目 詳細

OS Microsoft Windows 10

Microsoft Windows 8.1(64bit / 32bit)

CPU 上記OSが正常動作するもの

Intel Core i3以上を推奨

メモリ 8GB以上

ディスプレイ 上記OSで正常動作するもの

解像度:1024×1068以上

ハードディスク 必須空き容量:100MB

マウス 必須

2.2 インストール方法

Zip ファイルを解凍し、希望の場所に置いてください。サンプルプロジェクト、外部プログラム本体、さ

らにテスト用データが配置されます。

DeepLearningDevKit フォルダには、Microsoft 社製品である、Visual Studio 2019 を使用して作成した

サンプルプロジェクトを配置しています。

ExternalProgram フォルダには、ライセンス取得用の情報を得るツールである MachineInfoViewer、ネ

ットワークファイルを作成するツールである NetworkDataCreator、さらに開発キットで利用する DLL 群

を配置しています。

TestData フォルダには、ディープラーニング体験ソフトウェアで提供しているものと同じ、テスト用デ

ータを配置しています。

本キットで開発したシステムには、当社より配布するライセンスファイルが必要となります。開発キット

をインストールする PC や、開発キットで開発したシステムを動作させる PC で、MachineInfoViewer を起

動し、得られた情報を当社までお伝えください。ライセンスを購入いただいていることを確認後、ライセン

スファイルをお送りします。これを実行プログラムのフォルダに配置してください。

Page 7: ディープラーニング開発キット · ディープラーニング体験ソフトウェアに実装されている機能と近いものを開発した状態となっています。

7

3 操作方法

Page 8: ディープラーニング開発キット · ディープラーニング体験ソフトウェアに実装されている機能と近いものを開発した状態となっています。

8

3 操作方法

3.1 前提条件

Microsoft 社製品である、Visual Studio 2019 を利用する場合を想定して、本キットの使い方を説明しま

す。

本キットは、API をまとめた DLL を呼び出すことで、開発キットの利用ができるように設計されていま

す。したがって、開発言語も自由に選べますが、ここでは、Visual C#を使用する場合を想定して、以下の説

明を行います。

3.2 プロジェクトの作成

以下の操作で、新しいプロジェクトを作成します。

(1) メインメニューの[ファイル]-[新規作成]-[プロジェクト]を選ぶ

[新しいプロジェクト]ダイアログボックスが開きます。

(2) 作成したいプロジェクトの種類と、ファイルを配置したい場所を選択し、<OK>ボタンを押す

ここでは、Visual C#のテンプレートに含まれる、Windows フォームアプリケーションを選んでいま

す。

(3) ソリューションエクスプローラの[参照設定]ノードの上で右クリックする

Page 9: ディープラーニング開発キット · ディープラーニング体験ソフトウェアに実装されている機能と近いものを開発した状態となっています。

9

(4) コンテキストメニューの[参照の追加]を選択する

(5) [参照マネージャー]ダイアログボックスにある<参照>を選択する

(6) ダイアログ下部にある<参照>ボタンを押す

Page 10: ディープラーニング開発キット · ディープラーニング体験ソフトウェアに実装されている機能と近いものを開発した状態となっています。

10

(7) ExternalProgram フォルダにある DeepLearningAPI.dll を指定する

(8) ダイアログ上で選択した DLL が表示されていることを確認後、<OK>ボタンを押す

API を利用する場合には、DeepLearningAPI.DeepLearningAPI を生成することで、すべてのパブリック

関数にアクセスが可能となります。

3.3 サンプルプロジェクトの内容

ディープラーニング体験ソフトウェアに実装されている機能と近いものを開発した状態となっています。

API の利用法を知るよいヒントになります。詳しく研究されることをお勧めします。

Page 11: ディープラーニング開発キット · ディープラーニング体験ソフトウェアに実装されている機能と近いものを開発した状態となっています。

11

4 関数一覧

Page 12: ディープラーニング開発キット · ディープラーニング体験ソフトウェアに実装されている機能と近いものを開発した状態となっています。

12

4 関数一覧

開発キットに用意されているパブリック関数の仕様を以下にまとめて記載します。

IsValid

ライセンスの初期化に成功したかどうかを調べます。

宣言:

public bool IsValid();

引数:

なし

戻り値:

ライセンス初期化に成功した場合は true

ライセンス初期化に失敗した場合は false

ClearNetworkInfo

すでにネットワークファイルを読み込み済みの場合は、その内容を初期化します。

宣言:

public void ClearNetworkInfo();

引数:

なし

戻り値:

なし

OpenNetworkFile

ネットワークファイルを読み込みます。

宣言:

public bool OpenNetworkFile(String strFilePath);

引数:

ネットワークファイルのフルパス

戻り値:

読み込みに成功した場合は true

読み込みに失敗した場合は false

SaveNetworkFile

ネットワークの内容をファイルに保存します。ファイル名は、現在のものをそのまま利用します。

宣言:

public bool SaveNetworkFile();

引数:

なし

戻り値:

保存に成功した場合は true

Page 13: ディープラーニング開発キット · ディープラーニング体験ソフトウェアに実装されている機能と近いものを開発した状態となっています。

13

保存に失敗した場合は false

SaveNetworkFileAs

ネットワークの内容をファイルに保存します。ファイル名は、引数として与えたものを利用します。

宣言:

public bool SaveNetworkFileAs(String strFilePath);

引数:

ネットワークファイルのフルパス

戻り値:

保存に成功した場合は true

保存に失敗した場合は false

IsLearningNetworkModified

ネットワークの内容が書き換えられているか調べます。

宣言:

public bool IsLearningNetworkModified();

引数:

なし

戻り値:

変更が加えられている場合は true

変更が加えられていない場合は false

SetLearningNetworkModified

ネットワークの内容が書き換えられているかを現すフラグを設定します。

宣言:

public void SetLearningNetworkModified(bool bModified);

引数:

ネットワークの内容が書き換えられている場合は true

ネットワークの内容が書き換えられていない場合は false

戻り値:

なし

GetFileName

読み込み済みのネットワークファイルのフルパスを取得します。

宣言:

public String GetFileName();

引数:

なし

戻り値:

読み込み済みのネットワークファイルのフルパス

Page 14: ディープラーニング開発キット · ディープラーニング体験ソフトウェアに実装されている機能と近いものを開発した状態となっています。

14

GetLearningNetworkInputColCount

ネットワークに入力する行列の列数を取得します。

宣言:

public int GetLearningNetworkInputColCount();

引数:

なし

戻り値:

ネットワークに入力する行列の列数

GetLearningNetworkInputRowCount

ネットワークに入力する行列の行数を取得します。

宣言:

public int GetLearningNetworkInputRowCount();

引数:

なし

戻り値:

ネットワークに入力する行列の行数

GetLearningNetworkMiniBatchSize

ディープラーニング計算を行う際の、ミニバッチサイズを取得します。

宣言:

public int GetLearningNetworkMiniBatchSize();

引数:

なし

戻り値:

ディープラーニング計算を行う際の、ミニバッチサイズ

InitializeCalculation

教師データのロード、画像ファイルのロード、さらに各人工ニューロンに与えているウェイトの初期化を

行います。

宣言:

public bool InitializeCalculation(bool bIsImageInput);

引数:

入力データが画像ファイルの場合は true

入力データが行列ファイルの場合は false

戻り値:

初期化に成功した場合は true

初期化に失敗した場合は false

GetLastError

Page 15: ディープラーニング開発キット · ディープラーニング体験ソフトウェアに実装されている機能と近いものを開発した状態となっています。

15

最後に発生したエラーの内容を現す文字列を取得します。

宣言:

public String GetLastError();

引数:

なし

戻り値:

最後に発生したエラーの内容を現す文字列

DoUseMiniBatch

ディープラーニングの際、ミニバッチを利用するかどうかのフラグを取得します。

宣言:

public bool DoUseMiniBatch();

引数:

なし

戻り値:

ミニバッチを利用する場合は true

ミニバッチを利用しない場合は false

GetInputFileNameList

ディープラーニングの対象とする入力ファイルの名称をリストで取得します。

宣言:

public List<String> GetInputFileNameList();

引数:

なし

戻り値:

ディープラーニングの対象とする入力ファイルの名称リスト

SetSumError

ディープラーニングの順方向計算が終わった後の、教師データとの間の誤差を合計した値を設定します。

宣言:

public void SetSumError(double dSumError);

引数:

順方向計算を終えた後の誤差合計

戻り値:

なし

SelectDropOutItems

ディープラーニングの順方向計算の前に、ドロップアウトすべき要素を選択します。ネットワークファイ

ルに与えたドロップアウト率が 0 の場合は、ドロップアウトを行いません。

宣言:

Page 16: ディープラーニング開発キット · ディープラーニング体験ソフトウェアに実装されている機能と近いものを開発した状態となっています。

16

public void SelectDropOutItems();

引数:

なし

戻り値:

なし

SelectMiniBatch

ディープラーニングの順方向計算の前に、ミニバッチとして選択すべき画像ファイルを確定します。画像

フォルダに含まれる画像ファイルの数がミニバッチサイズよりも少ない場合、ミニバッチ処理は行いません。

宣言:

public void SelectMiniBatch();

引数:

なし

戻り値:

なし

FindThisTeachingData

指定した入力ファイルに対する教師データが存在するか調べます。

宣言:

public bool FindThisTeachingData(String strInputFileName);

引数:

入力ファイル名

戻り値:

対応する教師データが存在する場合は true

対応する教師データが存在しない場合は false

IsIncludedInMiniBatch

指定したインデックスの画像ファイルがミニバッチに含まれるか調べます。

宣言:

public bool IsIncludedInMiniBatch(int nIndex);

引数:

画像ファイルのインデックス

戻り値:

ミニバッチに含まれる場合は true

ミニバッチに含まれない場合は false

DoDeepLearningCalculationForThisInput

指定した入力ファイルに対して、ディープラーニング計算を実行します。

宣言:

public bool DoDeepLearningCalculationForThisInput(String strInputFileName, bool

Page 17: ディープラーニング開発キット · ディープラーニング体験ソフトウェアに実装されている機能と近いものを開発した状態となっています。

17

bIsImageInput);

引数:

入力ファイルのパス

入力ファイルが画像か

戻り値:

計算に成功した場合は true

計算に失敗した場合は false

GetSumError

ディープラーニングの順方向計算が終わった後の、教師データとの誤差を合計した値を取得します。

宣言:

public double GetSumError();

引数:

なし

戻り値:

順方向計算が終わった後の、教師データの誤差合計

GetOverflowLayerIDList

人工ニューロンのパラメータがオーバーフローしている層のインデックスをリストで取得します。

宣言:

public List<int> GetOverflowLayerIDList();

引数:

なし

戻り値:

人工ニューロンのパラメータがオーバーフローしている層のインデックスリスト

SetDoInitializeWeight

ディープラーニングを開始する前に、人工ニューロンに含まれるウェイトを初期化するかを設定します。

宣言:

public void SetDoInitializeWeight(bool bDoInitializeWeight);

引数:

初期化を行う場合は true

初期化を行わない場合は false

戻り値:

なし

InitializeImageFileInfoForThisImageFile

指定した画像ファイルに対する初期化を実施します。

宣言:

public bool InitializeImageFileInfoForThisImageFile(String strFileName, RectangleF

Page 18: ディープラーニング開発キット · ディープラーニング体験ソフトウェアに実装されている機能と近いものを開発した状態となっています。

18

imageRect);

引数:

画像ファイル名

ディープラーニングの対象とする画像の範囲を表す四角形

戻り値:

初期化に成功した場合は true

初期化に失敗した場合は false

InitializeInputMatrixFileInfoForThisInputMatrixFile

指定した入力行列ファイルに対する初期化を実施します。

宣言:

public bool InitializeInputMatrixFileInfoForThisInputMatrixFile(String strFileName);

引数:

入力行列ファイル名

戻り値:

初期化に成功した場合は true

初期化に失敗した場合は false

RecognizeThisInputFile

ディープラーニングが完了したネットワークに、入力ファイルを与え、順方向計算による結果を求めます。

宣言:

public bool RecognizeThisInputFile(String strFileName , bool bIsImageInput);

引数:

入力ファイル名

戻り値:

計算に成功した場合は true

計算に失敗した場合は false

GetOutputMatrixCount

出力行列の数を取得します。

宣言:

public int GetOutputMatrixCount();

引数:

なし

戻り値:

出力行列の数

IsNullOutputMatrix

指定したインデックスの出力行列が空行列であるか調べます。

宣言:

Page 19: ディープラーニング開発キット · ディープラーニング体験ソフトウェアに実装されている機能と近いものを開発した状態となっています。

19

public bool IsNullOutputMatrix(int nIndex);

引数:

出力行列のインデックス

戻り値:

空である場合は true

空でない場合は false

GetColCountForThisOutputMatrix

指定したインデックスの出力行列の列数を取得します。

宣言:

public int GetColCountForThisOutputMatrix(int nIndex);

引数:

出力行列のインデックス

戻り値:

指定した出力行列の列数

GetRowCountForThisOutputMatrix

指定したインデックスの出力行列の行数を取得します。

宣言:

public int GetRowCountForThisOutputMatrix(int nIndex);

引数:

出力行列のインデックス

戻り値:

指定した出力行列の行数

GetValueForThisOutputMatrix

指定したインデックスの出力行列の成分値を取得します。

宣言:

public double GetValueForThisOutputMatrix(int nIndex, int nCol, int nRow);

引数:

出力行列のインデックス

成分値を得る列インデックス

成分値を得る行インデックス

戻り値:

指定した出力行列の指定した行および列における成分値

SetInputFilesFolder

入力ファイルを配置しているフォルダーを設定します。

宣言:

public void SetInputFilesFolder(String strInputFilesFolder);

Page 20: ディープラーニング開発キット · ディープラーニング体験ソフトウェアに実装されている機能と近いものを開発した状態となっています。

20

引数:

新しい画像フォルダーのパス文字列

戻り値:

なし

CreateInputFileNameList

ロード対象とする入力ファイルのリストを作成します。入力ファイルフォルダーに配置されたファイル群

に対して一括で認識を行う前に呼び出してください。

ディープラーニングを行う前には、InitializeCalculation を呼び出すことで、入力ファイルのリストが作

成されます。そのため、本関数を呼び出す必要はありません。

宣言:

public bool CreateInputFileNameList(bool bLearning , bool bIsImageInput);

引数:

ディープラーニングを行おうとしている場合は true

ディープラーニングを行おうとしていない場合は false

戻り値:

関数呼び出しに成功した場合は true

関数呼び出しに失敗した場合は false

GetLearningNetworkLayerCount

ディープラーニング用ネットワークに含まれるレイヤーの数を取得します。

宣言:

public int GetLearningNetworkLayerCount();

引数:

なし

戻り値:

ディープラーニング用ネットワークに含まれるレイヤーの数

Page 21: ディープラーニング開発キット · ディープラーニング体験ソフトウェアに実装されている機能と近いものを開発した状態となっています。

21

5 お問い合わせ方法

Page 22: ディープラーニング開発キット · ディープラーニング体験ソフトウェアに実装されている機能と近いものを開発した状態となっています。

22

5 お問い合わせ方法

本製品につき質問がある場合は、以下までお問い合わせください。

[email protected]

なお、サポート契約をいただいていない場合、技術的なご質問にはお答えできませんので、予めご了承くださ

い。