引き継いだ DeepTIAS v2.7 の技術構成を記録し,今後の開発で使う技術を定める.
既存アプリの保守が目的のため,言語・フレームワークは現行を維持し,新規に選定するのは開発環境とテスト基盤のみとする.
| 項目 | 採用技術 | 備考 |
| 言語 | C#(7.3) | .NET Framework 4.8 の既定バージョン |
| フレームワーク | .NET Framework 4.8 | 旧形式の csproj(SDK 形式ではない) |
| UI | Windows Forms | 画面は Form1 の 1 画面のみ |
| 対象プラットフォーム | Windows x64 | ネイティブ DLL が x64 のため |
| パッケージ管理 | NuGet(packages.config) | PackageReference への移行は行わない |
| ライブラリ | バージョン | 用途 |
| OpenCvSharp4(+ Extensions,runtime.win) | 4.9.0.20240103 | 画像の読み書き・二値化・輪郭検出・描画 |
| TensorFlowSharp | 1.15.1 | 舌検出モデル(Detection_Normal.pb)の推論 |
| Microsoft.ML.OnnxRuntime | 1.9.0 | 舌領域抽出モデル(ResUNet.onnx)の推論 |
- ※ Microsoft.ML(1.6.0 一式),Newtonsoft.Json,OpenCvSharp.WpfExtensions,OpenCvSharp.Blob 等はコードから使われていないため,コード整理で参照を削除する.
| ファイル | 形式 | 用途 |
models/Detection_Normal.pb | TensorFlow(Object Detection API) | 舌の矩形検出(入力 256×256) |
models/ResUNet.onnx | ONNX(PyTorch 1.10 から出力) | 舌領域のセグメンテーション(入力 1×3×256×256) |
models/ResUnet_0.9518.pb | ONNX(拡張子は .pb,PyTorch 1.8 から出力) | 未使用.旧版の ResUNet と思われる |
- ※ モデルは Git LFS で管理する(
.gitattributes で *.pb・*.onnx を対象にしている).
ソースコードが無く,ビルド済みのまま使うもの.Git LFS で管理する.
| ファイル | 種類 | 用途 | 注意点 |
RemoveSmallRegionDLL.dll | ネイティブ DLL(C++) | 二値画像の小領域除去 | OpenCV 3.2(opencv_world320.dll)に依存 |
TongueAnalysisDLL.dll | ネイティブ DLL(C++) | 宣言のみで未使用 | デバッグビルド |
python/TongueFeatures.exe | PyInstaller で exe 化した Python | 色統計量・GLCM 特徴量の算出 | 約 116 MB |
rgb2lab/TongueAnalysis.exe | ネイティブ exe(C++) | カラーチャートによる色補正(L*a*b* 変換) | デバッグビルド.VC++ のデバッグ用ランタイムが必要 |
| 項目 | 採用技術 | 備考 |
| OS | Windows 11 | |
| ビルドツール | Visual Studio Build Tools 2022 | ワークロード「.NET デスクトップ ビルド ツール」「C++ ビルド ツール」 |
| IDE | 必須にしない(エディタは任意.VS Code 等) | 画面(Form1.Designer.cs)を編集するときだけ Visual Studio 2022 Community を追加する |
| ビルド | MSBuild(Build Tools 付属) | コマンドラインで msbuild を使う |
| NuGet 復元 | msbuild -t:restore -p:RestorePackagesConfig=true | nuget.exe を別途入れずに済む |
| テスト | MSTest | .NET Framework 4.8 のテストプロジェクトとして作る |
| バージョン管理 | Git + Git LFS,GitHub | |
- Visual Studio Build Tools 2022 を採用し,IDE は必須にしない.開発計画(PLAN_02)の作業はビルド・実行・テストで足り,画面のレイアウトを変える作業が無いため.
- 「C++ ビルド ツール」ワークロードも入れる.
rgb2lab\TongueAnalysis.exe がデバッグビルドで,VC++ のデバッグ用ランタイム(MSVCP140D.dll・ucrtbased.dll 等)が無いと起動しないため.このワークロードを入れると,デバッグ用ランタイムが C:\Windows\System32 に入ることを確認した.
- ※ デバッグ用ランタイムは単体では配布されておらず,ライセンス上リポジトリに入れて再配布することもできない.
- ※ 画面の見た目を変えるとき(WinForms デザイナが要るとき)や,ブレークポイントを使ったデバッグをしたいときは,Visual Studio 2022 Community を追加で入れる(Build Tools と共存できる).
- MSTest を採用する.Visual Studio 系の標準のテストフレームワークで,Build Tools 付属のテスト実行環境でも動き,後任の学生も追加の知識なしで使えるため.
- 主なテストは回帰テストとする.旧ビルドで出した
analysis.csv を正解とし,整理後のコードで同じ入力を解析した結果が一致するかを確認する.
- .NET Framework 4.8 から .NET 8 以降への移行は行わない(TensorFlowSharp が .NET Framework 向けで,移行すると推論部分の作り直しが必要になるため).
- 外部バイナリは作り直さずにそのまま使う.