Safie Engineers' Blog!

Safieのエンジニアが書くブログです

画像認識技術、サービスの自社利用

セーフィーでCTOをさせて頂いている森本です。

久々の投稿となってしまいました。 先日の記事で顔認証で勤怠管理の紹介をしましたが、今回はそのシステムの導入までの道筋も含めて紹介します。

実際に利用している様子はこちらです。

なぜ顔認証で勤怠管理をすることに

現在セーフィーではSafieVisitors※1、SafieEntrance※2という顔認証サービスを提供していますが、3年ほど前からこれらのサービスに利用する顔認証の仕組みを社内でも何かに活かせないかということで色々検討を行っていました。 顔認証に限りませんが、様々な技術や仕組みが実際にプロダクトとして使えるレベルのものなのかどうかという事を判断をする為にも、自分達でとことん使ってみるというのは非常に有効な手段だと思っています。

偶然にも、セーフィー社内では会社の成長に合わせて以下のようなニーズが発生していました。 顔認証技術とその応用はこれらの対策にマッチすることが期待できました。

実際のニーズ

  • 社員数の増加に伴い引っ越しを行ったが、引越し先ビルはビル入口にオートロックが存在するのみでオフィスフロアにはオートロックが存在しなかった。
  • セーフィーとしてはオフィス入り口にもロックを設置することを必須としていたので、何らかの形でロックを設置する必要があった。
  • カード式のオートロックを設置する場合、ビル入口はビルが管理しているためオフィス入り口とは別管理となりカードの2枚持ちが必要となる。
  • 当時流行り始めていたスマートロックを設置してみたが、Bluetoothの接続性含め安定性がいまいちでオフィスに入れない人が続出した。 安定して動作する電子錠の設置が望ましい。

上記を解決するため、実績のある一般的な電子錠を設置しカード無しで入退室出来る方法を顔認証で実現出来ないかというアプローチを取る事としました。

※1:顔認証技術により、人数のカウントや属性(性別、年齢)推定を行い、その統計結果をユーザーに提供するサービス。
※2:顔認証技術により、事前に登録したユーザーの入退室管理を提供するサービス。

実際にやってみた内容

1. 電子錠のリモート開閉

まずは一般的な電子錠を設置しそれを開閉出来る仕組みを検討しました。 たまたま、リモートから解錠できるプロダクトがあったので、まずはこちらを使ってみることとしました。

f:id:safie:20211015112440p:plain
電子錠リモートコントローラー

2.顔認証によるドアの解錠管理

上記はカードでの運用もサポートしているのですが、当社としてはカードの二重持ちはとにかく避けたかったのと、せっかく顔認証技術の検討を進めていたので、顔認証でドアの解錠を行うことを決めました。 以下そのアプローチとなります。

1-1.セーフィー対応カメラによる解錠管理

セーフィーの録画サービスでは基本的にはIPカメラを利用しています。 まずはカメラをドアの前に設置し、認証できたらドアを開けるというシステムを設置しました。

f:id:safie:20211015112514p:plain
セーフィー対応カメラによる解錠管理

これで一応は顔認証によってドアの解錠が出来るようになったのですが、IPカメラということで映像を取る事しかできず、ドアが開かなかった場合にその理由がよく分かりませんでした。 顔の写り方がおかしい、認証に失敗等が考えられますが、原因が分からないのでユーザーはどうすれば良いかと迷ってしまっていました。

1-2.タブレットによる解錠管理

そこで認証結果についてフィードバックを得る手段を提供する為、認証端末としてAndroidタブレットを利用する事としました。

f:id:safie:20211015112539p:plain
タブレットによる解錠管理

タブレットでAndroidSDKの顔検知機能を利用し顔の切り出しを行い、切り出した顔の認証はSafieクラウドで実施するようになっています。 これで大幅にユーザビリティが上がり、ドアが開かない場合にその原因が明確に表示されどのように対応すればよいのか分かるようになりました。

1-3.細かなチューニング

ただし、別の問題も発生しました。 AndroidSDKの顔検知機能では、実際の顔では無いものを検知してしまうという事象が多発しました。 例えば、背景の壁等を誤検知してしまうような事象があったのですが、一度誤検知をしてしまうと 背景は動くことが無いので、誤検知がひたすら継続してしまうという問題が発生してしまいました。

f:id:safie:20211015112557p:plain
顔の誤検知

これを解決するために、外部の顔検知ライブラリを使用する事としました。 これにより誤検知がなくなり、劇的にユーザビリティが向上し、自分たちで使っていても最低限ストレス無く使えるレベルまでは品質を上げることができました。

ただし、まだまだ幾つか不満も残りました。

  • 後ろを通りかかっただけでもドアがあいてしまう
  • タブレットに写ってから認証が完了しドアがあくまで2〜3秒程度かかってしまう
  • 画像データでも空いてしまう

これらの不満を解決するため、以下のような対応を行いました。

  • 検知最小サイズを設定できるようにし、必要な人の顔だけ検知するようにしました。

    f:id:safie:20211015112617p:plain
    検知最小サイズの設定

  • ライブラリをチューニングし1秒以内でも解錠するようにしました。

  • 当社オフィスのセキュリティレベルに関わるので詳細はここでは述べませんが、人間でない場合は解錠できないという対策を実施しました。

以上により全くストレス無くドアの解錠を行い自分たちのオフィスに入退室できるシステムが完成しました。

3.顔認証による勤怠管理

上記により顔認証によるオフィスへの入退室管理が実現できるようになりました。 ドアの解錠を行うことにより、誰が何時にオフィスに入ったか、出ていったかということも分かるようになったのですが、これを他にも利用できないかという話になりました。

当社は勤怠システムとしてKingOfTimeを利用していたのですが、いちいち打刻申請が必要で面倒だという話があったので、ドアの解錠履歴をKingOfTimeに連携する事によりわざわざ打刻処理をしなくとも勤怠登録ができるようにしようと考えました。 一日の認証履歴を確認し、最初の入室と最後の退室を勤怠時間としてAPI連携によりKingOfTimeに登録するようにしました。

f:id:safie:20211015112636p:plain
勤怠管理との連携

※残念ながら現在コロナの影響により大部分の社員さんがリモートとなってしまったので、リモート実施時には個別に打刻して頂いていますが、出社時には非常に使いやすいということで社内で絶賛されていました(笑)

最後に

今回は顔認証技術を自分たちで使い倒してみたところをご紹介しました。 これらの試行錯誤がSafieEntranceサービスやSafieVisitorsサービスに繋がっています。 これは一例ですが、実際のプロダクトを出していくにあたり、自分たちで商品を使ってみて、不満点を全て解消し満足いくまで作り上げていくことは非常に重要なプロセスだと感じています。 補足ですが、ここに記載した活動は2名のエンジニアが中心となり、3ヶ月ほど掛けて実現してくれました。

尚、弊社としてはメインの録画、配信、データ解析サービスの更なる強化を実現すべく開発業務に取り組んでいますが、まだまだエンジニアさんが足りていない状況です。ご興味がある方はお気軽にご連絡頂けますと幸いです。

© Safie Inc.