ButterflyNet — 蝶類分類用軽量CNNの実装と評価

AI/ML

概要

ButterflyNetは蝶の種を分類するために作られたPythonベースの畳み込みニューラルネットワーク実装です。リポジトリはデータの前処理、モデル定義、学習・評価用スクリプト、Grad-CAMによる可視化機能、学習ログやチェックポイントの保存、評価レポートと混同行列の生成など、実務的な実験ワークフローを一通り備えています。設定はconfig.yamlで管理され、requirements.txtで環境を再現できます。READMEでは最高約89%の精度が得られたと報告されており、研究用途やプロトタイピングに適した構成になっています。

GitHub

リポジトリの統計情報

  • スター数: 1
  • フォーク数: 0
  • ウォッチャー数: 1
  • コミット数: 6
  • ファイル数: 10
  • メインの言語: Python

主な特徴

  • データ前処理から学習・評価・可視化まで揃ったエンドツーエンドのワークフロー
  • 軽量なCNNモデル実装(model.py)とハイパーパラメータ管理(config.yaml)
  • Grad-CAMによる注目領域可視化(cam.py)でモデルの解釈性を補助
  • チェックポイント、ログ、評価レポート、混同行列や学習曲線の出力による実験管理

技術的なポイント

ButterflyNetの技術的な要点は、実験の再現性とモデル解釈の両立に重点が置かれている点です。コード構成は典型的な研究プロジェクトに準じ、preprocess.pyでデータのリサイズ、正規化、必要ならデータ拡張(回転・反転など)を行い、前処理済みデータはpre_dataに保存して高速な反復実験を可能にします。model.pyには畳み込みニューラルネットワークが定義されており、簡潔な構造で学習効率を重視した設計が想定されます(READMEでは細部の層構成は明記されていませんが、学習精度89%という報告から適切な層深と正則化が組み合わされていると推測されます)。train.pyはPyTorchベースで、学習ループ、損失計算、最適化手順、チェックポイント保存を管理します。config.yamlで学習率やバッチサイズ、エポック数、デバイス(CUDA)設定などを外部管理でき、同一設定での再実験が容易です。

評価面ではeval.pyが混同行列、分類レポート、精度算出などを行い、outputsフォルダに結果を保存します。cam.pyはGrad-CAM等の手法で入力画像に対するモデルの注目領域を可視化し、判断根拠の可視化や誤分類解析に役立ちます。ログはlogsディレクトリに保存され、学習曲線やメトリクスの追跡が可能です。checkpointsには学習済みの重みが保管されており、中断からの再開や推論用途に利用できます。requirements.txtによる依存管理と、READMEの実行手順(CUDA対応のPyTorch推奨)によりGPUを利用した高速学習が想定されています。総じて、ButterflyNetは実験の再現性、可視化、結果管理をバランスよく備えた実用的なCNNプロジェクトです。

プロジェクトの構成

主要なファイルとディレクトリ:

  • ButterflyClassificationDataset: dir(原始データ格納場所)
  • checkpoints: dir(学習済みパラメータ)
  • config.yaml: file(ハイパーパラメータ・設定)
  • logs: dir(学習ログ)
  • main.py: file(エントリーポイント、全体の実行フロー管理)
  • src/preprocess.py: file(データ前処理。画像サイズ変更、正規化、前処理済みデータ保存)
  • src/model.py: file(CNNモデル定義。畳み込み・活性化・プーリング等の構成)
  • src/train.py: file(学習ループ、最適化、チェックポイント保存)
  • src/eval.py: file(評価用スクリプト、混同行列・精度算出)
  • src/cam.py: file(Grad-CAMによるヒートマップ生成) …他 5 ファイル

ファイルごとの使い方(概略):

  • main.py: config.yamlを読み込み、前処理→学習→評価→可視化の順に処理を呼び出す想定。
  • config.yaml: 学習率、バッチサイズ、エポック数、モデルの保存先、デバイス指定などを記述。
  • checkpoints/*: 指定エポックのモデル重みを保存。推論や再学習に利用。
  • outputs/*: 評価レポート(classification_report、混同行列画像)、学習曲線図、cam結果を格納。

開発者視点の注意点:

  • requirements.txtに記載のPyTorchバージョンはCUDA対応版を推奨。GPU環境での学習が高速。
  • データパスはREADMEの指示に従い、ButterflyClassificationDatasetディレクトリを所定位置に配置。
  • モデル・学習の詳細調整(データ拡張の強度、重み減衰、学習率スケジューラ等)はconfig.yamlやtrain.py内で調整可能。

まとめ

実験再現性と可視化機能を備えた、蝶分類タスク向けの実用的なCNN実装プロジェクト。

リポジトリ情報:

READMEの抜粋:

ButterflyNet项目说明

这是一个用于蝴蝶分类的卷积神经网络设计。经验证,准确率可达到89%.

文件结构

  1. src文件夹下为核心代码文件:
  • preprocess.py为数据预处理
  • model.py为CNN网络
  • train.py为训练脚本
  • eval.py为评估脚本
  • info.py用于打印模型信息
  • cam.py用于生成热力图
  • utils.py为工具函数(与模型本身无关)
  1. checkpoints文件夹下为训练好的参数权重

  2. logs为训练日志

  3. outputs为输出:

  • 包括混淆矩阵、报告和训练曲线
  • 子文件夹cam为热力图
  1. pre_data为预处理后的数据保存

  2. 原始数据保存在./ButterflyClassificationDataset/ButterflyClassificationDataset

运行

  1. 首先确保你的虚拟环境支持,包括一些常用的包,我已经打包在requirements.txt文件中,你可以pip安装,特别注意CUDA支持的pytorch

  2. 将原始数据导入指…