ディープラーニング開発キット ·...
TRANSCRIPT
ディープラーニング開発キット
ユーザーマニュアル
2020 年 3 月 3 日
株式会社リアリニット
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
3
1 はじめに
4
1 はじめに
本キットは、ディープラーニングを活用したシステムを開発するための基礎として利用できます。
ディープラーニングが行えるソフトウェア製品はたくさんありますが、ネットワークの設計だけでもプログラ
ミングが必要な製品が多く、十分な専門知識がない方には敷居が高いのが現状です。本キットでは、ネットワー
ク設計についてはプログラミング不要としており、独自のソフトウェアの開発に手軽に進んでいただくことがで
きます。
ディープラーニングに関連した専門用語がたくさんあり、初めて取り組む方に敷居を高く感じさせる一因とな
っているかもしれません。当社で配布している、ディープラーニング体験ソフトウェアには、わかりやすいマニ
ュアルを添付しており、専門用語をわかりやすく説明しています。詳しい説明はそちらに譲り、本マニュアルで
は、専門用語の説明は最低限としていますので、その点了解いただければと思います。
本ソフトウェアが、ディープラーニングに手軽に取り組みたい方の助けとなるようであれば、うれしく存じま
す。
5
2 インストール方法
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 を起
動し、得られた情報を当社までお伝えください。ライセンスを購入いただいていることを確認後、ライセン
スファイルをお送りします。これを実行プログラムのフォルダに配置してください。
7
3 操作方法
8
3 操作方法
3.1 前提条件
Microsoft 社製品である、Visual Studio 2019 を利用する場合を想定して、本キットの使い方を説明しま
す。
本キットは、API をまとめた DLL を呼び出すことで、開発キットの利用ができるように設計されていま
す。したがって、開発言語も自由に選べますが、ここでは、Visual C#を使用する場合を想定して、以下の説
明を行います。
3.2 プロジェクトの作成
以下の操作で、新しいプロジェクトを作成します。
(1) メインメニューの[ファイル]-[新規作成]-[プロジェクト]を選ぶ
[新しいプロジェクト]ダイアログボックスが開きます。
(2) 作成したいプロジェクトの種類と、ファイルを配置したい場所を選択し、<OK>ボタンを押す
ここでは、Visual C#のテンプレートに含まれる、Windows フォームアプリケーションを選んでいま
す。
(3) ソリューションエクスプローラの[参照設定]ノードの上で右クリックする
9
(4) コンテキストメニューの[参照の追加]を選択する
(5) [参照マネージャー]ダイアログボックスにある<参照>を選択する
(6) ダイアログ下部にある<参照>ボタンを押す
10
(7) ExternalProgram フォルダにある DeepLearningAPI.dll を指定する
(8) ダイアログ上で選択した DLL が表示されていることを確認後、<OK>ボタンを押す
API を利用する場合には、DeepLearningAPI.DeepLearningAPI を生成することで、すべてのパブリック
関数にアクセスが可能となります。
3.3 サンプルプロジェクトの内容
ディープラーニング体験ソフトウェアに実装されている機能と近いものを開発した状態となっています。
API の利用法を知るよいヒントになります。詳しく研究されることをお勧めします。
11
4 関数一覧
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
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();
引数:
なし
戻り値:
読み込み済みのネットワークファイルのフルパス
14
GetLearningNetworkInputColCount
ネットワークに入力する行列の列数を取得します。
宣言:
public int GetLearningNetworkInputColCount();
引数:
なし
戻り値:
ネットワークに入力する行列の列数
GetLearningNetworkInputRowCount
ネットワークに入力する行列の行数を取得します。
宣言:
public int GetLearningNetworkInputRowCount();
引数:
なし
戻り値:
ネットワークに入力する行列の行数
GetLearningNetworkMiniBatchSize
ディープラーニング計算を行う際の、ミニバッチサイズを取得します。
宣言:
public int GetLearningNetworkMiniBatchSize();
引数:
なし
戻り値:
ディープラーニング計算を行う際の、ミニバッチサイズ
InitializeCalculation
教師データのロード、画像ファイルのロード、さらに各人工ニューロンに与えているウェイトの初期化を
行います。
宣言:
public bool InitializeCalculation(bool bIsImageInput);
引数:
入力データが画像ファイルの場合は true
入力データが行列ファイルの場合は false
戻り値:
初期化に成功した場合は true
初期化に失敗した場合は false
GetLastError
15
最後に発生したエラーの内容を現す文字列を取得します。
宣言:
public String GetLastError();
引数:
なし
戻り値:
最後に発生したエラーの内容を現す文字列
DoUseMiniBatch
ディープラーニングの際、ミニバッチを利用するかどうかのフラグを取得します。
宣言:
public bool DoUseMiniBatch();
引数:
なし
戻り値:
ミニバッチを利用する場合は true
ミニバッチを利用しない場合は false
GetInputFileNameList
ディープラーニングの対象とする入力ファイルの名称をリストで取得します。
宣言:
public List<String> GetInputFileNameList();
引数:
なし
戻り値:
ディープラーニングの対象とする入力ファイルの名称リスト
SetSumError
ディープラーニングの順方向計算が終わった後の、教師データとの間の誤差を合計した値を設定します。
宣言:
public void SetSumError(double dSumError);
引数:
順方向計算を終えた後の誤差合計
戻り値:
なし
SelectDropOutItems
ディープラーニングの順方向計算の前に、ドロップアウトすべき要素を選択します。ネットワークファイ
ルに与えたドロップアウト率が 0 の場合は、ドロップアウトを行いません。
宣言:
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
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
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
指定したインデックスの出力行列が空行列であるか調べます。
宣言:
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);
20
引数:
新しい画像フォルダーのパス文字列
戻り値:
なし
CreateInputFileNameList
ロード対象とする入力ファイルのリストを作成します。入力ファイルフォルダーに配置されたファイル群
に対して一括で認識を行う前に呼び出してください。
ディープラーニングを行う前には、InitializeCalculation を呼び出すことで、入力ファイルのリストが作
成されます。そのため、本関数を呼び出す必要はありません。
宣言:
public bool CreateInputFileNameList(bool bLearning , bool bIsImageInput);
引数:
ディープラーニングを行おうとしている場合は true
ディープラーニングを行おうとしていない場合は false
戻り値:
関数呼び出しに成功した場合は true
関数呼び出しに失敗した場合は false
GetLearningNetworkLayerCount
ディープラーニング用ネットワークに含まれるレイヤーの数を取得します。
宣言:
public int GetLearningNetworkLayerCount();
引数:
なし
戻り値:
ディープラーニング用ネットワークに含まれるレイヤーの数
21
5 お問い合わせ方法
22
5 お問い合わせ方法
本製品につき質問がある場合は、以下までお問い合わせください。
なお、サポート契約をいただいていない場合、技術的なご質問にはお答えできませんので、予めご了承くださ
い。