EbinaKai / Sichiribe

仙台高専卒業研究の7セグメント表示機のデータを抽出するためのプログラムです。
MIT License
0 stars 0 forks source link
Sichiribe icon

Sichiribe

7-Segment display Analyzer for JunLab 2024

ReleasesFeaturesInstallationReferencesLicense

Python Tensorflow PySide opencv License

Build Status

概要

7セグメント表示器が示したデータをシリアル等で読み取れない場合のために、メータの表示状態を録画し、そこからデータを取り出すためのプログラムを作成した。

仕様

インストール

仮想環境の作成等はMacOS・Linuxに準拠するため、Windowsで実行する際などは適宜読み替えてほしい。
また、Linux環境以外で tflite-runtime を用いたい場合は こちら を参照するとよい。

# リポジトリのクローン
git clone https://github.com/EbinaKai/Sichiribe.git
cd Sichiribe

# 仮想環境の作成
python3 -m venv env

# 仮想環境の有効化
source ./env/bin/activate

# ライブラリのインストール
python3 -m pip install --upgrade pip
pip install -r requirements.txt

モデルの用意

学習済モデルは、Github | Release v0.1.1 または Github | Release v0.1.2 においてあるので、そこからダウンロードして model/ フォルダを作成して設置する。

mkdir model

# tensorflow を使用する場合
curl -L -o model/model_100x100.keras https://github.com/EbinaKai/Sichiribe/releases/download/v0.1.1/model_100x100.keras

# tflite-runtime を使用する場合
curl -L -o model/model_100x100.tflite https://github.com/EbinaKai/Sichiribe/releases/download/v0.1.2/model_100x100.tflite

使い方

ファイル構造

ファイル 説明
app.py GUIアプリケーションの起動
live.py 外部カメラからライブ解析
replay.py 動画ファイルから解析
cores/common.py コアな汎用的な機能の関数詰め合わせ
cores/capture.py カメラにアクセスする機能
cores/frame_editor.py 動画のフレームに関する機能及び7セグメント表示器の領域選択機能
cores/detector.py 7セグ表示器から数字を推測するプログラムの親クラス
cores/cnn.py CNNモデルを用いて画像から数字を取得するプログラムのコア部分
cores/cnn.py CNNモデルをTensorflowのフルバージョン(.kerasモデル)で動かす場合
cores/cnn_lite.py CNNモデルをtflite-runtime(.tfliteモデル)で動かす場合
cores/exporter.py 取得した結果を任意の形式で出力・保存する機能
train/train.py CNNモデルを学習させるプログラム
train/conv_keras2tf.py Kerasモデルをtflite形式に変換するプログラム
gui/utils/common.py GUI用の汎用的な機能の関数詰め合わせ
**gui**/utils/router.py GUIの各ページのルーティング関数
gui/utils/screen_manager.py GUIの各ページの管理クラス
gui/views/splash_view.py GUI起動後のスプラッシュ画像
gui/views/main_view.py メインページ。この中に各ページをラップする
gui/views/menu_view.py ライブ解析・動画ファイル解析を選択
gui/views/log_view.py ログの表示画面
gui/views/region_select_view.py 7セグメント表示機の領域選択画面
gui/views/live_setting_view.py ライブ解析の設定画面
gui/views/live_feed_view.py ライブ解析のカメラ画角確認画面
gui/views/live_exe_view.py ライブ解析の処理画面。推論結果のグラフと7セグ画像が表示される
gui/views/replay_setting_view.py 動画ファイル解析の設定画面
gui/views/replay_threshold_view.py 2値化のしきい値を設定
gui/views/replay_exe_view.py 動画ファイル解析の処理画面。推論結果のグラフが表示される
gui/workers/live_feed_worker.py ライブ解析のカメラ画角確認のバックグランド処理
gui/workers/live_detect_worker.py ライブ解析の推論のバックグランド処理
gui/workers/frame_devide_worker.py 動画ファイル解析のフレーム分割のバックグランド処理
gui/workers/replay_detect_worker.py 動画ファイル解析の推論のバックグランド処理
gui/widgets/mpl_canvas_widget.py グラフを表示するウィジェット
sample/* テスト用ファイル

モデル学習

CNNモデルを学習させるためには以下のプログラムを実行する。 参考にしたサイトは ここ
上記サイトからデータセットも落としてこれるので、学習前にダウンロードしたあとに zip を解凍してプロジェクトフォルダに追加すること。また、カスタムデータセットを作成した際は、一文字ごとに分割して PNG形式で保存するとプログラムを改変せずに実行できる。

# 学習(ファイル内のパラメーターを調整してから実行)
python cnn/train.py

# 軽量モデルに変換
python cnn/conv_keras2tf.py

参考資料

ライセンス

このプロジェクトは MIT ライセンスのもとで公開されています。詳細については、LICENSE.txt ファイルをご覧ください。