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

YOLOv5+ByteTrack統(tǒng)計人流、車流

人工智能
以人流統(tǒng)計為例,實(shí)現(xiàn)這樣的系統(tǒng),需要兩個基本的步驟,第一步是識別道路上的行人,可以采用目標(biāo)檢測模型。第二步是給識別出的每個行人分配一個唯一的id,這樣我們可以跟蹤到每一個行人,計算他的行走方向,行走速度等。

哈嘍,大家好。

今天給大家分享一個人流、車流統(tǒng)計系統(tǒng)。

以人流統(tǒng)計為例,實(shí)現(xiàn)這樣的系統(tǒng),需要兩個基本的步驟,第一步是識別道路上的行人,可以采用目標(biāo)檢測模型。第二步是給識別出的每個行人分配一個唯一的id,這樣我們可以跟蹤到每一個行人,計算他的行走方向,行走速度等。

源碼和數(shù)據(jù)集獲取方式放在文末,大家自行獲取即可。

1. YOLOv5 訓(xùn)練行人識別模型

之前分享過很多篇 YOLOv5 訓(xùn)練目標(biāo)檢測模型的方式,這里再簡單說一下。

如果使用的數(shù)據(jù)沒有標(biāo)注,可以用用LabelImage進(jìn)行標(biāo)注

圖片

我提供的訓(xùn)練數(shù)據(jù)集是已經(jīng)標(biāo)注好了的,大家可以直接用。

標(biāo)注好的數(shù)據(jù)集,按照圖片和標(biāo)注文件分別存放。

圖片

數(shù)據(jù)集目錄

下載YOLOv5源碼到本地

git clone https://github.com/ultralytics/yolov5.git

在yolov5目錄下,修改data/coco128.yaml配置文件

path: ../datasets/people  # 數(shù)據(jù)集目錄
train: images/train # 訓(xùn)練集
val: images/train # 驗(yàn)證集

# Classes
names:
0: person

這里我們只訓(xùn)練行人模型,所以names只有1個。

在yolov5目錄下,創(chuàng)建weights目錄,下載預(yù)訓(xùn)練模型。

圖片

yolov5預(yù)訓(xùn)練模型

下載后,放到weights文件夾中,這里我用的是 yolov5s.pt。

修改models/yolov5s.yaml文件中的分類數(shù)量。

# YOLOv5 ?? by Ultralytics, GPL-3.0 license

# Parameters
nc: 1 # number of classes

我們只識別行人,設(shè)置成1即可。

執(zhí)行一下命令進(jìn)行訓(xùn)練

python ./train.py --data ./data/coco128.yaml --cfg ./models/yolov5s.yaml --weights ./weights/yolov5s.pt --batch-size 30 --epochs 120 --workers 8 --name base_s --project yolo_people

訓(xùn)練完成后,可以查看訓(xùn)練效果

圖片

yolov5訓(xùn)練效果

生成的模型放存放在yolo_people/base_s/weights/best.pt中,后面可以直接用它來做推理。

1. ByteTrack 行人跟蹤

識別出行人,我們可以利用多目標(biāo)跟蹤技術(shù)(MOT)技術(shù)來跟蹤行人,并給每個行人分配唯一的ID。

算法思路為:

圖片

算法流程

關(guān)鍵思路是用卡爾曼濾波預(yù)測當(dāng)前幀的跟蹤軌跡在下一幀的位置,預(yù)測框和實(shí)際框之間通過匈牙利算法,用 IoU 進(jìn)行快速相似度匹配。

圖片

MOT的方案有很多,如:SORT、DeepSORT、ByteTrack、BoT-SORT等等。

與DeepSORT不同的是,ByteTrack沒有使用 ReID 特征計算表觀相似度,這樣做的目的,一是盡可能做到簡單高速,二是檢測結(jié)果足夠好的情況下,卡爾曼濾波的預(yù)測準(zhǔn)確性已經(jīng)比較高了,能夠代替ReID。

