前回まで
OpenCVで牌をトリミングすることを考えていましたが,一般化が難しそうだったので一旦引き上げて別の方法を検討することにしました.そこで上がったのがYOLOです.カスタムデータで学習を行うことができれば,パラメータ調整地獄には陥らないはず.全く触れたことのない分野ですので,調べつつ導入していきます.
YOLO
YOLOは2016年に発表された機械学習アルゴリズム.You Live Only Once(人生1度きり)をもじったYou Look Only Onceが由来とのこと.ユーモラスですね.
YOLOが発表される以前は物体検出を「分類問題」として扱っていたようです.R-CNN(Regions with Convolutional Neural Networks)という手法では上記の画像に見られるような方法で物体を「分類」しています.物体の領域候補を見つけてから,CNN(Convolutional Neural Networks)で特徴抽出し,分類器で分類するという流れです.また,各処理に用いられる手法がそれぞれ別のものであるため,処理時間がかかってしまうのだとか(腑に落ちないので,調べる中で補完します).
一方YOLOでは回帰問題として扱い,入力画像に対し直接予測を行うため,R-CNN等のアルゴリズムよりも動作が高速です.
学習アルゴリズム
大変分かりやすい解説がありました.ありがとうございます.実際に作業する上で特に重要なのはハイパーパラメータでしょう.学習を行う際に設定する必要がある筈ですので,頭に留めておきます.
参考:畳み込みニューラルネットワークの仕組み
https://postd.cc/how-do-convolutional-neural-networks-work/
【次回】導入編
次回より環境を構築し,学習準備を行ってみます.