【PyTorch】画像を「局所関数空間」へ写像して高精度分類するアーキテクチャ「vfcai」を作った話
こんにちは!今回は、画像をピクセル配列のままではなく**「局所関数空間(Boundary Function Space)」**へと一度写像し、その空間表現をベースに画像の再構成・可視化および多クラス分類を行う実験的機械学習アーキテクチャ vfcai についてご紹介します。
リポジトリはこちら:
👉 mr-eight-8shi/vfcai
💡 vfcai のコアアイデア
一般的なCNNやViTとは異なり、本システムは画像を**「局所的な線形関数のパラメータ群」**へと変換します。
具体的には、周辺コンテキスト($9 \times 9$)を考慮しながら、中央局所領域($3 \times 3$)ごとに以下の線形関数パラメータ(境界ベクトル)を推定します。
$$f(x, y) = dx \cdot x + dy \cdot y + \text{offset}$$
各パッチは学習済みフィルターを通すことで、以下の 5チャネルの空間関数マップ へと写像されます。
- 存在確率 (Presence Score) ($\sigma(\text{logit})$)
- 方向 X ($dx$)
- 方向 Y ($dy$)
- 符号付きオフセット (Offset / SDF)
- 信頼度 ($\sqrt{dx^2 + dy^2}$)
この5チャネルの関数表現から、元画像の構造を保持した状態での再構成も可能です。
🛠️ システムアーキテクチャとパイプライン
処理の流れは大きく分けて3つのパイプラインで構成されています。
[① BinaryModelTrainer]
├─ 周辺コンテキスト(9x9)と中央局所空間(3x3)を用いた境界フィルターの訓練
└─ 空間的な境界パラメータ(方向ベクトル、符号付きオフセット、存在確率)の学習
│
▼ (入力:5チャネル空間関数マップによる写像)
[② BoundaryFieldCNN Classifier]
├─ 局所関数空間マップの生成とキャッシュ (float16)
└─ 局所関数空間を入力とするCNN分類器の実行
│
▼ (推論と評価)
[③ 可視化・評価パイプライン]
└─ クラス別精度レポートおよび 2-in-1 の関数再構築グリッドの生成
モジュール仕様
- 統合境界回帰モデル (
BinaryModelTrainer)
- 入力: 周辺コンテキストを含む $9 \times 9 \times 3$ パッチ。
- Output: 中央 $3 \times 3$ 領域の存在ロジット、正規化方向ベクトル ($v_x, v_y$)、符号付き境界オフセット。
- 5チャネル境界フィールドCNN分類器 (
BoundaryFilteredImageClassifier)
- 抽出された5チャネルの関数マップを入力として受け取り、頑健な分類を行うCNN。
🏆 評価結果
統一パイプラインを用いて、MNIST および Fashion-MNIST を対象に分類タスクの評価を行いました。
- Training data: 1,000 samples / class (20 classes total across MNIST & Fashion-MNIST)
| Dataset | Accuracy |
|---|---|
| MNIST (Classes 0–9) | 99.20% |
| Fashion-MNIST (Classes 10–19) | 92.00% |
「局所関数空間のみを入力としたCNN」という構成でありながら、形状の近い服のクラス等が混ざる Fashion-MNIST でも 92.0% という高い分類精度を達成しています。
🔍 2-in-1 関数再構築と可視化
ビジュアライザーパイプライン (vfcai visual) により抽出されたベクトル場から、元画像と関数再構築マップ ($\tanh(dx \cdot x + dy \cdot y + \text{offset}) \times \text{presence}$) を対比させた 2-in-1 グリッドを出力できます。
🚀 導入と使い方
1. インストール
Hatchlingを使用して、ローカル環境に editable モードでインストールします。
pip install -e .
2. CLI の使用方法
インタラクティブな端末インターフェースの起動:
vfcai
または、各アクションを直接実行:
# 1. 境界の存在/回帰フィルタの訓練と評価
vfcai train
# 2. 5チャネル境界フィールドCNN分類器の訓練
vfcai classify --samples 300
# 3. 保存された分類器の評価
vfcai evaluate
# 4. 2-in-1の関数再構築グリッドと可視化の生成
vfcai visual
# 9. ワークスペースディレクトリのリセット
vfcai init
🔮 今後の展望・課題
-
情報圧縮率の検証
ストライド幅を変更した場合の分類精度への影響を検証し、少数の連続的な関数群による高効率な情報圧縮の仕組みを模索します。 -
少数データ(Few-Shot)学習の強化
幾何学的・構造的制約を持つ境界認識フィルターを利用した、少データ環境での高精度な関数復元と分類の検証。
お読みいただきありがとうございました!
仕組みや実装に興味を持たれた方は、ぜひ GitHub リポジトリ(mr-eight-8shi/vfcai)をチェック・スターしていただけると嬉しいです!