所以,ByteTrack比較依賴目標(biāo)檢測的準(zhǔn)確度的。

下面是在VisDrone2019-MOT數(shù)據(jù)集訓(xùn)練約 10 epochs, 采用YOLO v7 w6結(jié)構(gòu), COCO預(yù)訓(xùn)練模型基礎(chǔ)上訓(xùn)練。對比幾個常見的MOT方案的效果

圖片

MOT方案效果對比

指標(biāo)解釋如下:

  • MOTA:多目標(biāo)跟蹤準(zhǔn)確度,數(shù)值越高代表跟蹤精確度越好
  • IDF1:被檢測和跟蹤的目標(biāo)中,獲取正確ID的比例,綜合考慮準(zhǔn)召,是 F1 score
  • IDS:id switch次數(shù)
  • fps:幀率

權(quán)衡準(zhǔn)確度和性能,我選擇了 ByteTrack 作為本項(xiàng)目的多目標(biāo)追蹤方案。

各種MOT追蹤的API大致類似,先準(zhǔn)備目標(biāo)檢測框

box_list = yolo_pd.to_numpy()
detections = []
for box in box_list:
l, t = int(box[0]), int(box[1])
r, b = int(box[2]), int(box[3])

conf = box[4]

detections.append([l, t, r, b, conf])

這里將識別出的行人檢測框,轉(zhuǎn)為numpy結(jié)構(gòu)。

sys.path.append('../../github/ByteTrack/')
from yolox.tracker.byte_tracker import BYTETracker, STrack

@dataclass(frozen=True)
class BYTETrackerArgs:
track_thresh: float = 0.25
track_buffer: int = 30
match_thresh: float = 0.8
aspect_ratio_thresh: float = 3.0
min_box_area: float = 1.0
mot20: bool = False

byte_tracker = BYTETracker(BYTETrackerArgs())

tracks = byte_tracker.update(
output_results=np.array(detections, dtype=float),
img_info=frame.shape,
img_size=frame.shape
)

調(diào)用ByteTrack的update函數(shù)進(jìn)行匹配,匹配后會給每一個檢測框一個唯一的ID。

主要思路和核心代碼就是這些,基于此在做一些工程編碼就可以實(shí)現(xiàn)文章開頭的效果。

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

2022-12-13 14:46:25

模型

2020-10-26 14:14:36

YOLOv5數(shù)據(jù)科學(xué) 技術(shù)

2017-09-14 09:56:00

滴滴大數(shù)據(jù)出行

2020-06-12 14:25:36

框架PyTorch開發(fā)

2021-02-19 11:09:45

機(jī)器人機(jī)器人流程自動化RPA

2014-12-12 09:50:26

Polycom遠(yuǎn)程視頻

2024-08-06 11:01:03

2023-11-01 17:41:59

RPA機(jī)器人

2019-11-25 13:23:27

物聯(lián)網(wǎng)邊緣計算5G

2015-09-24 10:24:38

北京大數(shù)據(jù)

2022-02-21 14:46:36

機(jī)器人RPA

2023-01-10 18:33:18

AIYOLO網(wǎng)絡(luò)

2020-12-22 06:35:22

物聯(lián)網(wǎng)大數(shù)據(jù)傳感器

2016-04-09 17:37:57

銳捷網(wǎng)絡(luò)商業(yè)智能系統(tǒng)無線

2020-06-11 10:20:12

智慧城市物聯(lián)網(wǎng)技術(shù)

2024-10-10 17:05:00

2021-08-27 10:48:08

人工智能AI機(jī)器人

2020-09-22 09:46:11

機(jī)器人流程自動化RPA流程

2021-11-09 10:29:56

機(jī)器人數(shù)據(jù)中心人工智能

2024-09-09 16:35:10

YOLO模型
點(diǎn)贊
收藏

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