🔰中国駐在初心者社長の業務革新奮闘記Vol.3「喫煙者検知🚭」ツールの作成

## 「火の用心🔥」は世界共通:thinking:
私はグループ中国小売事業への商品供給をする物流機能会社の経営をしています。
コロナ真っ盛りの時期に社長として中国駐在となってもうすぐ2年、やるからには業務を「革新」しよう！と高い志と意気込みで乗り込んだものの、日々起こりうる身の回りの「リスク」への対応がしっかりできていないと、腰を据えて大きな取り組みはできませんよね？

https://qiita.com/AGSCMONO/items/e0465a91802fac6964a3

https://qiita.com/AGSCMONO/items/318c9f99965e908e8e7d

👆過去作成のツールです。よろしければお立ち寄りください！

### 身近な「リスク」⚡は何だろう？

ビジネスにはさまざまなリスクがありますが、人身への危険度、被害の程度を考えると「火災」が最も恐ろしいリスクと言えそうです。火災の原因はさまざまですが、当社の物流センターでも管理が難しいのは禁煙エリアでの喫煙と吸い殻🚬のポイ捨てです！

<details open><summary>中国における物流センターのリスク</summary>

![リスク.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3812519/8ec06a2a-8ca2-b0eb-5df6-01a07e38e950.jpeg)
</details>

<details open><summary>中国における物流センター、火災の原因</summary>

![火災原因.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3812519/48b3a8d0-b6f4-434f-616f-41c8d444ae63.jpeg)
</details>

<img width="150" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3812519/dd1141ab-8a20-8562-b610-5e4046239097.jpeg">

灰皿があっても地面にポイ捨て、火を消さないで立ち去ることもしばしば😱

物流センターには受付、商品荷受場、作業構内などに数10台の防犯・安全確認用監視カメラが設置されています。この監視カメラに画像やポーズ認識の機能を組み合わせて、喫煙者と思わしき人がいたら、事前にアラートを出せるのではないだろうか？そうすれば、すぐに喫煙者のいる現場に行き、喫煙をやめさせることができるし、禁煙エリアでの喫煙を自動監視されていることで、抑止力にもなるのでは？結果、タバコの火の不始末による火災を防げるのでは？
という仮説のもと、今回取り組んだ小さな業務改善は<dt>「喫煙者検知ツール🚭」</dt> の作成としました！
![監視カメラ.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3812519/43da6bd2-4e47-92cd-8c8c-9078fada0f9a.jpeg)
既存の防犯・安全確認用監視カメラを利用しモニタリングします！

## 「喫煙者検知ツール🚭」のプロトタイプ完成品
タバコを吸う姿勢をとった人物がいた場合、音声でアラートを出します。

下：初回作成分　上：改良版（認識ポーズの拡大、音声中国語化）

https://x.com/AgscmO63102/status/1827519586033660399

:::note info
監視カメラに接続しているという前提ですが、今回はPCのWEBカメラを使用してプロトタイプを作成をしています
:::

## 使用ツール

