5行Python代碼實(shí)現(xiàn)圖像分割的步驟詳解
眾所周知圖像是由若干有意義的像素組成的,圖像分割作為計(jì)算機(jī)視覺(jué)的基礎(chǔ),對(duì)具有現(xiàn)有目標(biāo)和較精確邊界的圖像進(jìn)行分割,實(shí)現(xiàn)在圖像像素級(jí)別上的分類(lèi)任務(wù)。
圖像分割可分為語(yǔ)義分割和實(shí)例分割兩類(lèi),區(qū)別如下:
語(yǔ)義分割:將圖像中每個(gè)像素賦予一個(gè)類(lèi)別標(biāo)簽,用不同的顏色來(lái)表示; 實(shí)例分割:無(wú)需對(duì)每個(gè)像素進(jìn)行標(biāo)記,只需要找到感興趣物體的邊緣輪廓。圖像分割通常應(yīng)用如下所示:
專(zhuān)業(yè)檢測(cè):應(yīng)用于專(zhuān)業(yè)場(chǎng)景的圖像分析,比如在衛(wèi)星圖像中識(shí)別建筑、道路、森林,或在醫(yī)學(xué)圖像中定位病灶、測(cè)量面積等; 智能交通:識(shí)別道路信息,包括車(chē)道標(biāo)記、交通標(biāo)志等。本博客主要通過(guò)PixelLib模塊幫助用戶(hù)快速便捷實(shí)現(xiàn)圖像分割。
1、環(huán)境部署
在進(jìn)行項(xiàng)目設(shè)計(jì)前,需要安裝所需的第三方庫(kù)文件:TensorFlow、Pillow、OpenCV-Python、scikit-image和PixelLib,指令如下所示:
pip install tensorflowpip install pillowpip install opencv-pythonpip install scikit-imagepip install pixellib
2、語(yǔ)義分割
PixelLib使用Deeplabv3+框架實(shí)現(xiàn)語(yǔ)義分割,在pascalvoc數(shù)據(jù)集上訓(xùn)練的Xception模型用于語(yǔ)義分割。
第1步:導(dǎo)入PixelLib模塊,代碼如下所示:
import pixellibfrom pixellib.semantic import semantic_segmentation
第2步:創(chuàng)建用于執(zhí)行語(yǔ)義分割的類(lèi)實(shí)例,代碼如下所示:
segment_image = semantic_segmentation()
第3步:調(diào)用load_pascalvoc_model()函數(shù)加載在Pascal voc上訓(xùn)練的Xception模型,代碼如下所示:
segment_image.load_pascalvoc_model('deeplabv3_xception_tf_dim_ordering_tf_kernels.h5')
第4步:調(diào)用segmentAsPascalvoc()函數(shù)對(duì)圖像進(jìn)行分割,并且分割采用pascalvoc的顏色格式進(jìn)行。此函數(shù)有兩個(gè)必選參數(shù):
path_to_image:分割的目標(biāo)圖像的路徑; path_to_output_image:保存分割后輸出圖像的路徑。將路徑替換為自己環(huán)境路徑即可,代碼如下所示:
segment_image.segmentAsPascalvoc('path_to_image', output_image_name = 'path_to_output_image')
上傳圖像,語(yǔ)義分割后效果如下所示:
也可以生成了帶有分段疊加層的圖像,只需要將segmentAsPascalvoc()函數(shù)的overlay屬性設(shè)置為T(mén)rue,代碼如下所示:
segment_image.segmentAsPascalvoc('sample1.jpg', output_image_name = 'image_new.jpg', overlay = True)
分段疊加層效果如下所示:
3、即時(shí)分割
PixelLib的實(shí)例分割基于MaskRCNN框架實(shí)現(xiàn),也僅需5行Python代碼實(shí)現(xiàn)。
第1步:導(dǎo)入PixelLib模塊,代碼如下所示:
import pixellibfrom pixellib.instance import instance_segmentation
第2步:導(dǎo)入用于執(zhí)行實(shí)例細(xì)分的類(lèi)并創(chuàng)建該類(lèi)的實(shí)例,代碼如下所示:
segment_image = instance_segmentation()
第3步:調(diào)用load_model()函數(shù)加載Mask RCNN模型以執(zhí)行實(shí)例分割的代碼,代碼如下所示:
segment_image.load_model('mask_rcnn_coco.h5')
第4步:調(diào)用segmentImage()函數(shù)對(duì)圖像執(zhí)行實(shí)例分割。此函數(shù)有兩個(gè)必選參數(shù):
path_to_image:模型要預(yù)測(cè)的圖像的路徑; output_image_name:保存分割結(jié)果的路徑。將路徑替換為自己環(huán)境路徑即可,代碼如下所示:
segment_image.segmentImage('path_to_image', output_image_name = 'output_image_path')
上傳圖像,即時(shí)分割后效果如下所示:
也可以生成分割蒙版邊界框,只需要將show_bboxes()函數(shù)的overlay屬性設(shè)置為T(mén)rue,代碼如下所示:
segment_image.segmentImage('sample2.jpg', output_image_name = 'image_new.jpg', show_bboxes = True)
生成分割蒙版邊界框效果如下所示:
到此這篇關(guān)于5行Python代碼實(shí)現(xiàn)圖像分割的步驟詳解的文章就介紹到這了,更多相關(guān)Python 圖像分割內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!
相關(guān)文章:
1. JavaWeb Servlet中url-pattern的使用2. 淺談SpringMVC jsp前臺(tái)獲取參數(shù)的方式 EL表達(dá)式3. asp(vbscript)中自定義函數(shù)的默認(rèn)參數(shù)實(shí)現(xiàn)代碼4. React優(yōu)雅的封裝SvgIcon組件示例5. 輕松學(xué)習(xí)XML教程6. php網(wǎng)絡(luò)安全中命令執(zhí)行漏洞的產(chǎn)生及本質(zhì)探究7. ASP刪除img標(biāo)簽的style屬性只保留src的正則函數(shù)8. jsp中sitemesh修改tagRule技術(shù)分享9. ASP基礎(chǔ)知識(shí)VBScript基本元素講解10. 詳解瀏覽器的緩存機(jī)制
