ブログ

匙が通れば蓮華が引っこむ – 下町ディープラーニング #5

みなさんこんにちは。dottの清水です。

初回から第4回まで続いた「NewsPic」の話もひと段落して、今日は少しだけ昔の「レンゲ」のお話です。

dottが初めてディープラーニングというものと友達になれた話でもあります。

匙のダイバーシティ

みなさんは「匙(さじ)」という言葉を聞くと、何を思い浮かべますか?

金属や木製のスプーン、コンビニでもらうプラスティックのものだったり、計量スプーンだったりといろいろな形がありますね。中華料理には欠かせないレンゲも匙と呼べるものだと思います。

にぎらな寿司

2018年、dottは「SAWARABI HAPPY FOOD PROJECT」というプロジェクトに参加しました。

このプロジェクトの主な目的は2つあります。ひとつは「流動食を食べてる人にも食事の楽しさを味わってもらう」こと、もうひとつは「完食率データを取得して利用者一人ひとりの好みなどに生かしていく」ことです。

提供される食事は「にぎらな寿司」という分子調理の手法を用いて作った流動食で、食べた人に聞いたところ「不思議と口の中は本当に寿司を食べたような味になる」とのこと。

そしてこのにぎらな寿司は、レンゲに乗せて提供されるのです。

dottには残念ながらまだシェフがいないので、僕たちは完食率を割り出すというミッションを担当しました。

イッツ・ア・スプーン

このプロジェクトでは、介護現場に導入されることを想定しているため特殊な機械などは使わず、スマホのカメラで撮影した「食後のトレーの画像」から完食率を割り出すことが求められました。

撮影されたトレーの画像の中から、にぎらな寿司のレンゲ部分だけを抜き出し、その画像から完食率を判定しようという計画で実証実験が開始されます。

Googleが提供する「Vision API」のように画像解析のWEB APIは当時から存在していました。画像の中から人物を切り出すように、Vision APIを使えば撮影された画像の中からレンゲを取り出せるだろうという目論見だったのですが…

スプーンと判定されてしまいましたね。

もちろんスプーンはスプーンです。

レンゲとスプーンの1m

もし「スプーンのようなものが写っている」ことを判定することが目的であれば、Vision APIでも十分に活用することができます。

しかし問題は、撮影する対象が「介護現場で食事をした後のトレー」なので、通常のスプーンが高確率で映り込みます。

なので「レンゲとスプーンの違いを見分けられる機械を作る」必要性が、突然僕たちの前に現れたのです。この妙な検出機を作る必要性を感じた瞬間が、まさに「AIのラスト1m」という問題が世の中にはあることに気づいた瞬間です。

それまでのdottは、AI的なものをどこか他人事のように捉えていました。しかし汎用的で先進的なAIを作ることを目指していなかったとしても、ラスト1mの問題は身近な現場に転がっていて、僕たちでもこの分野でまだやることはあるなと実感したのでした。

画像認識技術といえば

当時の僕たちの感覚として、画像から何か特定の物体を検出することを自分たちでやろうとするときに出てくるのは「OpenCV」でした。

ただしOpenCVの物体検出はとても苦労した記憶が残っています。その時の思い出の画像がこちら。

赤い枠が検出した箇所なのですが、なんだかうまくいかなかったことだけは伝わると思います。

使っていた印象は「ある形のパターンを学習した場合、そのパターンを検出することはできるが、似たようなパターンが出てくるとあれもこれも検出しちゃう頑固なやつだな(特に画像のスプーンの柄の部分に近い状態で切り取ると、局地的にレンゲっぽい形をしているような部分)」

これこそが、OpenCVと今は主流になっているディープラーニング的なアプローチ(畳み込みニューラルネット)の違いによるものだったのですが、当時はそこまで深くディープラーニングによる画像検出を理解をしていなかったため、割と的を得ている感想だということに気づきませんでした。

されど待ったなし

実証実験とはいえ、レンゲを抽出する部分で全く成果が出ないのは流石に問題です。OpenCVでは思ったような成果が出ない中で、与えられた開発期間は刻々と減っていきます。

そこでOpenCVによる物体検出は諦め、当時リリースされて一年も経っていなかったくらいの「TensorFlow Object Detection API」を使う方針に切り替える決断をします。

その話はまた、次回の記事で。