ドリルを持ってると何にでも穴を開けたくなりませんか? ~猫も杓子もディープラーニング~
はじめに
ディープラーニングの応用事例について「ドリルを持っていて何にでも穴を開けたくなってる感がする」と言ったことがあります。
色々な事情でディープラーニング使うことが必須要件になっちゃう場合もあるけど、基本はちゃんと必要十分な技術を選びましょうね、という話をするのに良い例を思いついたので記事にしてみます。
やりたいこと
10 円、50 円、100 円、500 円という硬貨を判別して何が何枚あるのか数えたい。
案1:ディープラーニング
画像分類、あるいは物体検出タスクで硬貨種別を判別すれば良い。そのための学習データをたくさん集めて…まあ、後は普通にディープラーニングで出来る!
案2:古典的な画像処理
(捕捉)ディープラーニング以前の画像処理、ルールベースとか色々言われるけど、私は普段「古典的な画像処理」って呼んでます。
撮影平面とカメラの位置関係ちゃんと調整して、背景色とかもちゃんと考えておけば、色で硬貨の場所や種類が分かるよね。後は模様をちゃんと認識して回転処理して一致チェックすれば…うん、出来る!
案3:機械装置
それってそもそも町中でいっぱいある自動販売機に入っている装置そのものですよね。それ買ってきて組み込んで終わり!
ちなみに硬貨処理装置とかそんな感じの名前で呼ばれていて、仕組みはそこまで詳しく公開されてないですけどこんな記事とかこんな記事があります。ちょっと固いこんな記事もちゃんと読むと面白いです。
比較
案 1 は学習や推論にそれなりの計算量がかかったり、判別精度の担保をどうするか、とか色々あります。一方で背景や明るさ、倍率などの変化への適応性は高いでしょう。ユーザがスマホで撮影して、みたいなシーンなら使いどころがありそうです(そんなユースケースが本当にあるか、は別として)。
案 2 は判別精度についてはある程度理由付けをしていくことが出来ます。n ピクセル以上、つまり Xmm 以上の欠けがあると検出できない、とか。ある程度の CPU などの演算装置が必要ではあるものの、案 1 よりは高速に実行できるでしょう。ただし、撮影環境を安定させないと検出率を向上するのが難しいので悩みどころです。どこまで頑張るか、どこを妥協するかって話ですね。
案 3 は 500 ウォン変造貨事件などのように問題もありますが、安定して世の中で使われています。デジタル信号処理や制御関係などでマイコンくらいは必要でしょうが、CPU ほどの計算能力は必要ありません。
おわりに
まあ、割と恣意的な例ではありますが、こんな風に問題に対して解決策は色々あるわけです。その中でもユースケースにぴったり合う手法をちゃんと採用しましょうね、「猫も杓子もディープラーニング」ってならないようにしましょうね、というお話でした。
Discussion