省略
python -m venv env_inf-notebook
env_inf-notebook/Scripts/Activate
python -m pip install --upgrade pip
pip install -r requirements.txt
python main.pyw
設定ファイルに記述を追加するとmain.pywがマネージモードで走る。
{
"manage": true
}
- スクリーンショットのリアルタイム更新ができる
- スクリーンショット代わりにpngが開ける
- Alt+F10でスクリーンショットを撮ってファイル保存する
- 標準出力がウィンドウに表示される
WindowsのPowerShellで操作する
python generate_version.py v0.0.0.0
pip install cx_Freeze==7.0.0
python setup.py build
リザルト手帳を起動してAlt+F10を押すとスクリーンショットを撮って画像に保存する
収集した画像を使って学習させ、リソースファイルを作成する
- ローディング画面の検出
- リザルト画面(ミッション・ビット獲得のカットインや撃墜の文字が出ていない)の検出
- プレイサイドの認識(1P or 2P)
- ライバル挑戦状が出ているかどうか
- 途中落ちしているかどうか
以上の画像認識の学習を目的とする。
python manage.pyw
python resources_generate_fromraw.py -all
python resources_learning_fromraw.py -all
エラーが出なければOK
resourcesフォルダ内にいくつかのリソースファイルが作成される。
- get_screen.res
- is_savable.res
- rival.npy
- play_side.npy
- dead.npy
- プレイモード(SP or DP)
- 曲名
- 選択中の譜面難易度
- 各譜面難易度のレベル
- クリアランプ・DJレベル・スコア・ミスカウント
python annotation_musicselect.pyw
python resources_learning_musicselect.py
resourcesフォルダ内にリソースファイルが作成される。
- musicselect(バージョン).res
- プロジェクトを作成
- Cloud Storageバケットを作成
- サービスアカウントの作成(accessor)
- ロールを与える(Storage オブジェクト管理者 もしくは ストレージ管理者)
- キーを作成
- pythonライブラリのインストール
pip install google-cloud-storage
- bucket-inf-notebook-informations
譜面難易度・譜面レベル・曲名・ノーツ数の含まれたリザルト画像の切り取り
- bucket-inf-notebook-details
オプション・クリアランプ・DJ LEVEL・スコア・ミスカウントの含まれたリザルト画像の切り取り
- bucket-inf-notebook-resources
認識用のリソースデータ
学習後の最新のリソースをアップロードして、クライアント起動時にチェックして最新版をダウンロードする
リージョンがサウスカロライナ(us-east1)なら無料(のはず)
作成したサービスアカウントのキーをソースに反映させる。
- (方法1)ダウンロードしたファイルを指定する
python generate_service_account_info.py ファイル名.json
- (方法2)base64でエンコードした文字列を引数にする
python generate_service_account_info.py 文字列
- (おまけ)ダウンロードしたファイルをエンコードする
python encode.py ファイル名.json
方法1はローカルでビルドするときに使う
方法2はGitHub上でActionsを利用してビルドするときに使う
おまけでエンコードした文字列をGitHubのAction secretsに追加する(名称: KEYINFO)
設定ファイルで収集を有効化しているときのみ、アップロードが処理される。
{
"data_collection": true
}
Cloud Storage上の画像を全てcollection_data下に保存し、削除する。
python download_collections.py
曲リスト
- 全曲の曲名ソート順の曲リスト
- バージョンごとの曲リスト
- レベルごとの曲リスト
- ビギナーとレジェンダリアの曲リスト
リザルトの詳細
- プレイモード(SP or DP)
- 譜面難易度と☆とノーツ数
- 曲名
- 表示しているグラフ(グルーブゲージorレーンごとDJLEVELor小節ごとの精度)
- 使用オプション(グラフがグループゲージのときのみ)
- クリアランプ・DJレベル・スコア・ミスカウント
- クリアランプ・DJレベル・スコア・ミスカウントのNEW RECORD
選曲
- プレイモード(SP or DP)
- バージョン
- 曲名
- 各譜面のレベル
- 自己ベストのクリアランプ・DJレベル・スコア・ミスカウント
以上の画像認識の学習と全収録曲のリストの作成を目的とする。
registriesフォルダに各種ファイルを作っておく。
- versions.txt バージョンのリスト
- musics.csv 全曲のリスト
- categorycount_versions.csv バージョンカテゴリの各曲数
- categorycount_difficulties.csv 難易度カテゴリの各曲数(BEGINNER,LEGGENDARIA)
- categorycount_levels.csv レベルカテゴリの各曲数
python annotation_musicselect.pyw
python annotation_result.pyw
musics.csvから曲リストを作成して、収集した選曲画面のラベルから各譜面のレベルを取り込む。 アーケードのCSVデータファイルをダウンロードして、 originalscoredata_sp,originalscoredata_dpフォルダにおいておく。 アーケードデータとの収録曲やレベルの比較を行う。 各カテゴリの曲数を照合する。
python resources_generate_musictable.py
python resources_learning_informations.py
python resources_learning_details.py
python resources_learning_musicselect.py
記録を保存するファイルのファイル名に「曲名をエンコードした文字列」を使用している。
そのため曲名の修正があった場合は該当ファイルのファイル名を変更する必要がある。
その定義をresources/musicnamechanges.resに記述する(中身はjson)
[
["♥LOVE2 シュガー→♥", "♥LOVE2 シュガ→♥"]
]
resourcesフォルダに以下ファイルが作成される。
- musictable(バージョン).res
- informations(バージョン).res
- detailss(バージョン).res
- musicselect(バージョン).res
すべての場合
python resources_upload.py -all
指定したリソースファイルのみアップロードする場合
python resources_upload.py -musictable
python resources_upload.py -informations
python resources_upload.py -details
python resources_upload.py -musicselect
python resources_upload.py -musicnamechanges