1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        基于聚類的圖像分割-Python

        共 2471字,需瀏覽 5分鐘

         ·

        2021-12-14 00:00



        了解圖像分割

        當我們在做一個圖像分類任務時,首先我們會想從圖像中捕獲感興趣的區(qū)域,然后再將其輸入到模型中。讓我們嘗試一種稱為基于聚類的圖像分割技術,它會幫助我們在一定程度上提高模型性能,讓我們看看它是什么以及一些進行聚類分割的示例代碼。


        什么是圖像分割?

        想象一下我們要過馬路,過馬路之前我們會做什么?


        首先,我們會看道路兩旁,以確定接近的車輛等環(huán)境對象,然后我們會對接近的車輛的速度做出一些快速的估計,并決定何時以及如何過馬路。所有這些都發(fā)生在很短的時間內,非常很的神奇。


        1. 我們的大腦捕捉道路兩側的圖像

        2. 它檢測道路上的車輛和其他物體==物體檢測

        3. 它還確定了它檢測到的每個對象的形狀 == 圖像分割


        通過確定不同物體的形狀,我們的大腦能夠在同一張快照中檢測到多個物體,這是多么神奇啊。


        讓我們進一步了解,假設我們有我們的圖像分類模型,它能夠以 95% 上的準確率對蘋果和橙子進行分類。當我們輸入一幅同時包含蘋果和橙子的圖像時,預測精度會下降。隨著圖像中對象數(shù)量的增加,分類模型的性能會下降,這就是目標定位發(fā)揮作用的地方。


        在我們檢測圖像中的對象并對其進行分類之前,模型需要了解圖像中的內容,這就是圖像分割的幫助所在。它為圖像中的對象創(chuàng)建一個像素級的蒙版,這有助于模型更精細地理解對象的形狀及其在圖像中的位置。

        目標檢測 VS 圖像分割?


        分割的類型有哪些?

        圖像分割大致分為兩大類。

        1. 語義分割

        2. 實例分割

        檢測到的對象 — 語義段 — 實例段?


        在第一張圖片中,我們可以看到檢測到的對象都是男性。在語義分割中,我們認為所有這些像素都屬于一類,因此我們用一種顏色表示它們。另一方面,在實例分割中,這些像素屬于同一類,但我們用不同的顏色表示同一類的不同實例。


        根據(jù)我們使用的分割方法,分割可以分為許多類別。

        • 基于區(qū)域的分割

        • 基于邊緣檢測的分割

        • 基于聚類的分割

        • 基于CNN的分割等。


        接下來讓我們看一個基于聚類的分割示例。


        什么是基聚類的分割?

        聚類算法用于將彼此更相似的數(shù)據(jù)點從其他組數(shù)據(jù)點更緊密地分組。


        現(xiàn)在我們想象一幅包含蘋果和橙子的圖像。蘋果中的大部分像素點應該是紅色/綠色,這與橙色的像素值不同。如果我們能把這些點聚在一起,我們就能正確地區(qū)分每個物體,這就是基于聚類的分割的工作原理。現(xiàn)在讓我們看一些代碼示例。

        from skimage.io import imreadfrom skimage.color import rgb2grayimport numpy as npimport matplotlib.pyplot as plt%matplotlib inlinefrom scipy import ndimage# Scaling the image pixels values within 0-1img = imread('./apple-orange.jpg') / 255plt.imshow(img)plt.title('Original')plt.show()

        由于肉眼可見,圖像中有五個色段


        1. 蘋果的綠色部分

        2. 橙子的橙色部分

        3. 蘋果和橙子底部的灰色陰影

        4. 蘋果頂部和右側部分的亮黃色部分

        5. 白色背景


        讓我們看看我們是否可以使用來自 scikit-learn 的 K 均值算法對它們進行聚類

        # For clustering the image using k-means, we first need to convert it into a 2-dimensional arrayimage_2D = img.reshape(img.shape[0]*img.shape[1], img.shape[2])# Use KMeans clustering algorithm from sklearn.cluster to cluster pixels in imagefrom sklearn.cluster import KMeans# tweak the cluster size and see what happens to the Outputkmeans = KMeans(n_clusters=5, random_state=0).fit(image_2D)clustered = kmeans.cluster_centers_[kmeans.labels_]# Reshape back the image from 2D to 3D imageclustered_3D = clustered.reshape(img.shape[0], img.shape[1], img.shape[2])plt.imshow(clustered_3D)plt.title('Clustered Image')plt.show()

        效果非常好,我們能夠將五個部分組合在一起,這就是聚類分割的工作原理。目前有許多先進的技術,例如 Mask R-CNN,可以進行更細粒度的分割。



        Github代碼連接:

        https://github.com/Mathanraj-Sharma/sample-for-medium-article/blob/master/cluster-based-segmentation-skimage/cluster-based-segmentation.ipynb


        各位伙伴們好,詹帥本帥搭建了一個個人博客和小程序,匯集各種干貨和資源,也方便大家閱讀,感興趣的小伙伴請移步小程序體驗一下哦?。g迎提建議)

        推薦閱讀


        牛逼!Python常用數(shù)據(jù)類型的基本操作(長文系列第①篇)

        牛逼!Python的判斷、循環(huán)和各種表達式(長文系列第②篇)

        牛逼!Python函數(shù)和文件操作(長文系列第③篇)

        牛逼!Python錯誤、異常和模塊(長文系列第④篇)


        瀏覽 57
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

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

        手機掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            国产熟女性爱 | www18禁 | A片传媒| 黄色操逼视频免费观看 | 久久久国产精品免费A | 免费视频久久久久 | 大鸡巴免费在线视频 | 中国操逼逼 | 99re这里只有是精品 | 国产伦理精品 |