Newer
Older
DeepTIAS / docs / 02_ENV / ENV_01_技術スタック.md

技術スタック (Tech Stack)

引き継いだ DeepTIAS v2.7 の技術構成を記録し,今後の開発で使う技術を定める. 既存アプリの保守が目的のため,言語・フレームワークは現行を維持し,新規に選定するのは開発環境とテスト基盤のみとする.

アプリケーション (Application)

項目採用技術備考
言語C#(7.3).NET Framework 4.8 の既定バージョン
フレームワーク.NET Framework 4.8旧形式の csproj(SDK 形式ではない)
UIWindows Forms画面は Form1 の 1 画面のみ
対象プラットフォームWindows x64ネイティブ DLL が x64 のため
パッケージ管理NuGet(packages.config)PackageReference への移行は行わない

主要ライブラリ (Libraries)

ライブラリバージョン用途
OpenCvSharp4(+ Extensions,runtime.win)4.9.0.20240103画像の読み書き・二値化・輪郭検出・描画
TensorFlowSharp1.15.1舌検出モデル(Detection_Normal.pb)の推論
Microsoft.ML.OnnxRuntime1.9.0舌領域抽出モデル(ResUNet.onnx)の推論
  • ※ Microsoft.ML(1.6.0 一式),Newtonsoft.Json,OpenCvSharp.WpfExtensions,OpenCvSharp.Blob 等はコードから使われていないため,コード整理で参照を削除する.

学習済みモデル (Models)

ファイル形式用途
models/Detection_Normal.pbTensorFlow(Object Detection API)舌の矩形検出(入力 256×256)
models/ResUNet.onnxONNX(PyTorch 1.10 から出力)舌領域のセグメンテーション(入力 1×3×256×256)
models/ResUnet_0.9518.pbONNX(拡張子は .pb,PyTorch 1.8 から出力)未使用.旧版の ResUNet と思われる
  • ※ モデルは Git LFS で管理する(.gitattributes で *.pb・*.onnx を対象にしている).

外部バイナリ (External Binaries)

ソースコードが無く,ビルド済みのまま使うもの.Git LFS で管理する.

ファイル種類用途注意点
RemoveSmallRegionDLL.dllネイティブ DLL(C++)二値画像の小領域除去OpenCV 3.2(opencv_world320.dll)に依存
TongueAnalysisDLL.dllネイティブ DLL(C++)宣言のみで未使用デバッグビルド
python/TongueFeatures.exePyInstaller で exe 化した Python色統計量・GLCM 特徴量の算出約 116 MB
rgb2lab/TongueAnalysis.exeネイティブ exe(C++)カラーチャートによる色補正(L*a*b* 変換)デバッグビルド.VC++ のデバッグ用ランタイムが必要

開発環境 (Development Environment)

項目採用技術備考
OSWindows 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=truenuget.exe を別途入れずに済む
テストMSTest.NET Framework 4.8 のテストプロジェクトとして作る
バージョン管理Git + Git LFS,GitHub

選定理由 (Rationale)

ビルドツールと IDE

  • 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 を正解とし,整理後のコードで同じ入力を解析した結果が一致するかを確認する.

維持するもの・変えないもの (What We Keep)

  • .NET Framework 4.8 から .NET 8 以降への移行は行わない(TensorFlowSharp が .NET Framework 向けで,移行すると推論部分の作り直しが必要になるため).
  • 外部バイナリは作り直さずにそのまま使う.