色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何優雅且體面的圖像分割

OpenCV學堂 ? 來源:量子位 ? 作者:量子位 ? 2022-08-24 09:10 ? 次閱讀

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

那么,如何優雅且體面的圖像分割?

5行代碼、分分鐘實現的庫——PixelLib,了解一下。

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

為什么要用到圖像分割?

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

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

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

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

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

它的身影也經常會出現在比較重要的場景中:

無人駕駛汽車視覺系統,可以有效的理解道路場景。

醫療圖像分割,可以幫助醫生進行診斷測試。

衛星圖像分析,等等。

所以,圖像分割技術的應用還是非常重要的。

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

快速安裝PixelLib

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

老規矩,先介紹一下安裝環境。

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

pip3installtensorflow
pip3installpillow
pip3installopencv-python
pip3installscikit-image
pip3installpixellib

PixelLib實現語義分割

PixelLib在執行語義分割任務時,采用的是Deeplabv3+框架,以及在pascalvoc上預訓練的Xception模型。

用在pascalvoc上預訓練的Xception模型執行語義分割:

importpixellib
frompixellib.semanticimportsemantic_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”)

讓我們看一下每行代碼:

importpixellib
frompixellib.semanticimportsemantic_segmentation

#createdaninstanceofsemanticsegmentationclass
segment_image=semantic_segmentation()

用于執行語義分割的類,是從pixellib導入的,創建了一個類的實例。

segment_image.load_pascalvoc_model(“deeplabv3_xception_tf_dim_ordering_tf_kernels.h5”)

調用函數來加載在pascal voc上訓練的xception模型(xception模型可以從文末傳送門鏈接處下載)。

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

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

path_to_image:圖像被分割的路徑。

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

接下來,上圖,實戰

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

執行代碼如下:

importpixellib
frompixellib.semanticimportsemantic_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”)

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

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

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

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

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

importpixellib
frompixellib.semanticimportsemantic_segmentation
importtime
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”InferenceTime:{end-start:.2f}seconds”)

輸出如下:

InferenceTime:8.19seconds

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

這個xception模型是用pascalvoc數據集訓練的,有20個常用對象類別。

對象及其相應的color map如下所示:

a247dbfc-22e5-11ed-ba43-dac502259ad0.png

PixelLib實現實例分割

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

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

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

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

importpixellib
frompixellib.instanceimportinstance_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”)

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

importpixellib
frompixellib.instanceimportinstance_segmentation
segment_image=instance_segmentation()

導入了用于執行實例分割的類,創建了該類的一個實例。

segment_image.load_model(“mask_rcnn_coco.h5”)

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

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

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

path_to_image:模型所要預測圖像的路徑。

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

上圖,實戰第二彈!

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

執行代碼如下:

importpixellib
frompixellib.instanceimportinstance_segmentation
segment_image=instance_segmentation()
segment_image.load_model(“mask_rcnn_coco.h5”)
segment_image.segmentImage(“sample2.jpg”,output_image_name=“image_new.jpg”)

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

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

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

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

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

importpixellib
frompixellib.instanceimportinstance_segmentation
importtime
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”InferenceTime:{end-start:.2f}seconds”)

輸出結果如下:

InferenceTime:12.55seconds

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

審核編輯:彭靜
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 圖像分割
    +關注

    關注

    4

    文章

    182

    瀏覽量

    17995
  • 計算機視覺
    +關注

    關注

    8

    文章

    1698

    瀏覽量

    45976
  • 無人駕駛
    +關注

    關注

    98

    文章

    4054

    瀏覽量

    120447

原文標題:簡單粗暴,5行代碼,快速實現圖像分割

