YOLOv7與MediaPipe在人體姿態(tài)估計上的對比
初期文章的分享,咱們簡介了YOLOv7人體姿勢預計的文章并且MediaPipe人體姿勢預計方面的文章。因為YOLOv7與MediaPipe都闊以進行人體姿勢預計,咱們本期就對照一下2個算法的不同點。
借用機械學習,進行人體33個2D姿勢探測與評價
人工自動行業(yè)也卷了嗎——YOLO系列又被更新了,YOLOv7橫空出生
基于深度學習的人體姿勢預計
自2014年Google初次公布DeepPose此后,基于深度學習的姿勢預計算法已然獲得了較大的進步。這類算法往往分2個階段工作。
職員探測
主要點定位
依據設施[CPU/GPU/TPU]的不同,不同框架的功能有所不同。有不少兩階段姿勢預計模型在基準測驗中體現(xiàn)優(yōu)良,比如:Alpha Pose、OpenPose、Deep Pose等等。但是,因為兩階模型相對高難,獲取的實時功能十分昂貴。這類模型在GPU上運作得很快,而在CPU上運作的較慢。就效益和確切性而言,MediaPipe是1個較好的姿勢預計框架。它在CPU上形成實時探測,且速率很快。
YOLOv7
與傳統(tǒng)的姿勢預計算法不同,YOLOv7姿勢是1個單級多人主要點探測器。它擁有自頂向下和自底向上兩類方式中的好處。YOLOv7姿勢是在COCO信息集上訓練的,初期的文章咱們也分享過YOLOv7人體姿勢探測的代碼。
YOLOv7 是 YOLO 系列中最超前的新式物體探測器。依據論文,它是迄今為止最快、最確切的實時物體探測算法。依據 YOLOv7 論文,最佳的模型獲取了 56.8% 的平均精度(AP),這是一切已知目標探測算法中最高的。各類模型的速率范疇為 5-160 FPS。與根基模型相比,YOLOv7 將參數數目減小到40%,計算量減小 50%。
MediaPipe人體姿勢探測
MediaPipe 是一款由 Google Research 開發(fā)并開源的多媒體機械學習模型運用框架。在谷歌,一系列首要成品,如 、Google Lens、ARCore、Google Home 并且 ,都已深度整合了 MediaPipe。
MediaPipe 的中心框架由 C++ 實行,并供應 Java 并且 Objective C 等話語的撐持。MediaPipe 的首要概念含蓋信息包(Packet)、信息流(Stream)、計算單元(Calculator)、圖(Graph)并且子圖(Subgraph)。
MediaPipe Pose是用來高保真人體姿態(tài)追蹤的ML解決計劃,借用BlazePose研發(fā)成果,還從ML Kit Pose Detection API中獲取了RGB視頻幀的全部33個2D標注(或25個上身標注)。當下最超前的方式首要依附壯大的桌面環(huán)境進行推斷,而MediaPipe Pose的方式可在大多數當代手機,乃至是Web上實行實時功能。
MediaPipe中有3個模型用來姿態(tài)預計。
YOLOv7 vs MediaPipe特點對照
YOLOv7
17 Keypoints COCO
33 Keypoints COCO + Blaze Palm + Blaze Face
YOLOv7是1個多人探測框架。MediaPipe是1個單人探測框架(首要原因是只用來CPU,速率較快),因而在咱們實行人體姿勢探測時,須要存眷能否只探測多人,或者單人,固然對自行的設備配置也有很高的需要。
MediaPipe 代碼實行人體姿勢探測
cap = cv2.VideoCapture(0)
time.sleep(2)
print("Ignoring empty camera frame.")
image = cv2.cvtColor(cv2.flip(image, 1), cv2.COLOR_BGR2RGB)
image = cv2.cvtColor(image, cv2.COLOR_RGB2BGR)
cv2.imshow('MediaPipe Pose', image)
if cv2.waitKey(5) & 0xFF == ord('q'):
因為MediaPipe是1個單人探測框架,因而在視頻中,MediaPipe只探測單個體的姿勢,其余人體姿勢則會忽視,固然,軟件會探測哪個體體姿勢,理論上是最前面的人體姿勢,可是通過試驗后,實則并非完都是如此。從上圖闊以看出,固然MediaPipe僅撐持應用在CPU上,可是探測速率與精度相當快,毛病是自動進行單人體姿勢探測。
YOLOv7 代碼實行人體姿勢探測
從 YOLOv7-Tiny 模型開啟,參數剛剛超越 600 萬。它的驗證 AP 為 35.2%,打敗了擁有類似參數的 YOLOv4-Tiny 模型。擁有近 3700 萬個參數的 YOLOv7 模型供應了 51.2% 的 AP,再次打敗了擁有更多參數的 YOLOv4 和 YOLOR 的變體。
YOLO7 系列中較大的模型,YOLOv7-X、YOLOv7-E6、YOLOv7-D6 和 YOLOv7-E6E。一切這類都打敗了 YOLOR 模型,它們的參數數目類似,AP 分別為 52.9%、55.9%、56.3% 和 56.8%。
img = letterbox(frame, input_size, stride=64, auto=True)[0]
t1 = time.time()
t2 = time.time()
fps = 1/(t2 - t1)
0.25, # Conf. Threshold.
0.65, # IoU Threshold.
nc=1, # Number of classes.
nkpt=17, # Number of keypoints.
nimg = img[0].permute(1, 2, 0) * 255
nimg = nimg.cpu().numpy().astype(np.uint8)
nimg = cv2.cvtColor(nimg, cv2.COLOR_RGB2BGR)
for idx in range(output.shape[0]):
plot_skeleton_kpts(nimg, output[idx, 7:].T, 3)
因為YOLOv7是1個多人探測框架,因而在單個視頻幀中,YOLOv7框架會實時探測多人體姿勢。從上圖闊以看出,探測速率也是很快的,這是由于此例子應用的是GPU模型運作,若YOLOv7運用在CPU上面,則探測速率很慢。
MediaPipe與YOLOv7對照探測
從以上的簡介,咱們知曉,mediapipe是1個單人探測框架,因而探測速率特別快,一樣的的一段探測目標,一樣的應用CPU進行人體姿勢探測,則mediapipe完全占一定優(yōu)勢。
CPU人體姿勢探測
可是一經上GPU,yolov7的優(yōu)勢就會大大的提升,闊以看見,一經用上了GPU,yolov7的探測速率就到達了84FPS,而因為mediapipe只是用來CPU,就算加上GPU,也施展不到GPU的優(yōu)勢。
其余文章考慮
Transformer模型注重力體制的概念
借用機械學習,進行人體33個2D姿勢探測與評價
借用機械學習,進行人手的21個3D手關節(jié)坐標探測
借用機械學習進行人臉468點的3D坐標探測,并形成3D模型
MediaPipe 集成人臉辨認,人體姿勢評價,人手探測模型
推翻2D目標探測模型,MediaPipe 3D目標探測復原真正的目標特點
MediaPipe Face Detection可運作在移動設施上的亞毫秒級人臉探測
高大上的YOLOV3目標探測算法,應用python也可輕盈實行
應用python輕盈實行高大上的YOLOV4目標探測算法
基于python的YOLOV5目標探測模型實行