偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

AI已經(jīng)把你看得明明白白,YOLO+ByteTrack+多標(biāo)簽分類(lèi)網(wǎng)絡(luò)

人工智能
行人識(shí)別使用YOLOv5?目標(biāo)檢測(cè)模型,可以自己訓(xùn)練模型,也可以直接使用YOLOv5預(yù)訓(xùn)練好的模型。

今天給大家分享一個(gè)行人屬性分析系統(tǒng)。從視頻或者相機(jī)的視頻流中能識(shí)別行人,并標(biāo)記每個(gè)人的屬性。

圖片

識(shí)別的屬性包括以下 10 類(lèi)

圖片

有些類(lèi)別有多個(gè)屬性,如果身體朝向有:正面、側(cè)面和背面,所以,最終訓(xùn)練的屬性有 26 個(gè)。

實(shí)現(xiàn)這樣的系統(tǒng)需要 3 個(gè)步驟:

  • 用 YOlOv5 識(shí)別行人
  • 用 ByteTrack 跟蹤標(biāo)記同一個(gè)人
  • 訓(xùn)練多標(biāo)簽圖像分類(lèi)網(wǎng)絡(luò),識(shí)別行人 26 個(gè)屬性

1. 行人識(shí)別與追蹤

行人識(shí)別使用YOLOv5?目標(biāo)檢測(cè)模型,可以自己訓(xùn)練模型,也可以直接使用YOLOv5預(yù)訓(xùn)練好的模型。

行人追蹤使用的是多目標(biāo)跟蹤技術(shù)(MOT)?技術(shù),視頻是由一幅幅畫(huà)面組成,雖然我們?nèi)祟?lèi)能夠識(shí)別出不同畫(huà)面中的同一個(gè)人, 但如果不對(duì)行人做追蹤,AI?是無(wú)法識(shí)別的。需要用MOT技術(shù)追蹤同一個(gè)人并給每個(gè)行人分配唯一的ID。

YOLOv5?模型的訓(xùn)練、使用,以及多目標(biāo)跟蹤技術(shù)(MOT)?技術(shù)的原理、實(shí)現(xiàn)方案,在上一篇文章有詳細(xì)的教程,感興趣的朋友可以查看那邊文章《YOLOv5+ByteTrack統(tǒng)計(jì)車(chē)流》。

2. 訓(xùn)練多標(biāo)簽分類(lèi)網(wǎng)絡(luò)

我們最開(kāi)始接觸的圖像分類(lèi)大部分是單標(biāo)簽分類(lèi)?的,即:一張圖片歸為1類(lèi),類(lèi)別可以是二分類(lèi)?也可以是多分類(lèi)?。假設(shè)有三個(gè)類(lèi)別,每一張圖片對(duì)應(yīng)的label可能是下面這總格式:

001.jpg  010
002.jpg 100
003.jpg 100

label?只有一個(gè)位置是1。

而我們今天要訓(xùn)練的多標(biāo)簽分類(lèi)網(wǎng)絡(luò)?是一張圖片同時(shí)包含多個(gè)類(lèi)別,label格式如下:

001.jpg  011
002.jpg 111
003.jpg 100

label?可以有多個(gè)位置是1。

訓(xùn)練這樣的網(wǎng)絡(luò),有兩種方案。一種是把每個(gè)類(lèi)別看成是單標(biāo)簽分類(lèi),單獨(dú)計(jì)算損失,匯總總,計(jì)算梯度更新網(wǎng)絡(luò)參數(shù)。

另一種可以直接訓(xùn)練,但對(duì)需要注意網(wǎng)絡(luò)細(xì)節(jié),以ResNet50為例

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

# 遷移學(xué)習(xí),不重新訓(xùn)練卷積層
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 個(gè)屬性的多分類(lèi)標(biāo)簽
x = Dense(26, activatinotallow='sigmoid')(x)

model = Model(inputs = resnet50.input, outputs=x)

最后輸出層的激活函數(shù)?必須要sigmoid?,因?yàn)樾枰總€(gè)屬性單獨(dú)計(jì)算概率。同理,訓(xùn)練時(shí)的損失函數(shù)也需要用二分類(lèi)?交叉熵binary_crossentropy。

