目次
これらの 68 のキー ポイントから、喫煙しているかどうかを判断するための口検出フレームを取得できます。
ホームページ テクノロジー周辺機器 AI AI禁煙は大丈夫!喫煙認識+顔認識

AI禁煙は大丈夫!喫煙認識+顔認識

Apr 14, 2023 pm 12:49 PM
プロジェクト ai モニター

###こんにちは、みんな。

今日は、喫煙認識と顔認識プロジェクトについて共有します。多くの公共の場所、生産現場、学校は禁煙となっていますが、禁煙を実施し、AI が喫煙行動を自動的に識別し、誰が喫煙しているのかを識別できるようにすることが依然として必要です。

ターゲット検出アルゴリズムを使用して喫煙行動を特定し、喫煙者の顔を抽出し、顔認識アルゴリズムを使用して誰が喫煙しているかを特定します。考え方は比較的シンプルですが、細部はまだ少し面倒です。

プロジェクトで使用する学習データとソースコードがパッケージ化されています。以前と同じです、コメント欄に書いてください。

1. タバコの検出

5,000 個のラベル付き喫煙データをトレーニング データとして使用して、データセット ディレクトリに配置しました。

YOLOv5 ターゲット検出モデルをトレーニングします。

AI禁煙は大丈夫!喫煙認識+顔認識最初のステップ、data/coco128.yaml をsmoke.yamlにコピーし、データセットディレクトリとカテゴリ構成情報を変更します

path: ../dataset/smoke # dataset root dir
train: images/train# train images (relative to 'path') 128 images
val: images/test# val images (relative to 'path') 128 images
test:# test images (optional)

# Classes
names:
0: smoke
ログイン後にコピー

2番目のステップ、./models/yolov5s.yamlをsmokeにコピーします.yaml、nc を変更します

nc: 1# number of classes
ログイン後にコピー

3 番目のステップは、yolov5s.pt 事前トレーニング済みモデルをダウンロードし、それを {yolov5 ディレクトリ}/weights ディレクトリに配置することです

次のコマンドを実行して、

python ./train.py --data ./data/smoke.yaml --cfg ./models/smoke.yaml --weights ./weights/yolov5s.pt --batch-size 30 --epochs 120 --workers 8 --name smoke --project smoke_s
ログイン後にコピー

トレーニングが完了すると、次の出力が表示されます。大丈夫。

トレーニングが完了すると、best.pt の位置が見つかり、後でタバコの検出に使用できます。

model = torch.hub.load('../28_people_counting/yolov5', 'custom', './weights/ciga.pt', source='local')

results = self.model(img[:, :, ::-1])
pd = results.pandas().xyxy[0]
ciga_pd = pd[pd['class'] == 0]
ログイン後にコピー
AI禁煙は大丈夫!喫煙認識+顔認識

タバコを識別できた後も、現在喫煙しているかどうかを判断する必要があります。

AI禁煙は大丈夫!喫煙認識+顔認識タバコ検出フレームと口検出フレームを使用して IOU を計算して決定することができます。端的に言えば、2 つのフレームが交差しているかどうかを判断することです。交差している場合は、現在、喫煙。

顔のキーポイントを使用して識別する口検出フレーム。

AI禁煙は大丈夫!喫煙認識+顔認識2. 顔認識

顔認識アルゴリズムには成熟したモデルが多数あり、自分でトレーニングする必要はなく、データベースを直接調整するだけで済みます。

ここでは、顔の 68 個のキー ポイントを識別し、これらの 68 個のキー ポイントに基づいて顔の特徴を抽出できる dlib ライブラリを使用しています。

AI禁煙は大丈夫!喫煙認識+顔認識

face_detector = dlib.get_frontal_face_detector()
face_sp = dlib.shape_predictor('./weights/shape_predictor_68_face_landmarks.dat')

dets = face_detector(img, 1)

face_list = []
for face in dets:
l, t, r, b = face.left(), face.top(), face.right(), face.bottom()

face_shape = face_sp(img, face)
ログイン後にコピー

face_detector は顔を検出し、顔検出フレームを返すことができます。face_sp は顔検出フレームに基づいており、顔の 68 個のキー ポイントを識別します。

