目次
git clone https://github.com/PaddlePaddle/PaddleClas
ログイン後にコピー
" >
git clone https://github.com/PaddlePaddle/PaddleClas
ログイン後にコピー
ホームページ テクノロジー周辺機器 AI AI はあなたをはっきりと認識しました、YOLO+ByteTrack+マルチラベル分類ネットワーク

AI はあなたをはっきりと認識しました、YOLO+ByteTrack+マルチラベル分類ネットワーク

Apr 14, 2023 pm 06:25 PM
通信網 ai yolo

今日は歩行者属性分析システムについて紹介します。歩行者はビデオまたはカメラのビデオ ストリームから識別でき、各人の属性をマークできます。

AI はあなたをはっきりと認識しました、YOLO+ByteTrack+マルチラベル分類ネットワーク

#認識される属性には次の 10 個のカテゴリが含まれます

AI はあなたをはっきりと認識しました、YOLO+ByteTrack+マルチラベル分類ネットワーク

一部のカテゴリには複数の属性があります。体の向きが次の場合:前面、側面、背面、つまり最終トレーニングには 26 個の属性があります。

このようなシステムを実装するには、次の 3 つの手順が必要です。

    YOlOv5 を使用して歩行者を識別する
  • ByteTrack を使用して同じ人物を追跡し、マークする
  • トレーニングマルチラベル画像 歩行者の 26 の属性を識別する分類ネットワーク
1. 歩行者の認識と追跡

歩行者の認識は、YOLOv5 ターゲット検出モデルを使用します。モデルを自分でトレーニングすることも、またはYOLOv5 の事前トレーニングの適切なモデルを直接使用できます。

歩行者追跡には、Multi-Object Tracking Technology (MOT) 技術が使用されており、映像は複数の写真で構成されており、人間は異なる写真から同じ人物を識別できますが、歩行者を追跡しなければ、AI は認識できません。同じ人物を追跡し、各歩行者に一意の ID を割り当てるには、MOT テクノロジーが必要です。

YOLOv5 モデルのトレーニングと使用、およびマルチオブジェクト追跡テクノロジ (MOT) テクノロジの原理と実装計画については、前の記事で詳しく説明しています。興味のある方は、そこで記事をチェックしてください。 YOLOv5 ByteTrack はトラフィック フローをカウントします。

2. マルチラベル分類ネットワークのトレーニング

私たちが最初に扱った画像分類のほとんどは単一ラベル分類でした。つまり、画像はカテゴリ 1 に分類され、 category には 2 つのカテゴリを指定できますが、複数のカテゴリを指定することもできます。 3 つのカテゴリがあると仮定すると、各画像に対応するラベルは次の一般的な形式になります:

001.jpg010
002.jpg100
003.jpg100
ログイン後にコピー

label 1 つの位置のみが 1 です。

今日トレーニングするマルチラベル分類ネットワークは、複数のカテゴリを同時に含む画像です。ラベルの形式は次のとおりです:

001.jpg011
002.jpg111
003.jpg100
ログイン後にコピー

label には複数の位置を含めることができます1の。

このようなネットワークをトレーニングするには 2 つのオプションがあります。 1 つは、各カテゴリを単一ラベルの分類として扱い、損失を個別に計算し、合計を要約し、ネットワーク パラメーターを更新するための勾配を計算することです。

もう 1 つは直接トレーニングできますが、ResNet50 を例としてネットワークの詳細に注意する必要があります。

resnet50 = ResNet50(include_top=False, weights='imagenet')

# 迁移学习,不重新训练卷积层
for layer in resnet50.layers:
layer.trainable = False

# 新的全连接层
x = Flatten()(resnet50.output)
x = Dense(1024)(x)
x = Activation('relu')(x)
x = BatchNormalization()(x)
x = Dropout(0.5)(x)

# 输出 26 个属性的多分类标签
x = Dense(26, activatinotallow='sigmoid')(x)

model = Model(inputs = resnet50.input, outputs=x)
ログイン後にコピー

最終出力層の活性化関数はシグモイドである必要があります。各属性は個別に計算する必要があります。同様に、トレーニング中の損失関数も binary_crossentropy を使用する必要があります。

実際、上記 2 つの方法の原理は似ていますが、開発ワークロードは異なります。

ここでは便宜上、トレーニングに PaddleCls を使用します。 Paddle の設定はシンプルですが、独自のルールに従うことしかできず、カスタマイズするのがさらに面倒な、ややブラックボックス的な欠点があります。

