想象一下:你和你的自動駕駛車正在穿越擁擠的街道。你是否曾經(jīng)想過這樣的自動駕駛汽車是如何看待這個世界的?它實(shí)際上在不到1/10秒的時間內(nèi)玩起了“我瞧瞧”的游戲。
自動駕駛汽車必須在瞬間內(nèi)識別人、標(biāo)志和車輛。這就是為什么在當(dāng)今社會中,準(zhǔn)確找到圖像中的對象如此重要的原因。準(zhǔn)確找到物體有助于這些汽車迅速做出決策,以確保我們所有人的安全。如果汽車錯誤地認(rèn)為標(biāo)志是行人,可能會發(fā)生糟糕的事情。
車輛在圖像中的檢測
什么是目標(biāo)檢測?
這些自動駕駛汽車正在進(jìn)行的正式名稱是目標(biāo)定位。目標(biāo)檢測旨在不僅對圖像中的對象進(jìn)行分類,還要找到該對象在圖像中的位置。這對于各種不同的任務(wù)都非常重要,因?yàn)樗棺詣玉{駛車輛能夠在復(fù)雜的交通場景中安全導(dǎo)航。
目標(biāo)檢測有各種不同的應(yīng)用。在醫(yī)學(xué)成像中,目標(biāo)檢測對于診斷疾病至關(guān)重要,在農(nóng)業(yè)技術(shù)中用于作物監(jiān)測,在增強(qiáng)現(xiàn)實(shí)中用于無縫用戶交互。準(zhǔn)確的目標(biāo)檢測不僅有助于理解和解釋視覺內(nèi)容,而且還為做出明智決策奠定了基礎(chǔ)。
在圖像中檢測對象
目標(biāo)檢測是如何工作的?
計(jì)算機(jī)中的目標(biāo)檢測由卷積神經(jīng)網(wǎng)絡(luò)提供支持。這些卷積神經(jīng)網(wǎng)絡(luò)能夠從圖像中提取特征,從而實(shí)現(xiàn)圖像的分類。有許多不同類型的目標(biāo)定位模型。一些目標(biāo)定位模型包括YOLO、SSD和R-CNN。YOLO是最強(qiáng)大且最高效的模型。它是最常用的目標(biāo)檢測模型。
這些圖像檢測神經(jīng)網(wǎng)絡(luò)首先通過分類頭預(yù)測圖像中的內(nèi)容。然后,在回歸頭中預(yù)測每個對象在圖像中的位置。分類旨在對圖像進(jìn)行特定數(shù)量的類別分類,而回歸旨在找到一個相關(guān)的數(shù)字,在圖像檢測的情況下是邊界框的x和y坐標(biāo)。
圖像檢測神經(jīng)網(wǎng)絡(luò)的架構(gòu)
介紹YOLO
YOLO,即“You Only Look Once”,改變了目標(biāo)檢測領(lǐng)域的游戲規(guī)則,它非常快速和高效。
YOLOv5是如何工作的?
與舊方法進(jìn)行多輪圖像處理不同,它使用深度神經(jīng)網(wǎng)絡(luò),特別是卷積神經(jīng)網(wǎng)絡(luò)(CNNs),來檢測對象。但是,它以聰明的方式使用CNN。它將圖像分成小節(jié)并預(yù)測事物的位置以及對其猜測的自信程度,所有這些都一次性完成。
它將圖像分為SxS網(wǎng)格,每個單元格一個。如果對象的中心落在單元格下,該單元格負(fù)責(zé)該特定對象。對于每個單元格,它預(yù)測B個邊界框。它還使用C類概率預(yù)測每個框的置信度。對于每個邊界框,有5個預(yù)測:x、y、寬度、高度和置信度分?jǐn)?shù)。最終的預(yù)測被編碼為SxSx(Bx5+C)張量,即多維向量。當(dāng)YOLO在Pascal VOC上進(jìn)行評估時,這是一個用于目標(biāo)檢測的著名數(shù)據(jù)集,圖像被分為一個7x7的網(wǎng)格,每個單元格有2個邊界框的預(yù)測,以及20個總標(biāo)簽類。這導(dǎo)致了一個7x7x30的張量作為預(yù)測。
相較之前的方法Faster R-CNN,它依賴于一個更復(fù)雜的系統(tǒng)。它首先在圖像中提出潛在區(qū)域,然后分析每個區(qū)域以單獨(dú)檢測對象。這種方法涉及多個步驟,使其相對于YOLOv5而言更慢。另一方面,YOLOv5跳過了區(qū)域建議步驟,直接預(yù)測邊界框和對象概率。這個簡化的過程顯著加速了目標(biāo)檢測,同時保持了高準(zhǔn)確性。
數(shù)據(jù)集
YOLOv5訓(xùn)練的數(shù)據(jù)集是COCO數(shù)據(jù)集。COCO數(shù)據(jù)集是640x640的圖像,可用于圖像檢測、圖像分割和圖像字幕?偣灿80個類別在COCO數(shù)據(jù)集中。由于COCO是一個非常龐大的數(shù)據(jù)集,因此它對于創(chuàng)建諸如YOLOv5之類的通用模型非常有用。
評估圖像檢測模型的準(zhǔn)確性
與所有機(jī)器學(xué)習(xí)模型一樣,我們需要測量模型的準(zhǔn)確性。那么對于目標(biāo)檢測模型,如何進(jìn)行準(zhǔn)確性評估呢?圖像檢測模型使用一種稱為交并比(IoU)的方法。較高的IoU表示預(yù)測邊界框與實(shí)際邊界框之間的匹配程度更高。
它通過將重疊區(qū)域的面積除以并集的面積來實(shí)現(xiàn)。IoU為1意味著預(yù)測和實(shí)際情況完全相同。
IoU的計(jì)算方式
使用Python進(jìn)行YOLO
既然我們了解了YOLO的工作原理以及它是如何訓(xùn)練的,我們?nèi)绾卧谧约旱某绦蛑芯帉懘a并實(shí)施呢?Ultralytics已經(jīng)將YOLOv5開源,允許任何人在其自己的程序中使用YOLOv5。使用PyTorch hub,我們可以使用YOLOv5并測試圖像識別功能。
在實(shí)施YOLOv5時,我面臨的最具挑戰(zhàn)性的決定之一實(shí)際上是弄清楚如何實(shí)現(xiàn)它。有許多不同的方法,如Ultralytics和Roboflow。我決定使用Ultralytics,因?yàn)閁ltralytics使得與Python程序集成變得非常容易,尤其是與PyTorch一起使用。
你也可以查看Roboflow!Roboflow可以讓工程師創(chuàng)建和注釋數(shù)據(jù)集,開發(fā)模型,并將模型部署在API端點(diǎn)上,我們可以將其部署到NVIDIA Jetson、iOS、瀏覽器和Raspberry Pi上!
TL;DR
目標(biāo)檢測對于自動駕駛汽車和醫(yī)學(xué)診斷等應(yīng)用非常重要。
2. YOLOv5通過準(zhǔn)確地在圖像中識別對象,大大簡化和改進(jìn)了目標(biāo)檢測,超越了以前的方法(如Faster R-CNN)的復(fù)雜性和速度。
結(jié)論
總的來說,YOLO是機(jī)器學(xué)習(xí)和計(jì)算機(jī)視覺中非常強(qiáng)大的工具。它非常準(zhǔn)確,而且由于Ultralytics對這些模型的開源,任何人,包括你和我,都可以利用這些最先進(jìn)的模型進(jìn)行工作和創(chuàng)建酷炫的應(yīng)用程序。