・[Teachable Machine](https://teachablemachine.withgoogle.com/)
・[Scratch 3.0](https://ja.scratch-wiki.info/wiki/Scratch_3.0)
・[Stretch3](https://stretch3.github.io/)

タバコを吸っている挙動をTeachable Machineの機械学習で認識、挙動の認識を音声でアラートをどう出すか？という問題についてScratchに簡単に使えるテキストの音声変換機能があることを知り今回使用を決定

## 「喫煙者検知ツール🚭」の構造

<img width="800" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3812519/4566d1d8-0d63-b8bf-02bb-eea3f3c08b3c.jpeg">
Teachable Machineで「喫煙」と「喫煙でない」ポーズ画像を機械学習させ、Scratch3.0（Stretch3）のポーズ学習機能を利用し、パソコンのWEBカメラに映った人物のポーズにより、「喫煙」、「喫煙でない」を判別し、「喫煙」の場合ポーズを検知したら、「誰かがタバコを吸っています」と音声警告する。

## 作成工程🧐
1. 「喫煙者検知ツール🚭」の企画
2. Teachable Machineのポーズプロジェクトによる機械学習
「喫煙」と「喫煙でない」ポーズ画像を機械学習、判定させ、そのモデルをエクスポートする
3. Scratch3.0（Stretch3）の設定
・Teachable Machineのポーズプロジェクトによる機械学習したモデルをのリンクを貼り付ける
・情報処理のフローを作成する
WEBカメラに映った人物のポーズにより「喫煙」、「喫煙でない」を判別し、「喫煙」の場合ポーズを検知したら、「誰かがタバコを吸っています」と音声警告するよう設定する

### 1. 「喫煙者検知ツール🚭」の企画

エクセル管理している年間スケジュールをデータベース化し、参加者情報と組み合わせて管理します。
アウトプットは共有するGoogle　カレンダーを使用することで、常に新しい会議スケジュールと参加者情報をメンバーと共有します。

### 2. Teachable Machineのポーズプロジェクトによる機械学習
・「喫煙」をしているポーズ、「喫煙でない」ポーズをそれぞれWEBカメラで撮影をします。
・撮影後、トレーニングを実施し、プレビューで意図したとおりの出力されるか（「喫煙」、「喫煙でない」が正しく認識されるか）を確認をします。
・確認出来たらモデルをエクスポートします。
<img width="600" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3812519/7903e6ec-7972-8b20-f0a7-f524dad424cf.jpeg">
### 3.Scratch3.0（Stretch3）の設定
・Scratch3.0（Stretch3）を利用し、Teachable Machineのポーズプロジェクトによる機械学習したモデルのリンクを貼り付ける

![Stretch3.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3812519/63e41c3a-f4d6-b660-8e0f-2fcb5b4d67ff.jpeg)

・情報処理のフローを作成する
画面左側に配置されるコードよりコマンドを選択してドラッグし、処理の内容に従い画像のように配置する。

コマンドの意味概要
１，トリガーを押したら
２，Teachable Machineのポーズプロジェクトを参照し
３，タバコを吸っているポーズを認識したら
４，「誰かがタバコを吸っています」と音声を出す（Scratchにテキストの音声変換機能組み込みあり）
５，タバコを吸っているポーズを認識しなければ、停止させるまでこの状態を続ける

これで作成完了です！

:::note info
・[Scratch 3.0](https://ja.scratch-wiki.info/wiki/Scratch_3.0)　および[Stretch3](https://stretch3.github.io/)について　
スクラッチは、2002年に米国のマサチューセッツ工科大学（MIT）が開発したプログラミング言語です。ブロックをつなげていく直感的な操作で、オリジナルのアニメーションやゲームなどを自由に作れます。
8～16歳の子ども向けに開発されたもので60以上の言語に対応しており、150以上の国や地域で利用されています。現在は非営利団体のScratch財団と共同で設計、開発、運営されており、インターネットで無料配布されています。
Stretch3はScratch上にさらに拡張機能が加わったものです。人工知能（AI）を使用することができる拡張機能や、QRコードを読み取ることができる拡張機能なども追加されています。詳細👉　https://coeteco.jp/articles/12508
:::


## 苦労した点:tired_face:
・「喫煙」と「喫煙でない」ポーズの認知をどうさせるか？
当初、タバコの画像認識でも「喫煙」を検知できないかと試みたものの、タバコ単体では認識するものの、人が持った状態では認知されずらいことがわかり、断念。
ポーズについては「喫煙」の特徴的な腕の角度を変えて重点的に画像を取り込み学習することでまずまずの精度になったように思う（ただし、腕の角度が「喫煙」になれば、タバコを持っていなくても「喫煙」認識になってしまいますが、火事を未然に防ぐという主旨から良しとしました）。

:::note info
ポーズの認知精度を上げる
Teachable Machineでいったんトレーニングを行い、プレビューをした際に、意図は違う認識をした場合には、そのポーズを重点的に学習させるといったことを数回繰り返すと精度はかなり上がりました。
エポック数を上げることで精度を上げることも可能ですが、特にポーズのトレーニングはかなり時間がかかります。
:::

## 「喫煙者検知🚭」ツールの改善・改良点:slight_smile:

<dt>・監視カメラとどう接続するか？</dt>
物流センターの各所にある監視カメラの活用が前提ですので、接続ができないことには本ツールの実際の活用はできません。既存のソフトウェアとの接続については引き続き研究が必要になります。

・実現できれば可能性が一気に拡大！
監視カメラとの接続の課題が可能となれば、機械学習のポーズ認識による活用の可能性が大きく広がります。
例えば、「〇〇作業を単位時間あたり何回実施しているか」「作業動線の適正化」など、監視から経営効率への活用の道が開けると期待大です！！

<dt>追記：</dt>
監視カメラとの組み合わせとアラートの記録の実現を意図し、enebularとNode-REDで再構築をしてみることにしました。実装までにはもう少し研究が必要です。

Node-REDでの構造イメージ
![Node-RED.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3812519/d41987f6-0fe6-db45-d690-a654a77ef31b.jpeg)


## 第3弾「喫煙者検知🚭」ツール作成を終えて:laughing:
業務改革に向けての小さな業務改善の3回目はリスクマネジメント、火災発生原因の一つ、タバコの火の不始末防止のためのツールを作成してみました。
今回は機械学習したモデルを走らせるツールとしてScratch3.0（Stretch3）を利用しました。今や小中学校でもこんなツールを使ってプログラミングの初歩を勉強しているのですね！私自身もITに関しては生まれたての小鹿みたいなものなので、直感的に使えるので初学者にはぴったりのツールといえるかもしれません。
残念ながら、検知をしたあとの記録など、複雑な処理はできないようです。機械学習によるポーズの認識と処理のフローは今回の作成でおよその理解は進みましたので、引き続きすこし高度なプロセスを構築して、実装に近づけたいと思います！！

こんな機能があったらいいね、使えるねというアイデアがありましたら是非教えてください！
最後までお付き合いいただき、ありがとうございました！！

![小鹿.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3812519/6721ec48-1638-4e0d-a61e-a4113334dd22.jpeg)
しっかり歩けるようになるまではもう少し時間が必要です！