詳解在OpenCV中實現(xiàn)的圖像標注技術(shù)
圖像標注在計算機視覺中很重要,計算機視覺是一種技術(shù),它允許計算機從數(shù)字圖像或視頻中獲得高水平的理解力,并以人類的方式觀察和解釋視覺信息。注釋,通常被稱為圖片標簽,是大多數(shù)計算機視覺模型發(fā)展中的一個關(guān)鍵階段。本文將重點討論在OpenCV的幫助下創(chuàng)建這些注釋。以下是將要涉及的主題。
目錄
- 圖像注解
- 對圖像注釋的需求
- 圖像注解的類型
- 用OpenCV實現(xiàn)圖像注解
機器學習模型的表現(xiàn)越好,你的注釋的質(zhì)量就越高。讓我們了解一下圖像注釋。
圖像注解
在一個特定的數(shù)據(jù)集中對圖像進行分類以訓練機器學習模型的過程被稱為圖像注釋。當人工注釋完成后,被標記的圖片由機器學習或深度學習模型處理,以重復注釋,不需要人工干預。
因此,圖片注釋被利用來表明你的系統(tǒng)需要識別的方面。監(jiān)督學習是在給定標記數(shù)據(jù)的情況下訓練一個ML模型的過程。
圖片注解建立了模型試圖復制的標準,因此標簽中的任何錯誤也會被重復。因此,正確的圖片注釋為訓練神經(jīng)網(wǎng)絡(luò)奠定了基礎(chǔ),使注釋成為計算機視覺中最關(guān)鍵的工作之一。
圖片注釋可以手工完成,也可以在自動注釋工具的幫助下完成。自動注釋技術(shù)通常是預先訓練好的算法,可以準確地對照片進行標注。他們的注釋是復雜的注釋工作所需要的,如構(gòu)建片段掩碼,這需要時間來生成。
你是否在尋找數(shù)據(jù)科學中使用的Python庫的完整庫。 查看這里.
對圖片注釋的需求
對圖片進行標注是功能數(shù)據(jù)集所需要的,因為它能讓訓練模型了解到圖片的相關(guān)方面(類別),然后它可以用來在新鮮的、從未見過的圖片中識別這些類別。
圖像注釋產(chǎn)生了訓練數(shù)據(jù),有監(jiān)督的人工智能模型可以從中學習。注釋圖像的方式預測了人工智能在查看和學習圖像后的行為方式。因此,在訓練中經(jīng)常描述糟糕的注釋,導致模型做出糟糕的預測。
在應(yīng)對獨特的挑戰(zhàn)和在新領(lǐng)域使用人工智能時,注釋數(shù)據(jù)是非常重要的。對于像圖像分類和分割這樣的典型任務(wù),經(jīng)常有預訓練的模型,它們可以通過使用轉(zhuǎn)移學習以最小的輸入量定制到特定的用例。
另一方面,從頭開始訓練一個全面的模型,經(jīng)常需要大量的注釋數(shù)據(jù),分為訓練集、驗證集和測試集,這很難產(chǎn)生,也很費時。無監(jiān)督算法,不需要注釋數(shù)據(jù),可以直接在原始數(shù)據(jù)上訓練。
圖像注解的類型
有三種盛行的圖片注釋方法,你為你的用例選擇的方法將由項目的復雜性決定。每種使用的高質(zhì)量圖片數(shù)據(jù)越多,人工智能的預測就越準確。
分類法
分類是最簡單、最快速的圖片注釋方法,因為它只需為一張圖片分配一個標簽。例如,你可以希望對一組雜貨店貨架的照片進行分類,以確定哪些照片含有蘇打水,哪些不含有。
這種方法非常適合捕捉抽象信息,比如上面的例子,或者一天中的時間,如果圖片中有汽車,或者從一開始就過濾掉不符合標準的照片。雖然分類法在提供單一的、高層次的標簽方面是最快的,但它也是我們強調(diào)的三個類別中最模糊的,因為它不能確定物品在圖像中的位置。
物體檢測
注釋者使用對象檢測給圖片中的特定事物貼上標簽。因此,如果一張圖片被標記為有冰激凌,這就更進一步說明了冰激凌在圖片中的位置,或者如果特別是搜索可可冰激凌的位置。物體檢測可以通過各種方法來完成,包括。
- 邊界框。注釋者使用矩形和正方形來定義目標物體在二維中的位置。這是最經(jīng)常使用的圖片注釋方法之一。立方體,也被稱為三維邊界框,被注釋者用來指定目標對象的位置和深度。
- 多邊形分割。注釋者采用復雜的多邊形來指定不對稱的目標項目的位置,而這些目標項目并不簡單地適合在一個盒子里。
- 線條。注釋器檢測圖片中的基本邊界線和曲線,用線條和樣條來區(qū)分部分。例如,注釋器可以為自駕車圖片注釋項目命名高速公路上的眾多車道。
這種方法仍然不是最精確的,因為物體檢測允許在使用方框或線條時出現(xiàn)重疊。它所提供的是項目的大致位置,同時仍然是一個相當快速的注釋程序。
語義分割
語義分割克服了物體識別中的重疊問題,保證了圖像的每個組成部分只屬于一個類別。這種方法通常在像素層面上進行,需要注釋者為每個像素分配類別(如行人、汽車或標志)。這有助于教導人工智能模型如何檢測和分類某些項目,即使它們被遮擋。例如,如果一個購物車遮住了圖像的一部分,可以用語義分割來定義可可冰淇淋的樣子,直到像素級別,讓模型知道它實際上仍然是可可冰淇淋。
用OpenCV實現(xiàn)圖像注解
在這篇文章中,我們將使用邊界框和顏色分割方法進行圖像注釋。
在邊界框中,方法將是在物體周圍手動繪制不同的邊界形狀,并在其中添加一些文字。
在顏色分割中,我們將使用KNN算法來分割查詢圖像中物體的顏色。顏色將根據(jù) "K "值被分割,"K "是最近的鄰居的數(shù)量,圖像上被分割的部分可以被視為注釋的部分。
包圍盒方法
導入必要的庫
import cv2 import numpy as np import matplotlib.pyplot as plt
讀取查詢圖像
input_img=cv2.imread('annotation_image.jpg',cv2.IMREAD_COLOR)
查詢圖像
在本文中,我們使用的是彩色圖像,所以我們需要使用 "cv2.IMREAD_COLOR"。因為它指示加載一個彩色圖片。任何圖片的透明度都會被忽略。這是默認設(shè)置。我們也可以為這個標志傳遞整數(shù)值1。
在對象上畫一條線
image_line=input_img.copy() cv2.line(image_line, (900,150), (1100,150), (0,255,255), thickness=5,lineType=cv2.LINE_AA) plt.figure(figsize=(10,10)) plt.imshow(image_line[:,:,::-1]) plt.show()
cv2.line需要輸入直線的起點和終點的坐標,以及直線的厚度、透明度和顏色。
印度分析雜志
在物體周圍畫一個圓
image_circle=input_img.copy() cv2.circle(image_circle, (1030,340),200, (0,255,255), thickness=5,lineType=cv2.LINE_AA) plt.figure(figsize=(10,10)) plt.imshow(image_circle[:,:,::-1]) plt.show()
cv2.circle'接收半徑和圓的坐標作為輸入。其余部分與前面討論的直線函數(shù)相同。
印度分析》雜志
在物體周圍畫一個矩形
image_rect=input_img.copy() cv2.rectangle(image_rect, (900,150),(1100,530), (0,0,255), thickness=5,lineType=cv2.LINE_AA) plt.figure(figsize=(10,10)) plt.imshow(image_rect[:,:,::-1]) plt.show()
它需要左上角的坐標和右下角的坐標來繪制矩形。
印度分析》雜志
KNN方法進行分割
導入必要的庫
import cv2 import numpy as np import matplotlib.pyplot as plt
讀取和預處理
img = cv2.cvtColor(input_img,cv2.COLOR_BGR2RGB) image_reshape = img.reshape((-1,3)) image_2d = np.float32(image_reshape)
改變顏色的順序,因為在OpenCV中,圖像的顏色是以藍、綠、紅(BGR)來讀取的。要求是紅、綠、藍(RGB)。
應(yīng)用KNN
criteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 100, 1.0) K = 4 attempts=10 ret,label,center=cv2.kmeans(twoDimage,K,None,criteria,attempts,cv2.KMEANS_PP_CENTERS) center = np.uint8(center) res = center[label.flatten()] result_image = res.reshape((img.shape))
由于圖像是一個高分辨率的圖像,所以有很多數(shù)據(jù)點需要處理,如果迭代次數(shù)多,就會耗費時間。我們將迭代次數(shù)限制為100次,并且將ε值設(shè)置為最高值。k近鄰被設(shè)置為4,嘗試次數(shù)為10。
plt.figure(figsize=(10,10)) plt.imshow(result_image[:,:,::-1]) plt.show()
印度分析雜志
該算法對顏色進行了很好的分割??梢钥吹剿{色、白色、灰色和棕色被分開。人們可以對圖像進行屏蔽,并進一步調(diào)整算法。
結(jié)論
處理數(shù)據(jù)最耗時的方面之一是數(shù)據(jù)收集和注釋。然而,它是訓練算法的基礎(chǔ),必須在可行的情況下以最大的精度執(zhí)行。適當?shù)淖⑨尳?jīng)常會在后期創(chuàng)建模型的過程中節(jié)省大量的時間。通過這篇文章,我們已經(jīng)了解了不同類型的注釋和它們的實現(xiàn)。
參考文獻
The postImage annotation techniques with implementation in OpenCVappeared first onAnalytics India Magazine.
到此這篇關(guān)于在OpenCV中實現(xiàn)的圖像標注技術(shù)的文章就介紹到這了,更多相關(guān)OpenCV圖像標注內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Windows下pycharm安裝第三方庫失敗(通用解決方案)
這篇文章主要介紹了Windows下pycharm安裝第三方庫失敗(通用解決方案),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-09-09Python臨時文件創(chuàng)建之tempfile模塊介紹
這篇文章主要介紹了Python臨時文件創(chuàng)建之tempfile模塊,Python的tempfile模塊是用來創(chuàng)建臨時文件或者文件夾的跨平臺工具,下面關(guān)于模塊簡單介紹需要的小伙伴可以參考一下2022-03-03pandas 實現(xiàn)某一列分組,其他列合并成list
這篇文章主要介紹了pandas 實現(xiàn)某一列分組,其他列合并成list的案例。具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-03-03python編碼總結(jié)(編碼類型、格式、轉(zhuǎn)碼)
這篇文章主要介紹了python編碼操作,包括編碼類型、格式、轉(zhuǎn)碼等,并結(jié)合實例分析了相關(guān)操作技巧與注意事項,需要的朋友可以參考下2016-07-07