自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

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

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

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

圖片

識別的屬性包括以下 10 類

圖片

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

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

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

1. 行人識別與追蹤

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

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

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

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

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

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

label?只有一個位置是1。

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

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

label?可以有多個位置是1。

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

另一種可以直接訓(xùn)練,但對需要注意網(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 個屬性的多分類標(biāo)簽
x = Dense(26, activatinotallow='sigmoid')(x)

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

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

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

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

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

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

圖片

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

下載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/" #指定評估圖片所在根路徑
cls_label_path: "dataset/pa100k/val_list.txt" #指定評估列表文件位置
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)練過程就到這里了,數(shù)據(jù)集和整個項(xiàng)目的源碼已經(jīng)打包好了。

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

2010-07-05 15:33:49

2011-04-27 17:05:39

2010-09-06 17:35:03

PPPOE配置

2010-10-15 10:01:19

無線網(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-06-29 14:38:14

Linux服務(wù)器

2010-08-03 09:17:00

2010-10-08 15:05:00

無線路由設(shè)置

2012-02-20 21:59:08

無線路由設(shè)置

2011-11-04 16:49:26

Action BarAndroid

2010-09-09 09:52:03

Linux服務(wù)器

2010-07-14 09:55:12

2010-08-25 09:09:58

2021-02-23 08:10:18

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

2021-09-26 07:38:39

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

2013-05-23 11:16:28

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

2010-01-13 17:07:21

防輻射機(jī)箱選購

2010-08-06 10:00:05

負(fù)載均衡

2020-11-18 09:25:39

Docker
點(diǎn)贊
收藏

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