5行Python代碼實現(xiàn)圖像分割的步驟詳解
眾所周知圖像是由若干有意義的像素組成的,圖像分割作為計算機視覺的基礎,對具有現(xiàn)有目標和較精確邊界的圖像進行分割,實現(xiàn)在圖像像素級別上的分類任務。
圖像分割可分為語義分割和實例分割兩類,區(qū)別如下:
- 語義分割:將圖像中每個像素賦予一個類別標簽,用不同的顏色來表示;
- 實例分割:無需對每個像素進行標記,只需要找到感興趣物體的邊緣輪廓。
圖像分割通常應用如下所示:
- 專業(yè)檢測:應用于專業(yè)場景的圖像分析,比如在衛(wèi)星圖像中識別建筑、道路、森林,或在醫(yī)學圖像中定位病灶、測量面積等;
- 智能交通:識別道路信息,包括車道標記、交通標志等。
本博客主要通過PixelLib模塊幫助用戶快速便捷實現(xiàn)圖像分割。
1、環(huán)境部署
在進行項目設計前,需要安裝所需的第三方庫文件:TensorFlow、Pillow、OpenCV-Python、scikit-image和PixelLib,指令如下所示:
pip install tensorflow pip install pillow pip install opencv-python pip install scikit-image pip install pixellib
2、語義分割
PixelLib使用Deeplabv3+框架實現(xiàn)語義分割,在pascalvoc數(shù)據(jù)集上訓練的Xception模型用于語義分割。
第1步:導入PixelLib模塊,代碼如下所示:
import pixellib from pixellib.semantic import semantic_segmentation
第2步:創(chuàng)建用于執(zhí)行語義分割的類實例,代碼如下所示:
segment_image = semantic_segmentation()
第3步:調用load_pascalvoc_model()函數(shù)加載在Pascal voc上訓練的Xception模型,代碼如下所示:
segment_image.load_pascalvoc_model("deeplabv3_xception_tf_dim_ordering_tf_kernels.h5")
第4步:調用segmentAsPascalvoc()函數(shù)對圖像進行分割,并且分割采用pascalvoc的顏色格式進行。此函數(shù)有兩個必選參數(shù):
- path_to_image:分割的目標圖像的路徑;
- path_to_output_image:保存分割后輸出圖像的路徑。
將路徑替換為自己環(huán)境路徑即可,代碼如下所示:
segment_image.segmentAsPascalvoc("path_to_image", output_image_name = "path_to_output_image")
上傳圖像,語義分割后效果如下所示:
也可以生成了帶有分段疊加層的圖像,只需要將segmentAsPascalvoc()函數(shù)的overlay屬性設置為True,代碼如下所示:
segment_image.segmentAsPascalvoc("sample1.jpg", output_image_name = "image_new.jpg", overlay = True)
分段疊加層效果如下所示:
3、即時分割
PixelLib的實例分割基于MaskRCNN框架實現(xiàn),也僅需5行Python代碼實現(xiàn)。
第1步:導入PixelLib模塊,代碼如下所示:
import pixellib from pixellib.instance import instance_segmentation
第2步:導入用于執(zhí)行實例細分的類并創(chuàng)建該類的實例,代碼如下所示:
segment_image = instance_segmentation()
第3步:調用load_model()函數(shù)加載Mask RCNN模型以執(zhí)行實例分割的代碼,代碼如下所示:
segment_image.load_model("mask_rcnn_coco.h5")
第4步:調用segmentImage()函數(shù)對圖像執(zhí)行實例分割。此函數(shù)有兩個必選參數(shù):
- path_to_image:模型要預測的圖像的路徑;
- output_image_name:保存分割結果的路徑。
將路徑替換為自己環(huán)境路徑即可,代碼如下所示:
segment_image.segmentImage("path_to_image", output_image_name = "output_image_path")
上傳圖像,即時分割后效果如下所示:
也可以生成分割蒙版邊界框,只需要將show_bboxes()函數(shù)的overlay屬性設置為True,代碼如下所示:
segment_image.segmentImage("sample2.jpg", output_image_name = "image_new.jpg", show_bboxes = True)
生成分割蒙版邊界框效果如下所示:
到此這篇關于5行Python代碼實現(xiàn)圖像分割的步驟詳解的文章就介紹到這了,更多相關Python 圖像分割內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
2020最新pycharm漢化安裝(python工程獅親測有效)
這篇文章主要介紹了2020最新pycharm漢化安裝(python工程獅親測有效),文中通過圖文介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-04-04Python激活Anaconda環(huán)境變量的詳細步驟
今天給大家分享Python激活Anaconda環(huán)境變量的詳細步驟,激活Anaconda環(huán)境變量分為簡潔版和詳細版,簡潔版只需要通過輸入命令進行配置即可,詳細版本文通過圖文步驟給大家介紹的非常詳細,需要的朋友參考下吧2021-06-06Python?BeautifulSoup4實現(xiàn)數(shù)據(jù)解析與提取
Beautiful?Soup是一個Python的庫,用于解析HTML和XML文檔,提供了方便的數(shù)據(jù)提取和操作功能,下面小編就來和大家詳細聊聊如何利用BeautifulSoup4實現(xiàn)數(shù)據(jù)解析與提取吧2023-10-10pandas使用apply多列生成一列數(shù)據(jù)的實例
今天小編就為大家分享一篇pandas使用apply多列生成一列數(shù)據(jù)的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-11-11淺談Python3.10 和 Python3.9 之間的差異
多年來,Python 進行了大量升級,并且在新版本中添加了許多功能。本文就詳細的介紹 一下Python3.10 和 Python3.9差異,感興趣的朋友可以了解一下2021-09-09