特集 2020年5月7日

串カツのソース二度づけ絶対させないマシンを作る

大阪の串カツといえば、ソースの二度づけ禁止である。これはお客さんひとりひとりがルールを守ることで成り立つ文化だ。しかし、なかにはルール違反をしてしまう人がいるかもしれない。そこで、今回はソースの二度づけを物理的にできないようにするマシンを作った。

1992年三重生まれ、会社員。ゆるくまじめに過ごしています。ものすごく暇なときにへんな曲とへんなゲームを作ります。

前の記事:目の錯覚柄の床をあつめる

> 個人サイト ほりげー

ソース二度づけ禁止

串カツ屋では、「ソース二度づけ禁止」と大々的に書かれている。いちおう説明すると、これは、衛生面の配慮からである。ソースはお客さん同士の共用物であり、一度口をつけた串をもういちどソースにつけてしまうとソースに自分の唾液が付着してしまう。

001.jpg
大阪では串カツの看板よりも「ソース二度づけ禁止」の看板の方が大きく書かれていることがあり、規律の厳しさがうかがえる。

ただし、ときにルールを違反してしまう人がいるかもしれない。そうするとお店としてはソースをまるごと取り換える必要が出てきてしまい、多少なりとも損害となる。そこで提案したいのが、「ソース二度づけ絶対させないマシン」である。

ソース二度づけ絶対させないマシン

002.gif

カメラでソース二度づけを察知し、すばやくソースにフタをかぶせる。これは、物理的にソース二度づけ禁止を実現するマシンだ。長きにわたり人々の規律遵守と啓蒙活動によって育まれてきた「ソース二度づけ禁止」文化を、技術で物理的に強制してしまうのは野暮な話ではあるが、けっこう頑張ったのでもっと見てください。

005.png
一度目につけるときはフタが閉まらないが…
003.png
二度づけしようとすると、
004.png
カメラが二度づけを察知し、フタが閉まる。すごい!

いったん広告です

ソース二度づけ絶対させないマシンと串カツ田中

私がソース二度づけ絶対させないマシンを考えついたのは、半年以上も前のことである。ちょうど私が串カツ田中にどハマりしていたころであり、週1で(多い時は週3で)串カツ田中に通っていた。

006.JPG
関東にいながら大阪の串カツが食べられる幸せよ。
007.JPG
衣がさらっとしてておいしい〜。

串カツ田中ももちろんソース二度づけ禁止である。ただし、串カツ田中ではお客さんごとにソースを取り換えているため、ソース二度づけをしても他のお客さんに衛生面で迷惑がかかることはない。じゃあなぜ?と言われると、「大阪の食文化を体験していただきたい」とのこと。串カツ田中のWebサイトの「よくあるご質問」のところに書いてあった。

008.PNG
やはり、これは壮大な大阪の食文化なのだ。逆らったら消されるかもしれない。

二度づけ禁止。二度づけ禁止。外の看板にも店内の壁にもトイレにも「二度づけ禁止」と書かれている。そんなに言うなら物理的に二度づけできないようにすればいいのではないか。こうして着想した「ソース二度づけ絶対させないマシン」が、半年経ってこのたび実現した。時間がかかった理由は、なんか大変そうで手をつけられなかったからだ。気合を入れたら2日で完成した。外出自粛の中、ちょうどいい趣味になった。

009.jpg
半年の間、マシンを作るどころか、串カツ田中の神経衰弱をしたりしていた。

 

 

ソース二度づけ絶対させないマシンができるまで

串カツ田中への想いが強くて前置きが長くなったが、ここからはソース二度づけ絶対させないマシンができるまでの様子を記していく。

まず、作る前に紙に概要を書いて整理しておく。

010.jpg
これくらいなら頭の中で覚えておけるが、紙に書くと「やってる感」が出る。

ソース二度づけ絶対させないマシンの開発ネームは「ソニキン初号機」である。私が初めて「ソニキン」(正確には「ソニ禁」)という言葉を見つけたのは、なぜか大阪ではなく、函館のお店である。

011.jpg
一瞬、「ソニ禁」が何を意味するのか理解できなかったが、程なくして「ソース二度づけ禁止」のことだとわかった。

