在這篇文章中,我們將整理計(jì)算機(jī)視覺項(xiàng)目中常用的Python庫,如果你想進(jìn)入計(jì)算機(jī)視覺領(lǐng)域,可以先了解下本文介紹的庫,這會(huì)對(duì)你的工作很有幫助。 1、PIL/Pillow Pillow是一個(gè)通用且用戶友好的Python庫,提供了豐富的函數(shù)集和對(duì)各種圖像格式的支持,使其成為開發(fā)人員在其項(xiàng)目中處理圖像的必要工具。 它支持打開、操作和保存許多不同的圖像文件格式,用戶還可以對(duì)圖像執(zhí)行基本操作,如裁剪、調(diào)整大小、旋轉(zhuǎn)和更改圖像顏色。 Pillow還可以讓你在圖像上添加文字和形狀,提供一種簡單的方式來注釋你的視覺效果。 這個(gè)庫也是torchvison使用的圖像處理庫,它功能強(qiáng)大并且使用很簡單推薦使用。 2、OpenCV (Open Source Computer Vision Library)OpenCV無疑是最流行的圖像處理庫之一。它最初由英特爾公司開發(fā),已被廣泛應(yīng)用于計(jì)算機(jī)視覺領(lǐng)域。它支持無數(shù)與計(jì)算機(jī)視覺和機(jī)器學(xué)習(xí)相關(guān)的算法,這有助于理解視覺數(shù)據(jù)并做出有見地的決策。OpenCV還針對(duì)實(shí)時(shí)應(yīng)用進(jìn)行了高度優(yōu)化,使其成為視頻監(jiān)控,自動(dòng)駕駛汽車和先進(jìn)機(jī)器人的絕佳選擇。 OpenCV 功能最多,并且在處理速度方面要比Pillow快,所以在對(duì)于速度有要求的情況下推薦使用它。 另外一點(diǎn)就是OpenCV 讀取的通道是BGR ,而其他的庫都是RGB 的,所以如果混用的話需要轉(zhuǎn)換,還記得這個(gè)代碼吧:
Mahotas包括一組用于圖像處理和計(jì)算機(jī)視覺的函數(shù),這些函數(shù)主要是在高性能的c++中完成的,并且使用多線程,使其速度非??臁?/p> 它還包括各種形態(tài)操作,如侵蝕,擴(kuò)張和連接成分分析。這些操作是圖像二值化、去噪和形狀分析等任務(wù)的基礎(chǔ)。這些功能OpenCV 都有,但是Mahotas更專注于圖像的圖像處理,而并不像OpenCV那樣什么都有,所以,Mahotas的API更簡單、也更友好。并且學(xué)習(xí)起來也比OpenCV簡單,但是速度方面卻差不多。 例子這是一個(gè)簡單的示例(使用 mahotas 附帶的示例文件),使用上述閾值區(qū)域作為種子調(diào)用分水嶺(我們使用 Otsu 定義閾值)。
這是一個(gè)非常簡單的使用示例mahotas.distance(計(jì)算距離圖):
Scikit-Image建立在Scikit-Learn機(jī)器學(xué)習(xí)庫的基礎(chǔ)上的擴(kuò)展功能,包括更高級(jí)的圖像處理能力。所以如果已經(jīng)在使用Scikit進(jìn)行ML,那么可以考慮使用這個(gè)庫。 它提供了一套完整的圖像處理算法。它支持圖像分割、幾何變換、色彩空間操作和過濾。 與許多其他庫不同,Scikit-Image支持多維圖像,這對(duì)于涉及視頻或醫(yī)學(xué)成像的任務(wù)是很有幫助的。Scikit-Image與其他Python科學(xué)庫(如NumPy和SciPy)無縫集成。
TensorFlow Image是TensorFlow的一個(gè)模塊,它支持圖像解碼、編碼、裁剪、調(diào)整大小和轉(zhuǎn)換。還可以利用TensorFlow的GPU支持,為更大的數(shù)據(jù)集提供更快的圖像處理。 也就是說如果你使用TF,那么可以使用它來作為訓(xùn)練Pipline的一部分。 使用 Keras 效用函數(shù)加載數(shù)據(jù):tf.keras.utils.image_dataset_from_directory 效用函數(shù)從磁盤加載圖像。 創(chuàng)建數(shù)據(jù)集,為加載器定義一些參數(shù):
開發(fā)模型時(shí),最好使用驗(yàn)證拆分。您將使用 80% 的圖像進(jìn)行訓(xùn)練,20% 的圖像進(jìn)行驗(yàn)證。
與TensorFlow Image類似,PyTorch Vision是PyTorch生態(tài)系統(tǒng)的一部分,主要用于與圖像處理相關(guān)的機(jī)器學(xué)習(xí)任務(wù)。
SimpleCV建立在OpenCV、PIL(Python Imaging Library)和NumPy之上,為用戶提供了一組簡單而強(qiáng)大的函數(shù)和工具,用于加載、處理和分析圖像。 SimpleCV的設(shè)計(jì)目標(biāo)是使計(jì)算機(jī)視覺技術(shù)對(duì)于初學(xué)者和非專業(yè)人士也能更加可靠和易于使用。它提供了一個(gè)簡單的API,隱藏了底層的復(fù)雜性,使用戶能夠快速實(shí)現(xiàn)常見的計(jì)算機(jī)視覺任務(wù)。 但是目前官方維護(hù)也較少,所以這個(gè)項(xiàng)目很有可能會(huì)夭折。
Imageio是一個(gè)用于讀取和寫入多種圖像格式的Python庫。它提供了一個(gè)簡單而強(qiáng)大的API,使用戶能夠輕松地處理圖像和視頻數(shù)據(jù)。Imageio提供了一個(gè)通用的數(shù)據(jù)模型,使用戶能夠以多種方式存儲(chǔ)圖像數(shù)據(jù)。它可以使用NumPy數(shù)組、PIL圖像對(duì)象或簡單的Python字節(jié)字符串來表示圖像數(shù)據(jù)。并且它提供了逐幀讀取和寫入視頻文件的功能,這對(duì)于處理視頻流或從視頻中提取幀非常有用。
Albumentations是一個(gè)用于圖像增強(qiáng)和數(shù)據(jù)增強(qiáng)的Python庫。它專注于在機(jī)器學(xué)習(xí)和計(jì)算機(jī)視覺任務(wù)中提供高效、靈活和易于使用的數(shù)據(jù)增強(qiáng)方法。 我一直把這個(gè)庫當(dāng)成torchvision的替代,因?yàn)樗粌H有很多數(shù)據(jù)增強(qiáng)方法,還能夠直接處理掩碼bbox的增強(qiáng)。
timm是一個(gè)PyTorch模型庫,雖然可能和圖像處理沒有關(guān)系,但是它提供了廣泛的預(yù)訓(xùn)練模型和計(jì)算機(jī)視覺模型的集合,這對(duì)我們來進(jìn)行深度學(xué)習(xí)的時(shí)候是非常有幫助的?,F(xiàn)在它已經(jīng)是huggingface的子項(xiàng)目了,這意味著這個(gè)項(xiàng)目有了資金的支持,所以不會(huì)擔(dān)心發(fā)展的問題。
無論你是剛開始基本的圖像處理還是探索高級(jí)機(jī)器學(xué)習(xí)模型,這些庫都為廣泛的圖像處理任務(wù)提供了必要的工具。 |
|