モデル トレーニングでは PA100K データ セットを使用します。PA100K データ セットで定義された元のラベルは Paddle と同じ意味を持ちますが、順序が異なることに注意してください。

例: 元のラベルの 1 桁目はラベルが女性かどうかを表しますが、Paddle では 1 桁目でラベルが帽子をかぶっているかどうかを表し、22 桁目でラベルが女性かどうかを表す必要があります。

AI はあなたをはっきりと認識しました、YOLO+ByteTrack+マルチラベル分類ネットワーク

#Paddle の要件に応じて元のラベルの位置を調整できるので、後で推論しやすくなります。

PaddleClas のダウンロード

git clone https://github.com/PaddlePaddle/PaddleClas
ログイン後にコピー

ダウンロードしたデータセットを解凍し、PaddleClas のデータセット ディレクトリに配置します。

ppcls/configs/PULC/person_attribute/PPLCNet_x1_0.yaml 構成ファイルを見つけて、イメージとラベルのパスを構成します。

DataLoader:
Train:
dataset:
name: MultiLabelDataset
image_root: "dataset/pa100k/" #指定训练AI はあなたをはっきりと認識しました、YOLO+ByteTrack+マルチラベル分類ネットワーク所在根路径
cls_label_path: "dataset/pa100k/train_list.txt" #指定训练列表文件位置
label_ratio: True
transform_ops:

Eval:
dataset:
name: MultiLabelDataset
image_root: "dataset/pa100k/" #指定评估AI はあなたをはっきりと認識しました、YOLO+ByteTrack+マルチラベル分類ネットワーク所在根路径
cls_label_path: "dataset/pa100k/val_list.txt" #指定评估列表文件位置
label_ratio: True
transform_ops:
ログイン後にコピー

train_list.txt 形式は

00001.jpg0,0,1,0,....
ログイン後にコピー

構成後、直接トレーニングできます

python3 tools/train.py 
-c ./ppcls/configs/PULC/person_attribute/PPLCNet_x1_0.yaml
ログイン後にコピー

トレーニング後、モデルをエクスポートします

python3 tools/export_model.py 
-c ./ppcls/configs/PULC/person_attribute/PPLCNet_x1_0.yaml 
-o Global.pretrained_model=output/PPLCNet_x1_0/best_model 
-o Global.save_inference_dir=deploy/models/PPLCNet_x1_0_person_attribute_infer
ログイン後にコピー

エクスポートされた結果~/.paddleclas/inference_model/PULC/person_attribute/ ディレクトリに配置されます。

AI はあなたをはっきりと認識しました、YOLO+ByteTrack+マルチラベル分類ネットワーク

PaddleCls が提供する関数を使用して、

import paddleclas

model = paddleclas.PaddleClas(model_name="person_attribute")

result = model.predict(input_data="./test_imgs/000001.jpg")

print(result)
ログイン後にコピー

for を直接呼び出すことができます。出力 結果は次のとおりです。

[{'attributes': ['Female', 'Age18-60', 'Front', 'Glasses: False', 'Hat: False', 'HoldObjectsInFront: True', 'ShoulderBag', 'Upper: ShortSleeve', 'Lower:Trousers', 'No boots'], 'output': [0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 0], 'filename': './test_imgs/000001.jpg'}]
ログイン後にコピー

モデル トレーニング プロセスはここで終了し、プロジェクト全体のデータ セットとソース コードがパッケージ化されました。

以上がAI はあなたをはっきりと認識しました、YOLO+ByteTrack+マルチラベル分類ネットワークの詳細内容です。詳細については、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)

Debianで動物園のパフォーマンスチューニングを操作する方法 Debianで動物園のパフォーマンスチューニングを操作する方法 Apr 02, 2025 am 07:42 AM

この記事では、Debian SystemsのZookeeperパフォーマンスを最適化する方法について説明します。ハードウェア、オペレーティングシステム、Zookeeperの構成、監視に関するアドバイスを提供します。 1.システムレベルでのストレージメディアのアップグレードの最適化:従来の機械的ハードドライブをSSDソリッドステートドライブに置き換えると、I/Oパフォーマンスが大幅に向上し、アクセス待ち時間が減少します。スワップパーティションの無効化:カーネルパラメーターを調整し、スワップパーティションへの依存を減らし、頻繁なメモリとディスクスワップに起因するパフォーマンスの損失を回避します。ファイル記述子の上限を改善する:Zookeeperの処理効率に影響を与えるリソース制限を回避するために、システムによって同時に許可されるファイル記述子の数を増やします。 2. Zookeeper構成最適化Zoo.CFGファイルの構成