「ソニ禁」と検索してもこのお店しか出てこないので、店主が勝手に言っているのだと思う。すばらしいセンス。

さて、ソニキン初号機の動作をあらためて図で説明する。

012.png
まず、ノートPC付属のカメラで串カツを食べる人を常に撮影する。そして、機械学習と呼ばれる技術で、撮影画像を元に「二度づけをしようとしているかどうか」を判定する。これを、ソニ禁判定という。ソニ禁判定が出た場合は、サーボモーターに信号を送り、フタを5秒間閉める。

実は、似たようなことを以前やったことがある。「坐禅で動いたら棒で叩かれるやつを全自動化する」だ。

013.gif
PC付属のカメラで動体検知を行い、「動いた」と判定したらザーボモーターを動作させ修行者を棒で叩いている。

今回も、判定まではノートPCで行い、サーボモーター動作はRaspberry Pi と呼ばれる小さいコンピュータで行う。判定もRaspberry Pi上でできたらRaspberry Piだけでシステムが完結するのだが、今回は処理性能を重視しこのような形をとった。

いったん広告です

機械学習でなんとかする

さて、全自動坐禅棒叩きマシンとの最大の違いは、「二度づけをしようとしているかどうか」の判定、すなわち、ソニ禁判定だ。これは今回最も苦労すると思われたポイントである。カメラから取得した画像からどう判定するか。これにはニューラルネットワークと呼ばれるものを使うことにした。機械学習で用いられるモデルの一つで、めちゃくちゃ省略して言うと、画像分類と相性がいい。

014.png
事前にたくさんの画像を学習させてあげることで、未知の画像に対しても正しく分類できるようになる。教師あり学習というものだ。

画像を分類するプログラムは探せばいくらでも見つかるが、今回はやりたいことにドンピシャな「りんごとオレンジの画像判定プログラム」を参考にすることにした。実用するのは初めてなので、勉強しながらの実用である。

これを今回のソニ禁判定に応用するならば、こういうことになる。

015.png
たくさんの「二度づけをしようとしている画像」とそうでない画像を事前に学習させれば、あとは勝手に判定してくれる。夢のようだ!

しかし、現実は甘くなく、100%正しく判定してくれるわけではない。少しでも精度を上げるには工夫が必要である。二度づけをしようとしている場合とそうでない場合で、最も差が出るのはどこか?答えは、串先である。二度づけをしようとしている場合は串先が見えるが、そうでない場合は串先が見えない。そこで、入力画像を加工して、串先だけに着目するようにしている。

串先に着目するには、動きのあった領域の右上を抜き出せば良い。

016.png
動画とは「フレーム」と呼ばれる画像の連続である。まず、ひとつ前のフレームとの差分を見て、最も動きが大きかった領域を黄緑色の四角で囲む。いわゆる動体検知だ。次に、黄緑色の四角の右上のあたりを抜き出す。これは、二度づけをしようとするとき、黄緑の四角の右上のあたりに串先が来ることを見越している。(串の持ちかたに依存するが、少なくとも私の場合は右上に串先が来るのでこれで十分だ)

 

よだれがとまらない学習データの作成

今回は「教師あり学習」のため、コンピュータに覚えさせるための学習データを事前に用意する必要がある。すなわち、できるだけたくさんの画像を用意し、「二度づけをしようとしている画像」とそうでない画像に手動で分類しておく必要がある。

017.jpg
こんなこともあろうかと、半年前に串カツ田中で「串を食べる様子」を録画していたのであった。外出できるようになったらまた行きたいなぁ。

この動画から抽出した画像を一個一個手動で分類し、学習データとする。

018.png
少しでも手作業の負担を減らすため、手動分類支援プログラムを作った。分類対象の画像を目視し、「二度づけをしようとしている画像」の場合は「y」を、そうでない画像の場合は「n」を押していく。

分類対象の画像は887枚あった。手動分類支援プログラムをもってしても、これらの画像を手動で分類するのに1時間かかった。過去の自分が串カツを食べている映像を凝視しながらポチポチと「y」と「n」を押すだけの1時間。想像以上に過酷なものだ。ひたすらに食欲が湧き出るし、私は何をやっているんだろうという気持ちになる。今日中に絶対に完成させて串カツ食べてやるからな。

