「マスクせずにせき」乗客が非常通報 福岡・地下鉄車内でトラブルに
などという今日この頃。
そんなに怖かったら外に出なければよいのに。と思いつつ、今回は写真からマスクをしていない人を検出してみようと思う。
用意するするもの
・どこのご家庭にもあるOpenCVをインストール済みのPythonが実行できる環境
・マスクをした人物が写っている画像、マスクをしてない人物が写っている画像
・カスケードファイル(顔、目、口)
・下記プログラム
プログラム
https://qiita.com/hitomatagi/items/04b1b26c1bc2e8081427
カスケードファイル「口」
カスケードファイル「顔」
https://github.com/opencv/opencv/blob/master/data/haarcascades/haarcascade_frontalface_default.xml
プログラムは上記のものに、口の要素を追加した。顔はあるけど、口が検出されていない場合は、マスクをしているとみなす、お手軽仕様での実装だ。
逆に言えば口が検出されたらマスクしてないという想定。
もし、マスクのカスケードファイルがあれ、それでもよいということになるが、まあ多分ないだろうと考え、そもそも探していない。
とりあえずは、Googleの写真検索でマスクをしている人の画像を拾って試してみる。
テストしてみたところ、マスクしている顔と、マスクしていない顔、それぞれあっさり検出。
口についても検出できた。
続いて掲載用に画像を探してみる。しかし今度は、マスクと一緒にメガネもしている画像が多く、それだとうまく検出できない。などなど、素材選びには少々苦戦。
さらに、写真が小さかったり、横を向いている画像は検出がうまくいかなかったりする。
そんなこんなで、結局、今回の掲載用素材は、上記女子学生の写真となってしまったが、特に深い意味はない。
1枚目の画像右側の目のようにバウンディングボックスが2重にできることはよくある事だ。
このように、カスケード分類による検出は、Deep Learningによる検出に比べると、やや精度は落ちるのかもしれないが、 手軽に試してみるのにはなかなか良い手法かと思う。
3分間クッキングのつもりが、そうこうしているうちに、インスタントラーメンの麺が伸びてしまったので、今回はこの辺で。それではまた!