DebianでOracleセキュリティ設定を行う方法 DebianでOracleセキュリティ設定を行う方法 Apr 02, 2025 am 07:48 AM

Debianシステム上のOracleデータベースのセキュリティを強化するには、開始するには多くの側面が必要です。次の手順は、セキュアな構成のフレームワークを提供します。1。Oracleデータベースのインストールと初期構成システムの準備:Debianシステムが最新バージョンに更新され、ネットワーク構成が正しく、必要なすべてのソフトウェアパッケージがインストールされていることを確認します。インストールのために公式文書または信頼できるサードパーティのリソースを参照することをお勧めします。ユーザーとグループ:専用のOracleユーザーグループ(OINSTALL、DBA、BackUpDBAなど)を作成し、適切なアクセス許可を設定します。 2。セキュリティ制限リソース制限の設定:edit /etc/security/limits.d/30-oracle.conf

Debianログを介してシステムのパフォーマンスを監視する方法 Debianログを介してシステムのパフォーマンスを監視する方法 Apr 02, 2025 am 08:00 AM

Debianシステムログ監視のマスターは、効率的な動作とメンテナンスの鍵です。システムの動作条件をタイムリーに理解し、障害をすばやく見つけ、システムのパフォーマンスを最適化するのに役立ちます。この記事では、一般的に使用されるいくつかの監視方法とツールを紹介します。 SysStat Toolkitを使用したシステムリソースの監視SysStat Toolkitは、CPUロード、メモリ使用量、ディスクI/O、ネットワークスループットなど、さまざまなシステムリソースメトリックを収集、分析、レポートするための一連の強力なコマンドラインツールを提供します。 MPSTAT:マルチコアCPUの統計。ピドスタ

Debian Syslogのトラブルシューティング方法 Debian Syslogのトラブルシューティング方法 Apr 02, 2025 am 09:00 AM

Syslog for Debian Systemsは、システム管理者が問題を診断するための重要なツールです。この記事では、一般的なSyslogの問題をトラブルシューティングするためのいくつかの手順とコマンドを提供します。1。最新のログのリアルタイム表示:Tail-F/var/log/syslog viewingカーネルログ(スタートエラーとドライバーの問題):DMESGはJournalCtl(Debian8以上、SystemD System)を使用します。 2。システムリソースの監視と表示プロセスとリソースの使用法:Psaux(高いリソース占有プロセスを見つける)リアルタイム監視

DebianのGolangログの回転戦略は何ですか DebianのGolangログの回転戦略は何ですか Apr 02, 2025 am 08:39 AM

Debian Systemsでは、GOのログローテーションは通常、GO標準ライブラリに付属する機能ではなく、サードパーティライブラリに依存しています。 Lumberjackは一般的に使用されるオプションです。さまざまなログフレームワーク(ZapやLogrusなど)で使用して、ログファイルの自動回転と圧縮を実現できます。 LumberJackおよびZAPライブラリを使用したサンプル構成:packagemainimport( "gopk.in/natefinch/lumberjack.v2" "go.uber.org/zap" "go.uber.org/zap/zapcor

GoおよびViperライブラリを使用するときにポインターを渡す必要があるのはなぜですか? GoおよびViperライブラリを使用するときにポインターを渡す必要があるのはなぜですか? Apr 02, 2025 pm 04:00 PM

ポインター構文とviperライブラリの使用における問題への取り組みGO言語でプログラミングするとき、特にポインターの構文と使用を理解することが重要です...

Go Gin Frameworkのすべてのコントローラーがパブリックデータを利用できるようにするにはどうすればよいですか? Go Gin Frameworkのすべてのコントローラーがパブリックデータを利用できるようにするにはどうすればよいですか? Apr 02, 2025 am 10:21 AM

すべてのコントローラーにGogin Frameworkでパブリックデータを取得するにはどうすればよいですか? goを使って...

言語スライスに行く:シングルエレメントスライスインデックス1インターセプトの場合、なぜエラーを報告しないのですか? 言語スライスに行く:シングルエレメントスライスインデックス1インターセプトの場合、なぜエラーを報告しないのですか? Apr 02, 2025 pm 02:24 PM

Go Language Slice Index:エラーなしでインデックス1からシングルエレメントスライスインターセプトがインターセプトされるのはなぜですか? GO言語では、スライスは底部を参照できる柔軟なデータ構造です...

See all articles