これらの 68 のキー ポイントから、喫煙しているかどうかを判断するための口検出フレームを取得できます。

最後に、私たちは顔認識アルゴリズムを使用して誰が喫煙しているかを識別したいと考えています。

最初のステップは、顔の特徴を抽出することです

face_feature_model = dlib.face_recognition_model_v1('./weights/dlib_face_recognition_resnet_model_v1.dat')

face_descriptor = face_feature_model.compute_face_descriptor(img, face_shape)
ログイン後にコピー

face_descriptor 顔の 68 個のキー ポイント間の位置と距離に基づいて、各顔の特徴ベクトルを計算します。この原理は、前に共有した word2vec やビデオを N 次元ベクトルにマッピングするのと似ています。 AI禁煙は大丈夫!喫煙認識+顔認識

2 番目のステップは、既存の顔を顔データベースに入力することです。映画やテレビシリーズでの 3 つの喫煙行動を用意しました

##動画から顔を切り出し、ベクトル化し、顔データベースに書き込みます (ファイルに置き換えます)

3 番目のステップでは、喫煙が発生した後、喫煙者の顔を切り取り、顔ベクトルを計算し、顔データベースの特徴と比較して、最も類似した顔を見つけます。対応する名前

def find_face_name(self, face_feat):
"""
人脸识别,计算吸烟者名称
:param face_feat:
:return:
"""
cur_face_feature = np.asarray(face_feat, dtype=np.float64).reshape((1, -1))

# 计算两个向量(两张脸)余弦相似度
distances = np.linalg.norm((cur_face_feature - self.face_feats), axis=1)
min_dist_index = np.argmin(distances)
min_dist = distances[min_dist_index]

if min_dist < 0.3:
return self.face_name_list[min_dist_index]
else:
return '未知'
ログイン後にコピー

このプロジェクトには拡張できる領域がたくさんあります。たとえば、私が提供したビデオには顔が 1 つしかありませんが、間違いなく次のような場面で使用されます。実際のモニタリングには複数の顔があります。現時点では、MOT アルゴリズムを使用して歩行者を追跡し、各人の喫煙を個別に識別できます。AI禁煙は大丈夫!喫煙認識+顔認識

また、別の統計領域を作成して、識別された喫煙行動を保存し、証拠として使用することもできます。警告と罰のために。

以上がAI禁煙は大丈夫!喫煙認識+顔認識の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

CentOS HDFS構成をチェックする方法 CentOS HDFS構成をチェックする方法 Apr 14, 2025 pm 07:21 PM

CENTOSシステムでHDFS構成をチェックするための完全なガイドこの記事では、CENTOSシステム上のHDFSの構成と実行ステータスを効果的に確認する方法をガイドします。次の手順は、HDFSのセットアップと操作を完全に理解するのに役立ちます。 Hadoop環境変数を確認します。最初に、Hadoop環境変数が正しく設定されていることを確認してください。端末では、次のコマンドを実行して、Hadoopが正しくインストールおよび構成されていることを確認します。HDFS構成をチェックするHDFSファイル:HDFSのコア構成ファイルは/etc/hadoop/conf/ディレクトリにあります。使用

Centosシャットダウンコマンドライン Centosシャットダウンコマンドライン Apr 14, 2025 pm 09:12 PM

Centos Shutdownコマンドはシャットダウンし、構文はシャットダウン[オプション]時間[情報]です。オプションは次のとおりです。-hシステムをすぐに停止します。 -pシャットダウン後に電源をオフにします。 -r再起動; -t待機時間。時間は、即時(現在)、数分(分)、または特定の時間(HH:mm)として指定できます。追加の情報をシステムメッセージに表示できます。

Centosのgitlabのバックアップ方法は何ですか Centosのgitlabのバックアップ方法は何ですか Apr 14, 2025 pm 05:33 PM

Centosシステムの下でのGitlabのバックアップと回復ポリシーデータセキュリティと回復可能性を確保するために、Gitlab on Centosはさまざまなバックアップ方法を提供します。この記事では、いくつかの一般的なバックアップ方法、構成パラメーター、リカバリプロセスを詳細に紹介し、完全なGitLabバックアップと回復戦略を確立するのに役立ちます。 1.手動バックアップGitlab-RakeGitlabを使用:バックアップ:コマンドを作成して、マニュアルバックアップを実行します。このコマンドは、gitlabリポジトリ、データベース、ユーザー、ユーザーグループ、キー、アクセスなどのキー情報をバックアップします。デフォルトのバックアップファイルは、/var/opt/gitlab/backupsディレクトリに保存されます。 /etc /gitlabを変更できます