實(shí)際上,上面兩種方法原理都是類(lèi)似的,只不過(guò)開(kāi)發(fā)的工作量不同。

這里為了方便,我使用的是PaddleCls?進(jìn)行訓(xùn)練。Paddle的配置簡(jiǎn)單,缺點(diǎn)是有點(diǎn)黑盒,只能按照他那一套來(lái),需要自定義的地方就比較麻煩。

模型訓(xùn)練使用的是PA100K?數(shù)據(jù)集,需要注意的是,PA100K?數(shù)據(jù)集定義的原始label與Paddle雖然含義相同,但順序不同。

如:原始label?第1位代表是否是女性?,而Paddle?要求第1位代表是否戴帽子?,第22位才是是否是女性。

圖片

我們按照Paddle?的要求調(diào)整下原始label位置即可,這樣我們后面推理會(huì)方便些。

下載PaddleClas

git clone https://github.com/PaddlePaddle/PaddleClas

將下載的數(shù)據(jù)集解壓,放到PaddleClas的dataset目錄。

找到ppcls/configs/PULC/person_attribute/PPLCNet_x1_0.yaml?配置文件,配置圖片和label路徑。

DataLoader:
Train:
dataset:
name: MultiLabelDataset
image_root: "dataset/pa100k/" #指定訓(xùn)練圖片所在根路徑
cls_label_path: "dataset/pa100k/train_list.txt" #指定訓(xùn)練列表文件位置
label_ratio: True
transform_ops:

Eval:
dataset:
name: MultiLabelDataset
image_root: "dataset/pa100k/" #指定評(píng)估圖片所在根路徑
cls_label_path: "dataset/pa100k/val_list.txt" #指定評(píng)估列表文件位置
label_ratio: True
transform_ops:

train_list.txt的格式為

00001.jpg    0,0,1,0,....

配置好后,就可以直接訓(xùn)練了

python3 tools/train.py \
-c ./ppcls/configs/PULC/person_attribute/PPLCNet_x1_0.yaml

訓(xùn)練完后,導(dǎo)出模型

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

將導(dǎo)出的結(jié)果放在~/.paddleclas/inference_model/PULC/person_attribute/目錄下

圖片

便可以使用PaddleCls提供的函數(shù)直接調(diào)用

import paddleclas

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

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

print(result)

輸出結(jié)果如下:

[{'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'}]

模型訓(xùn)練過(guò)程就到這里了,數(shù)據(jù)集和整個(gè)項(xiàng)目的源碼已經(jīng)打包好了。

責(zé)任編輯:武曉燕 來(lái)源: 渡碼
相關(guān)推薦

2010-07-05 15:33:49

2010-09-06 17:35:03

PPPOE配置

2011-04-27 17:05:39

2010-10-15 10:01:19

無(wú)線(xiàn)網(wǎng)絡(luò)構(gòu)建

2020-02-10 19:42:01

CPIP 協(xié)議,

2021-09-30 09:59:23

OSPF網(wǎng)絡(luò)協(xié)議網(wǎng)絡(luò)技術(shù)

2010-08-03 09:17:00

2010-06-29 14:38:14

Linux服務(wù)器

2012-02-20 21:59:08

無(wú)線(xiàn)路由設(shè)置

2011-11-04 16:49:26

Action BarAndroid

2010-10-08 15:05:00

無(wú)線(xiàn)路由設(shè)置

2010-08-25 09:09:58

2010-09-09 09:52:03

Linux服務(wù)器

2010-07-14 09:55:12

2025-06-19 10:00:00

數(shù)據(jù)庫(kù)MySQL日志

2021-02-23 08:10:18

Nginx反向代理負(fù)載均衡器

2013-05-23 11:16:28

大數(shù)據(jù)技術(shù)大數(shù)據(jù)AdTime

2021-09-26 07:38:39

組合問(wèn)題數(shù)據(jù)結(jié)構(gòu)算法

2010-01-13 17:07:21

防輻射機(jī)箱選購(gòu)

2010-08-06 10:00:05

負(fù)載均衡
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)