Python

EfficientNet

誤認識した麻雀牌を教師データにする|推論結果から再学習する

前回は、YOLOとEfficientNetを使ってカメラ映像から麻雀牌を推論し、推論に使った牌画像を保存しました。今回は、その画像を人間が確認して、correct(正解)miss(不正解)へ仕分けし、次の再学習に使えるDatasetを作成し...
EfficientNet

YOLOとEfficientNetで麻雀牌を推論する|カメラ映像から二段階分類する

前回は、train_main.pyを使ってStage1とStage2をまとめて学習し、class4.pthmanzu.pthpinzu.pthsouzu.pthjihai.pthの5つのEfficientNetモデルを作成しました。今回は、...
EfficientNet

麻雀牌の画像分類モデルを学習して精度を確認する|Stage1・Stage2をまとめて学習

前回は、ImageClassifierTrainerを作り、EfficientNet-B0を学習する処理を実装しました。今回は、そのTrainerを使ってStage1とStage2のモデルをまとめて学習します。最終的に作成するモデルは、cl...
EfficientNet

EfficientNet-B0で麻雀牌を学習する|PyTorch・timmで転移学習

前回は、麻雀牌画像をPyTorchから読み込むためのMahjongDatasetを作りました。今回は、そのDatasetを使ってEfficientNet-B0を実際に学習する処理を作ります。今回使用するコードは次のファイルです。traine...
EfficientNet

麻雀牌を二段階で画像分類する|4分類→牌種類分類のDatasetを作る

前回は、EfficientNetで学習するための牌画像を用意し、回転・位置ずれ・明るさ変更などのデータ拡張を行いました。今回は、その画像をPyTorchから読み込むためのDataset クラスを作ります。今回のポイントは、単に画像ファイルを...
EfficientNet

画像分類・EfficientNetの学習データを作る|画像分割とデータ拡張

前回は、YOLOで検出した麻雀牌をEfficientNetで分類する全体の流れを紹介しました。今回は、そのEfficientNetに学習させるためのデータセット作りを進めます。画像分類モデルを作るときは、ただ牌画像を集めるだけでは足りません...
EfficientNet

麻雀牌を画像分類する方法|YOLO検出後にEfficientNetで牌種類を判定する

前回までのYOLO編では、カメラ画像から麻雀牌を検出するモデルを作ってきました。今回からは、検出した牌が「一萬なのか」「五筒なのか」「東なのか」といった牌の種類を判定する画像分類を作っていきます。画像分類にはEfficientNet-B0を...
YOLO

Ultralytics YOLOを学習する|YAML設定から推論まで

前回は、切り出した牌画像と4点アノテーションしたベース画像を使って、YOLOの学習データを自動生成するプログラムを作りました。ここまでで、画像を撮影↓矩形アノテーション↓牌画像を切り出す↓ベース画像を4点アノテーション↓YOLO学習データを...
YOLO

YOLO学習データを自動生成する|射影変換・ラベル生成・データ拡張をまとめて自動化

前回は、牌画像を貼り付けるベース画像に対して、牌を配置したい場所を4点でアノテーションするツールを作りました。ここまでで、撮影画像↓矩形アノテーション↓牌画像を切り出す↓ベース画像の牌配置領域を4点アノテーションまで準備できました。今回は、...
YOLO

射影変換用の4点アノテーションツールをPythonで作る|ベース画像の牌配置領域を指定する

前回は、YOLOの矩形アノテーションをもとに、元画像から麻雀牌を1枚ずつ切り出しました。今回は、その切り出した牌画像を貼り付けるために、ベース画像側の牌配置領域を4点でアノテーションするツールを作ります。通常であれば、画像を撮影↓矩形アノテ...