Centosはmysqlをインストールします Centosはmysqlをインストールします Apr 14, 2025 pm 08:09 PM

CentOSにMySQLをインストールするには、次の手順が含まれます。適切なMySQL Yumソースの追加。 yumを実行して、mysql-serverコマンドをインストールして、mysqlサーバーをインストールします。ルートユーザーパスワードの設定など、MySQL_SECURE_INSTALLATIONコマンドを使用して、セキュリティ設定を作成します。必要に応じてMySQL構成ファイルをカスタマイズします。 MySQLパラメーターを調整し、パフォーマンスのためにデータベースを最適化します。

Centosでgitlabログを表示する方法 Centosでgitlabログを表示する方法 Apr 14, 2025 pm 06:18 PM

CENTOSシステムでGitLabログを表示するための完全なガイドこの記事では、メインログ、例外ログ、その他の関連ログなど、CentosシステムでさまざまなGitLabログを表示する方法をガイドします。ログファイルパスは、gitlabバージョンとインストール方法によって異なる場合があることに注意してください。次のパスが存在しない場合は、gitlabインストールディレクトリと構成ファイルを確認してください。 1.メインGitLabログの表示

CentosでPytorchの分散トレーニングを操作する方法 CentosでPytorchの分散トレーニングを操作する方法 Apr 14, 2025 pm 06:36 PM

Pytorchの分散トレーニングでは、Centosシステムでトレーニングには次の手順が必要です。Pytorchのインストール:PythonとPipがCentosシステムにインストールされていることです。 CUDAバージョンに応じて、Pytorchの公式Webサイトから適切なインストールコマンドを入手してください。 CPUのみのトレーニングには、次のコマンドを使用できます。PipinstalltorchtorchtorchvisionTorchaudioGPUサポートが必要な場合は、CUDAとCUDNNの対応するバージョンがインストールされ、インストールに対応するPytorchバージョンを使用してください。分散環境構成:分散トレーニングには、通常、複数のマシンまたは単一マシンの複数GPUが必要です。場所

CentosのPytorchのGPUサポートはどのようにサポートされていますか CentosのPytorchのGPUサポートはどのようにサポートされていますか Apr 14, 2025 pm 06:48 PM

Pytorch GPUアクセラレーションを有効にすることで、CentOSシステムでは、PytorchのCUDA、CUDNN、およびGPUバージョンのインストールが必要です。次の手順では、プロセスをガイドします。CUDAおよびCUDNNのインストールでは、CUDAバージョンの互換性が決定されます。NVIDIA-SMIコマンドを使用して、NVIDIAグラフィックスカードでサポートされているCUDAバージョンを表示します。たとえば、MX450グラフィックカードはCUDA11.1以上をサポートする場合があります。 cudatoolkitのダウンロードとインストール:nvidiacudatoolkitの公式Webサイトにアクセスし、グラフィックカードでサポートされている最高のCUDAバージョンに従って、対応するバージョンをダウンロードしてインストールします。 cudnnライブラリをインストールする:

Dockerの原則の詳細な説明 Dockerの原則の詳細な説明 Apr 14, 2025 pm 11:57 PM

DockerはLinuxカーネル機能を使用して、効率的で孤立したアプリケーションランニング環境を提供します。その作業原則は次のとおりです。1。ミラーは、アプリケーションを実行するために必要なすべてを含む読み取り専用テンプレートとして使用されます。 2。ユニオンファイルシステム(UnionFS)は、違いを保存するだけで、スペースを節約し、高速化する複数のファイルシステムをスタックします。 3.デーモンはミラーとコンテナを管理し、クライアントはそれらをインタラクションに使用します。 4。名前空間とcgroupsは、コンテナの分離とリソースの制限を実装します。 5.複数のネットワークモードは、コンテナの相互接続をサポートします。これらのコア概念を理解することによってのみ、Dockerをよりよく利用できます。

See all articles