いったん広告です

いよいよ完成したソニ禁判定

分類が終わったので、いよいよソニ禁判定プログラムを動かす。と言っても、先ほどの「りんごとオレンジの画像判定プログラム」の画像を差し替えるだけだ。とりあえずパラメータは変更せずそのままにしておく。詳細は省略するが、887枚の画像を学習用とテスト用に分け、学習用画像で学習してテスト用画像で検証したところ、精度は82%だった。思ったよりいいぞ。

019.png
82%の確率で正しく判定できた。18%の中には、二度づけじゃないのに二度づけと判定するミスも、二度づけなのに二度づけじゃないと判定するミスもある。(交差検証はしていないので、あしからず…。)

ソニ禁判定を動画でも試す。過去に録画していた別の動画を利用し、ソニ禁判定が出たらその旨を画面に表示するようにした。ただし、二度づけじゃないのに二度づけと判定してしまうミスを減らすため、直近20フレームで7回以上ソニ禁判定が出た時のみ、画面に表示するようにした。

 

020.gif
二度づけを検知して表示する。いいぞいいぞ。

 

ついに完成!ソニキン初号機

ここまで来たら、あとはフタを作るだけ。簡単な工作である。

021.jpg
フタとなる布を用意して、裏に割り箸を取り付ける。
022.jpg
フタをサーボモーターのホーンに取り付ける。これには、結束バンドで強引に縛りつける。そしてサーボモーターをRaspberry Pi にとりつければ完成。できた〜!

さっそく試してみる。さきほどの動画の場合、こんな感じ。

 

023.gif

やった~。自然と笑みがこみ上げる。念願の夢が叶った瞬間だ。

ソニキン初号機を自宅で試す

せっかくなので、過去の動画じゃなくPC付属のカメラをもとに、その場でソニ禁判定をしたい。そこで、串カツ田中でテイクアウトした串をソニキン初号機の前で食べ、その場で二度づけを禁止してもらう。

024.JPG
串カツの皿と網は自分で用意しました。百均で買えます。

そもそも自宅で串カツを食べるのであれば、誰からも怒られないのではないか。好きなだけ二度づけすればよいではないか。そんな悪魔のささやきが聞こえてくる。しかし、食文化を守るためにも、二度づけは絶対に許されない。そのためのソニキン初号機なのである。

こうしてできたのが冒頭にご覧いただいた動画である。

 

025.gif
二度づけする前にフタが閉まる。わはは。おもしれー。

少しでも判定精度を上げるため、学習時の映像と同じジャケットを着ています。どうだ、ずるいだろう。

026.gif
串の種類に関係なく、先が見えてればソニ禁判定が出てフタが閉まる。いい感じ。
027.gif
1回目にソースをつけるのは大丈夫。でも間違ってフタが閉まらないかどきどきする。

ここまでうまくいったシーンばかり載せているが、ときどき、うまくいかないときもある。

028.gif
1回目なのにフタがしまった。ソースをつけさせてくれよ。
029.gif
2回目なのにフタがしまらなかった。二度づけできちゃった。あーあ。

ちゃんとした数値はとってないが、ソニ禁判定の精度は体感で7割ぐらい。学習データを増やしたりパラメータを調整したりすれば多少は精度があがるかもしれない。

 

最高のおうち時間を

外出自粛で有り余るおうち時間を、私はソース二度づけ絶対許さないマシンを作ってすごした。何の役にも立たないが、何もしないよりはマシだと思う。次は何を作ろうか。串カツのシルエットだけで中の具材を当てるプログラムはどうだろう。中の具材が分からなくなった時にちょっと役立つなぁ。

ソニ禁判定のソースコードはここに公開しました。ソースだけに。

▽デイリーポータルZトップへ

デイリーポータルZのTwitterをフォローすると、あなたのタイムラインに「役には立たないけどなんかいい情報」がとどきます!

→→→  ←←←

デイリーポータルZを

 

▲デイリーポータルZトップへ バックナンバーいちらんへ
↓↓↓ここからまたトップページです↓↓↓

 

今日のみどころ