5行Python代碼實現圖像分割

目錄

1、環境部署

2、語義分割

3、即時分割


衆所周知圖像是由若干有意義的像素組成的,圖像分割作爲計算機視覺的基礎,對具有現有目標和較精確邊界的圖像進行分割,實現在圖像像素級別上的分類任務。

圖像分割可分爲語義分割和實例分割兩類,區別如下:

  • 語義分割:將圖像中每個像素賦予一個類別標籤,用不同的顏色來表示;
  • 實例分割:無需對每個像素進行標記,只需要找到感興趣物體的邊緣輪廓。

圖像分割通常應用如下所示:

  • 專業檢測:應用於專業場景的圖像分析,比如在衛星圖像中識別建築、道路、森林,或在醫學圖像中定位病竈、測量面積等;
  • 智能交通:識別道路信息,包括車道標記、交通標誌等。

本博客主要通過PixelLib模塊幫助用戶快速便捷實現圖像分割。

1、環境部署

在進行項目設計前,需要安裝所需的第三方庫文件: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+框架實現語義分割,在pascalvoc數據集上訓練的Xception模型用於語義分割。

第1步:導入PixelLib模塊,代碼如下所示:

import pixellib
from pixellib.semantic import semantic_segmentation

第2步:創建用於執行語義分割的類實例,代碼如下所示:

segment_image = semantic_segmentation()

第3步:調用load_pascalvoc_model()函數加載在Pascal voc上訓練的Xception模型,代碼如下所示:

segment_image.load_pascalvoc_model("deeplabv3_xception_tf_dim_ordering_tf_kernels.h5")

第4步:調用segmentAsPascalvoc()函數對圖像進行分割,並且分割採用pascalvoc的顏色格式進行。此函數有兩個必選參數:

  • path_to_image:分割的目標圖像的路徑;
  • path_to_output_image:保存分割後輸出圖像的路徑。

將路徑替換爲自己環境路徑即可,代碼如下所示:

segment_image.segmentAsPascalvoc("path_to_image", output_image_name = "path_to_output_image")

上傳圖像,語義分割後效果如下所示:

也可以生成了帶有分段疊加層的圖像,只需要將segmentAsPascalvoc()函數的overlay屬性設置爲True,代碼如下所示:

segment_image.segmentAsPascalvoc("sample1.jpg", output_image_name = "image_new.jpg", overlay = True)

分段疊加層效果如下所示:

3、即時分割

PixelLib的實例分割基於MaskRCNN框架實現,也僅需5行Python代碼實現。

第1步:導入PixelLib模塊,代碼如下所示:

import pixellib
from pixellib.instance import instance_segmentation

第2步:導入用於執行實例細分的類並創建該類的實例,代碼如下所示:

segment_image = instance_segmentation()

 第3步:調用load_model()函數加載Mask RCNN模型以執行實例分割的代碼,代碼如下所示:

segment_image.load_model("mask_rcnn_coco.h5")

 第4步:調用segmentImage()函數對圖像執行實例分割。此函數有兩個必選參數:

  • path_to_image:模型要預測的圖像的路徑;
  • output_image_name:保存分割結果的路徑。

將路徑替換爲自己環境路徑即可,代碼如下所示:

segment_image.segmentImage("path_to_image", output_image_name = "output_image_path")

 上傳圖像,即時分割後效果如下所示:

 也可以生成分割蒙版邊界框,只需要將show_bboxes()函數的overlay屬性設置爲True,代碼如下所示:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章