<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          5行代碼,快速實現(xiàn)圖像分割,代碼逐行詳解,手把手教你處理圖像 | 開源

          共 5396字,需瀏覽 11分鐘

           ·

          2021-11-11 13:30

          點擊上方小白學(xué)視覺”,選擇加"星標"或“置頂”

          重磅干貨,第一時間送達

          圖像分割,作為計算機視覺的基礎(chǔ),是圖像理解的重要組成部分,也是圖像處理的難點之一。

          那么,如何優(yōu)雅且體面的圖像分割?

          5行代碼、分分鐘實現(xiàn)的庫——PixelLib,了解一下。

          當然,如此好用的項目,開源是必須的。

          為什么要用到圖像分割?


          雖然計算機視覺研究工作者,會經(jīng)常接觸圖像分割的問題,但是我們還是需要對其做下“贅述”(方便初學(xué)者)

          我們都知道每個圖像都是有一組像素值組成。簡單來說,圖像分割就是在像素級上,對圖像進行分類的任務(wù)。

          圖像分割中使用的一些“獨門秘技”,使它可以處理一些關(guān)鍵的計算機視覺任務(wù)。主要分為2類:

          • 語義分割:就是把圖像中每個像素賦予一個類別標簽,用不同的顏色來表示。

          • 實例分割:它不需要對每個像素進行標記,它只需要找到感興趣物體的邊緣輪廓就行。

          它的身影也經(jīng)常會出現(xiàn)在比較重要的場景中:

          • 無人駕駛汽車視覺系統(tǒng),可以有效的理解道路場景。

          • 醫(yī)療圖像分割,可以幫助醫(yī)生進行診斷測試。

          • 衛(wèi)星圖像分析,等等。

          所以,圖像分割技術(shù)的應(yīng)用還是非常重要的。

          接下來,我們就直奔主題,開始了解一下PixelLib,這個神奇又好用的庫。

          快速安裝PixelLib????????????


          PixelLib這個庫可以非常簡單的實現(xiàn)圖像分割——5行代碼就可以實現(xiàn)語義分割和實例分割。

          老規(guī)矩,先介紹一下安裝環(huán)境

          安裝最新版本的TensorFlow、Pillow、OpenCV-Python、scikit-image和PixelLib:

          pip3?install?tensorflow
          pip3?install?pillow
          pip3?install?opencv-python
          pip3?install?scikit-image
          pip3?install?pixellib


          PixelLib實現(xiàn)語義分割


          PixelLib在執(zhí)行語義分割任務(wù)時,采用的是Deeplabv3+框架,以及在pascalvoc上預(yù)訓(xùn)練的Xception模型。

          用在pascalvoc上預(yù)訓(xùn)練的Xception模型執(zhí)行語義分割:

          import?pixellib
          from?pixellib.semantic?import?semantic_segmentation
          segment_image?=?semantic_segmentation()
          segment_image.load_pascalvoc_model(“deeplabv3_xception_tf_dim_ordering_tf_kernels.h5”)
          segment_image.segmentAsPascalvoc(“path_to_image”,?output_image_name?=?“path_to_output_image”)

          讓我們看一下每行代碼:

          import?pixellib
          from?pixellib.semantic?import?semantic_segmentation

          #created?an?instance?of?semantic?segmentation?class
          segment_image?=?semantic_segmentation()

          用于執(zhí)行語義分割的類,是從pixellib導(dǎo)入的,創(chuàng)建了一個類的實例。

          segment_image.load_pascalvoc_model(“deeplabv3_xception_tf_dim_ordering_tf_kernels.h5”)

          調(diào)用函數(shù)來加載在pascal voc上訓(xùn)練的xception模型(xception模型可以從文末傳送門鏈接處下載)

          segment_image.segmentAsPascalvoc(“path_to_image”,?output_image_name?=?“path_to_output_image”)

          這是對圖像進行分割的代碼行,這個函數(shù)包含了兩個參數(shù):

          • path_to_image:圖像被分割的路徑。

          • path_to_output_image:保存輸出圖像的路徑,圖像將被保存在你當前的工作目錄中。

          接下來,上圖,實戰(zhàn)

          圖像文件命名為:sample1.jpg,如下圖所示。

          執(zhí)行代碼如下:

          import?pixellib
          from?pixellib.semantic?import?semantic_segmentation
          segment_image?=?semantic_segmentation()
          segment_image.load_pascalvoc_model(“deeplabv3_xception_tf_dim_ordering_tf_kernels.h5”)
          segment_image.segmentAsPascalvoc(“sample1.jpg”,?output_image_name?=?“image_new.jpg”)


          可以看到,在執(zhí)行代碼后,保存的圖像中,所有對象都被分割了。

          也可以對代碼稍作修改,獲取一張帶有目標對象分割重疊(segmentation overlay)的圖像。

          segment_image.segmentAsPascalvoc(“sample1.jpg”,?output_image_name?=?“image_new.jpg”,?overlay?=?True)

          添加了一個額外的參數(shù),并設(shè)置為True,就生成了帶有分隔疊加的圖像。

          可以通過修改下面的代碼,來檢查執(zhí)行分割所需的推理時間。

          import?pixellib
          from?pixellib.semantic?import?semantic_segmentation
          import?time
          segment_image?=?semantic_segmentation()
          segment_image.load_pascalvoc_model(“pascal.h5”)
          start?=?time.time()
          segment_image.segmentAsPascalvoc(“sample1.jpg”,?output_image_name=?“image_new.jpg”)
          end?=?time.time()
          print(f”Inference?Time:?{end-start:.2f}seconds”)

          輸出如下:

          Inference?Time:?8.19seconds

          可以看到,在圖像上執(zhí)行語義分割,只用了8.19秒。

          這個xception模型是用pascalvoc數(shù)據(jù)集訓(xùn)練的,有20個常用對象類別。

          對象及其相應(yīng)的color map如下所示:



          PixelLib實現(xiàn)實例分割


          雖然語義分割的結(jié)果看起來還不錯,但在圖像分割的某些特定任務(wù)上,可能就不太理想。

          在語義分割中,相同類別的對象被賦予相同的colormap,因此語義分割可能無法提供特別充分的圖像信息。

          于是,便誕生了實例分割——同一類別的對象被賦予不同的colormap。

          PixelLib在執(zhí)行實例分割時,基于的框架是Mask RCNN,代碼如下:

          import?pixellib
          from?pixellib.instance?import?instance_segmentation
          segment_image?=?instance_segmentation()
          segment_image.load_model(“mask_rcnn_coco.h5”)
          segment_image.segmentImage(“path_to_image”,?output_image_name?=?“output_image_path”)

          同樣,我們先來拆解一下每行代碼。

          import?pixellib
          from?pixellib.instance?import?instance_segmentation
          segment_image?=?instance_segmentation()

          導(dǎo)入了用于執(zhí)行實例分割的類,創(chuàng)建了該類的一個實例。

          segment_image.load_model(“mask_rcnn_coco.h5”)

          這是加載 Mask RCNN 模型來執(zhí)行實例分割的代碼(Mask RCNN模型可以從文末傳送門鏈接處下載)

          segment_image.segmentImage(“path_to_image”,?output_image_name?=?“output_image_path”)

          這是對圖像進行實例分割的代碼,它需要兩個參數(shù):

          • path_to_image:模型所要預(yù)測圖像的路徑。

          • output_image_name:保存分割結(jié)果的路徑,將被保存在當前的工作目錄中。

          上圖,實戰(zhàn)第二彈!

          圖像文件命名為:sample2.jpg,如下圖所示。

          執(zhí)行代碼如下:

          import?pixellib
          from?pixellib.instance?import?instance_segmentation
          segment_image?=?instance_segmentation()
          segment_image.load_model(“mask_rcnn_coco.h5”)
          segment_image.segmentImage(“sample2.jpg”,?output_image_name?=?“image_new.jpg”)


          上圖便是保存到目錄的圖片,現(xiàn)在可以看到語義分割和實例分割之間的明顯區(qū)別——在實例分割中,同一類別的所有對象,都被賦予了不同的colormap。

          若是想用邊界框(bounding box)來實現(xiàn)分割,可以對代碼稍作修改:

          segment_image.segmentImage(“sample2.jpg”,?output_image_name?=?“image_new.jpg”,?show_bboxes?=?True)

          這樣,就可以得到一個包含分割蒙版和邊界框的保存圖像。

          同樣的,也可以通過代碼查詢實例分割的推理時間:

          import?pixellib
          from?pixellib.instance?import?instance_segmentation
          import?time
          segment_image?=?instance_segmentation()
          segment_image.load_model(“mask_rcnn_coco.h5”)
          start?=?time.time()
          segment_image.segmentImage(“former.jpg”,?output_image_name=?“image_new.jpg”)
          end?=?time.time()
          print(f”Inference?Time:?{end-start:.2f}seconds”)

          輸出結(jié)果如下:

          Inference?Time:?12.55?seconds

          可以看到,在圖像上執(zhí)行實例分割,需要12.55秒的時間。

          最后,奉上項目、模型下載地址,快去試試吧~

          傳送門


          PixelLib項目地址:https://github.com/ayoolaolafenwa/PixelLib

          xception模型下載地址:
          https://github.com/bonlime/keras-deeplab-v3-plus/releases/download/1.1/deeplabv3_xception_tf_dim_ordering_tf_kernels.h5

          Mask RCNN模型下載地址:
          https://github.com/matterport/Mask_RCNN/releases/download/v2.0/mask_rcnn_coco.h5

          下載1:OpenCV-Contrib擴展模塊中文版教程
          在「小白學(xué)視覺」公眾號后臺回復(fù):擴展模塊中文教程即可下載全網(wǎng)第一份OpenCV擴展模塊教程中文版,涵蓋擴展模塊安裝、SFM算法、立體視覺、目標跟蹤、生物視覺、超分辨率處理等二十多章內(nèi)容。

          下載2:Python視覺實戰(zhàn)項目52講
          小白學(xué)視覺公眾號后臺回復(fù):Python視覺實戰(zhàn)項目即可下載包括圖像分割、口罩檢測、車道線檢測、車輛計數(shù)、添加眼線、車牌識別、字符識別、情緒檢測、文本內(nèi)容提取、面部識別等31個視覺實戰(zhàn)項目,助力快速學(xué)校計算機視覺。

          下載3:OpenCV實戰(zhàn)項目20講
          小白學(xué)視覺公眾號后臺回復(fù):OpenCV實戰(zhàn)項目20講即可下載含有20個基于OpenCV實現(xiàn)20個實戰(zhàn)項目,實現(xiàn)OpenCV學(xué)習(xí)進階。

          交流群


          歡迎加入公眾號讀者群一起和同行交流,目前有SLAM、三維視覺、傳感器自動駕駛、計算攝影、檢測、分割、識別、醫(yī)學(xué)影像、GAN算法競賽等微信群(以后會逐漸細分),請掃描下面微信號加群,備注:”昵稱+學(xué)校/公司+研究方向“,例如:”張三?+?上海交大?+?視覺SLAM“。請按照格式備注,否則不予通過。添加成功后會根據(jù)研究方向邀請進入相關(guān)微信群。請勿在群內(nèi)發(fā)送廣告,否則會請出群,謝謝理解~


          瀏覽 44
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  欧美奇米影视1873 | 大相焦依人在钱 12 | www.欧美黄 | 免费播放一级A片 | 狠狠躁狠狠躁视频专区 |