画像研合宿2022 Team DのRepoです.
取り組みコンペはこちら
上図の5種類の魚を計上するアルゴリズムを開発するコンペです.
# tree -L 1
.
├── LICENSE
├── README.md
├── algorithms # 重要: ここに各種アルゴリズム・モデルのコードがある
├── args.py # main.pyの受け取る引数を定義 (configファイルの設定に関わる)
├── common # コード中の共通な処理はここへ
├── configs # mainのconfigファイルの置き場 (mmdetモデルのconfigファイルもここへ)
├── data # ドライブからダウンロードしたデータはここに展開
├── data.py # データローダの定義
├── main.py # エントリーポイント
├── notebooks # 実験用ノートブック (新しいことを試した時はぜひこちらで!)
├── requirements.txt
├── results # 実行結果を出力する場所
├── run.sh # main.pyを実行するスクリプト
├── tests # 各種テスト
└── train.py # モデル学習をする場合に使う
学習・検証データ(ドライブにある正解つきテスト画像)はdata/
に展開してください。詳しくはこちらへ。
基本的にはpythonの仮想環境(conda/venv)で作業することをおすすめします.
手順としてはmmdetをインストールして, その他のパッケージにはrequirements.txtを使います.
公式サイトからインストールしてください.
NVIDIAのGPUがある人はCUDA11.3のものを, CPUのみの人はCPU onlyのものを.
pip install -U openmim
mim install mmcv-full
pip install mmdet
pip install -r requirements.txt
まずは学習済みの重みファイルをweights/
下に配置します.
詳しくはこちら.
ダウンロードができたら早速実行じゃ!
python main.py -c configs/baseline.ini
するとresults/
下に推論結果とcsvファイルができるはず!!
できなければorエラーが起きたらこちらのissueにエラー文と一緒にコメントしてくれれば対応します.
ちょっとした開発ルールを設けます. ブランチは主にdevelop
から切ってください, developにはみなさんの動くコード(統合版)がmergeされます. main
ブランチはアルコンに提出するコードにしましょう. 開発を始める第一歩は以下のコマンド.
git pull
git checkout develop
git checkout -b {新しく作るブランチ名}
基本的にはここで作業してもらって, 終わったらremoteにpush(同名のブランチで).
初回push時はまだremote repositoryにlocalで作成したbranchがないので以下のコマンドでremoteにも作れてlocalの同ブランチをtrackできます.
git push --set-upstream origin {あなたのブランチ名}
もちろんこのあとは通用のpushで行けます.
切りが良いところでdevelopに向けてのプルリクエストを出してください.
プルリクがmergeされたブランチは消して, 次のタスクは新しくdevelop
からブランチを作成しましょう.
ちなみにブランチ名のネーミングルールを敢えて決めるならこんな感じでしょう.
{あなたの名前}/{タスクの説明}
例) git checkout -b pragyan/update-readme
例) git checkout -b pragyan/5-create-model # タスクがissueにある場合は先頭にタスク番号入れると良いでしょう.
その他のbest practices (個人的なやつ)はこちらにまとめてあります.
学習用のデータセットはここから欲しいProblem_*のものをexportする. exportの設定は以下の通り.
項目 | 値 |
---|---|
Export format | COCO 1.0 |
Save images | チェックする |
COCOフォーマット(annotationとimages)でdata/train に配置. |
data/train/
├── annotations
└── images
configs/
内にconfigファイルをおけばok.
configファイルの作り方はconfigs/faster_rcnn_r50_fpn.py
をご参照くださいませ.
python train.py configs/faster_rcnn_r50_fpn.py
重みファイルはデフォルトではwork_dir/
内に作られます. 学習した重みファイルはユニークな名前をつけてweights/
に保存しましょう (あとはドライブにアップロードしてメンバーに知らせましょう)
アルゴリズムで使うときはweeights/重みファイル名.pth
パスをconfigで設定します.
test_predict.pyの中身みて適当にいじってください.
python tests/test_predict.py