文章出處:【微信號:CVSCHOOL,微信公眾號:OpenCV學堂】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    如何使用Arduino和圖形LCD創建體面的游戲

    在本教程中,我們將學習如何使用 Arduino 和圖形 LCD 創建體面的游戲。
    的頭像 發表于 11-15 17:29 ?2002次閱讀
    如何使用Arduino和圖形LCD創建<b class='flag-5'>體面的</b>游戲

    基于改進遺傳算法的圖像分割方法

    基于改進遺傳算法的圖像分割方法提出一種應用于圖像分割的改進遺傳算法,算法中引入了優生算子、改進的變異算子和新個體,避免了局部早熟,提高了收斂速度和全局收斂能力。   關鍵詞:
    發表于 09-19 09:36

    PCB缺陷檢測中圖像分割算法

    圖像分割圖像處理中占有重要的地位,分割結果的好壞直接影響圖像的后續處理。本文介紹了4種常用的圖像
    發表于 06-16 15:31 ?0次下載
    PCB缺陷檢測中<b class='flag-5'>圖像</b><b class='flag-5'>分割</b>算法

    圖像分割—基于圖的圖像分割

    圖像分割—基于圖的圖像分割圖像分割—基于圖的圖像
    發表于 11-19 16:17 ?0次下載

    基于Matlab圖像分割的研究

    圖像分割圖像處理過渡到圖像分析這個過程中起著非常重要的作用,它是圖像工程的核心,圖像
    發表于 01-04 15:10 ?0次下載

    圖像分割圖像邊緣檢測

     圖像分割的研究多年來一直受到人們的高度重視,至今提出了各種類型的分割算法。Pal把圖像分割算法分成了6類:閾值
    發表于 12-19 09:29 ?1.1w次閱讀
    <b class='flag-5'>圖像</b><b class='flag-5'>分割</b>和<b class='flag-5'>圖像</b>邊緣檢測

    圖像分割技術的原理及應用

    圖像分割至今尚無通用的自身理論。隨著各學科許多新理論和新方法的提出,出現了許多與一些特定理論、方法相結合的圖像分割方法。特征空間聚類法進行圖像
    發表于 12-19 15:00 ?4.1w次閱讀
    <b class='flag-5'>圖像</b><b class='flag-5'>分割</b>技術的原理及應用

    圖像分割的基本方法解析

    本文詳細介紹了圖像分割的基本方法有:基于邊緣的圖像分割方法、閾值分割方法、區域分割方法、基于圖論
    發表于 12-20 11:06 ?10.9w次閱讀
    <b class='flag-5'>圖像</b><b class='flag-5'>分割</b>的基本方法解析

    基于內容的圖像分割方法綜述

    圖像分割是指將圖像分成若干具有相似性質的區域的過程,是許多圖像處理任務的預處理步驟.近年來,國內外學者主要研究基于圖像內容的
    發表于 01-02 16:52 ?2次下載
    基于內容的<b class='flag-5'>圖像</b><b class='flag-5'>分割</b>方法綜述

    人體分割識別圖像技術的原理及應用

    人體分割識別圖像技術是一種將人體從圖像分割出來,并對人體進行識別和特征提取的技術。該技術主要利用計算機視覺和圖像處理算法對人體
    的頭像 發表于 06-15 17:44 ?1082次閱讀

    什么是圖像分割?圖像分割的體系結構和方法

    圖像分割(Image Segmentation)是計算機視覺領域中的一項重要基礎技術,是圖像理解中的重要一環。前端時間,數據科學家Derrick Mwiti在一篇文章中,就什么是圖像
    的頭像 發表于 08-18 10:34 ?6260次閱讀
    什么是<b class='flag-5'>圖像</b><b class='flag-5'>分割</b>?<b class='flag-5'>圖像</b><b class='flag-5'>分割</b>的體系結構和方法

    使用PyTorch加速圖像分割

    使用PyTorch加速圖像分割
    的頭像 發表于 08-31 14:27 ?823次閱讀
    使用PyTorch加速<b class='flag-5'>圖像</b><b class='flag-5'>分割</b>

    機器人視覺技術中常見的圖像分割方法

    機器人視覺技術中的圖像分割方法是一個廣泛深入的研究領域。圖像分割是將圖像劃分為多個區域或對象的
    的頭像 發表于 07-09 09:31 ?656次閱讀

    圖像分割和語義分割的區別與聯系

    圖像分割和語義分割是計算機視覺領域中兩個重要的概念,它們在圖像處理和分析中發揮著關鍵作用。 1. 圖像
    的頭像 發表于 07-17 09:55 ?907次閱讀

    圖像語義分割的實用性是什么

    圖像語義分割是一種重要的計算機視覺任務,它旨在將圖像中的每個像素分配到相應的語義類別中。這項技術在許多領域都有廣泛的應用,如自動駕駛、醫學圖像分析、機器人導航等。 一、
    的頭像 發表于 07-17 09:56 ?415次閱讀
    主站蜘蛛池模板: 亚洲 自拍 偷拍 另类综合图区| 国产真实露脸乱子伦| 成人精品视频网站| 成人免费精品视频| 人人插人人射| 日韩性大片| 亚洲AV久久无码精品热九九| 夜色视频社区| 4hu四虎免费影院www| YY600800新视觉理论私人| 国产36d在线观看| 鸡鸡插屁股| 久久免费看少妇高潮A片特爽 | 性春院| 999av视频| 超碰国产人人做人人爽| 国产精品亚洲欧美一区麻豆| 久久草香蕉频线观| 欧美日韩久久久精品A片| 四川老师边上网课边被啪视频| 亚洲精品久久久久一区二区三| 最好看中文字幕国语| 东北女人奶大毛多水多| 含羞草影院AE在线观看| 男人边吃奶边摸边做刺激情话| 色综合a在线| 一本色道久久综合亚洲精品加 | 99热国产这里只有精品9九| 高h全肉图| 久久无码人妻AV精品一区| 日本妈妈在线观看中文字幕| 亚洲人女同志video| swag合集120部| 果冻传媒视频在线播放| 欧美无码专区| 亚洲人成电影网站在线观看| 把极品白丝老师啪到腿软| 精品国产5g影院天天爽| 青青操久久| 在线观看永久免费网站| 国产 交换 丝雨 巅峰|