當前位置:首頁 » 圖片大全 » 語義分割一個圖片多少錢
擴展閱讀
欠揍的動態圖片 2025-09-07 16:31:29
風景手機背景壁紙圖片 2025-09-07 16:27:08

語義分割一個圖片多少錢

發布時間: 2023-01-12 01:22:23

『壹』 Lecture 11 檢測與分割

我們之前都是圖像分類的任務,最後一個全連接層得到所有分類的得分。現在我們來研究計算機視覺的其他任務,比如語義分割、圖像分類與定位、目標檢測、實例分割等。

語義分割 任務中,輸入一張圖片,希望輸出能對圖像的每個像素做出分類,判斷這個像素是屬於物體或者背景,不再像之前那樣整張圖片都是一個類。語義分割不會區分實例,只關心像素,所以如果圖中有兩頭牛,會把兩塊像素都歸為牛,不會分開每一頭,以後會講到 實例分割 (Instance Segmentation)可以區分實例。

實現語義分割的一個想法是 滑動窗口 ,即將圖像分成一個個的小塊,然後使用CNN網路計算小塊的中心元素屬於哪個分類。這樣做的一個問題是,需要為每個像素計算一次,很多運算都是重復的,實際上沒人會這么做。

另一個想法是 全卷積 ( Fully Convolutional),將網路的所有層都設計成卷積層,這樣就能實現一次對圖像的所有像素進行預測。比如使用3x3的卷積層然後使用零填充保持輸入輸出的空間尺寸,最終得到一個CxHxW的特徵圖,其中C是像素分類的數量,這樣的一個特徵圖就一次計算了所有像素的分類得分。然後使用交叉熵損失、取平均、反向傳播等操作進行訓練。由於要為每個像素設置標簽,這樣的數據集花費是非常昂貴的。這里的數據集需要先確定圖像屬於哪個類別,比如貓,然後對圖像的像素點設置類別。實際應用中,如果一直保持空間尺寸的話計算量會很龐大,所以不能設置這種結構。

使用全卷積網路的一種好的形式是在網路內部使用 降采樣 (downsampling)然後使用 升采樣 (upsampling),只在最初的幾個卷積層保持尺寸,然後降采樣比如池化或跨進卷積(strided convolution)來降低尺寸,進行一系列卷積後升采樣到原來的尺寸。之所以需要去池化是因為池化減少了像素值,降低了圖像的清晰度,丟失了圖像空間結構,不知道這些像素原來在哪裡,所以也就不明確邊界應該在什麼位置,所以需要進行去池化得到這些空間信息。

然後問題是如何進行升采樣呢?

在一維中可能會表現的更清晰:濾波器被輸入加權後直接放到輸出中,輸出的步長為2,下一個位置要平移兩個像素,重疊的部分直接相加。最後為了使輸出是輸入的兩倍,需要裁掉一個像素。

之所以稱作轉置卷積,可以通過矩陣乘法來解釋,以一個一維的輸入為例 a = [a, b, c, d],現在做 3x1 的卷積,卷積核為 [x, y, z],步長1填充1,此時的卷積可以看作是卷積核組成的一個大的矩陣 X 與輸入 a 做乘法,如下圖左邊所示。(圖上應為xyz,書寫錯誤。)卷積核在輸入 a 上滑動對應元素相乘後相加得到輸出的過程,完全等價於卷積核組成的大矩陣與輸入 a 的乘法。然後將 X 轉置與 a 相乘,即轉置卷積,結果就是一個正常的卷積,改變的只是填充規則。

現在如果步長為2,情況就不一樣了。左邊的卷積仍然可以看作是乘法,而右側的轉置卷積就變成用輸入加權後的卷積核在輸出上的疊加。

綜上,語義分割任務的實現方法如下圖所示:

此外, 多視角3D重建 ( Multi-view 3D Reconstruction)也使用了降采樣和升采樣的方法。

定位 ( Localization)往往是與 分類 (Classificatio)結合在一起的,如果圖片分類是一隻貓,同時我們也想知道貓在這張圖片的什麼位置,要用一個框給框起來。這與 目標檢測 (Object Detection)是不同的,定位是一旦圖像已經歸為哪一類,比如貓,這樣我們就會有一個明確的目標去尋找,找出它的邊界即可。而目標檢測是要檢測出圖像上存在的物體。

定位可以復用分類的方法,比如AlexNet。如下圖所示,最後一個全連接層,除了得到1000個類別的得分,還會得到一個長為4的向量,表示目標的位置。這樣最後就有兩個損失,一個是正確分類的Softmax損失,另一個是正確位置的L2損失,L1、L2等損失也稱作 回歸損失 (Regression Loss)。最後將兩個損失通過某些超參數加權得到總損失,和之前的超參數不同的是,以前的超參數改變是為了減小損失,而這里的加權超參數直接會改變損失值的表達式,損失變大變小都有可能。使用總損失求梯度。這里使用的網路是使用ImageNet 預訓練過的模型,進行遷移學習。

目標檢測任務是這樣的:我們有幾個感興趣的類別,比如貓狗魚等等,現在輸入一張圖像,圖像上有幾個物體事先是不知道的,當我們我們感興趣的物體在圖像上出現時,我們希望模型能自動標記出目標物體的位置,並判斷出具體的分類。這實際上是很有挑戰的任務,也是計算機視覺中很核心的任務,對此的研究已經經歷了很多年,也有非常多的方法。

與定位最大的區別是,我們不知道圖上會有多少對象。比如圖像上只有一隻貓,我們最終的輸出只有一個位置四個數字;有兩只狗一隻貓,會輸出3個位置12個數字;那麼有一群鴨子呢?數量就很多了。所以目標檢測問題不能看作定位中的回歸問題。

另一個想法是把目標檢測問題看作分類問題。類似語義分割的想法,將圖像分成一個個的小塊,讓每一個小塊通過卷積網路判斷這塊是背景?是貓?是狗?可以這么想,但是這個小塊該怎麼獲得呢?不同的物體可能會有不同的大小、位置以及長寬比,這將是無數的情況,如果都要進行卷積,那麼計算量是非常大的。

實際上,更實用的方法是 候選區域 (Region Proposals )方法。 選擇性搜索 (Selective Search )方法就是在目標對象周圍設定2000個形狀大小位置不一的候選區域,目標物體在候選區域的可能性還是比較大的。然後對這些區域卷積,找到目標物體,雖然大多數區域都是無用的。與尋找幾乎個區域比起來,這種方法要高效的多。此外,這不是深度學習的方法,是機器學習演算法。 R-CNN 就是基於這種觀點提出的。首先對輸入圖片使用區域備選演算法,獲取2000個感興趣的區域(Regions of interest, roi),由於這些區域大小不一,所以需要處理成同樣的尺寸才能通過CNN,之後使用SVM對區域進行分類。可以使用線性回歸損失來校正包圍框,比如雖然這個框選中的物體是一個缺少頭部的狗,就需要對包圍框進行校正。總之,這是一個多損失網路。

R-CNN的問題是計算消耗大、磁碟佔用多、運行速度慢,即使測試時也要30秒測試一張圖片,因為有2000個區域。解決方法時使用 快速R-CNN (Fast R-CNN ),不在原始圖像生成備選區域,而是先整張圖片通過卷積網路得到特徵圖,然後在特徵圖上使用備選區域演算法得到感興趣的區域在特徵圖的映射,之後使用 Rol Pool將所有區域變成同樣尺寸。然後一方面使用softmax損失進行分類,一方面使用回歸損失比如L1平滑損失校正包圍框,總損失是兩部分的和,然後反向傳播進行訓練。

如下圖所示,效果還是很明顯的。但是快速R-CNN也有一個問題是運行時間被區域備選方案限制。

解決方案是 更快的R-CNN (Faster R-CNN)。這種方法的改進是與其使用固定的演算法得到備選區域,不如讓網路自己學習自己的備選區域應該是什麼。如下圖所示,前面仍然是通過卷積網路獲得特徵圖,然後通過一個 備選區域網路 (Region Proposal Network,RPN),該網路會做兩件事,一是計算分類損失,選擇的區域是目標還是不是目標;二是校正包圍框。得到備選區域後接下來的步驟就和快速R-CNN一致了,也是得到最後的分類得分和校正包圍框。訓練的過程會綜合這四個損失,最終效果很好。

Mask R-CNN是在Faster R-CNN基礎上改進而來,是2017年發布的方法。首先將整張圖像通過卷積網路和候選框生成網路,得到候選特徵在特徵圖上的映射再調整尺寸,到這里和Faster R-CNN都是相同的;現在不僅是得到分類得分和校正包圍框,還要增加一個分支通過卷積網路對每一個候選框預測一個分割區域模板。這個新增的分支就是一個在候選框中進行的微型語義分割任務。這樣上下兩個分支的任務就很明確了——上面的分支需要計算分類得分確定候選框中的目標屬於哪個分類以及通過對候選框坐標的回歸來預測邊界框的坐標;下面的分支基本類似一個微型語義分割網路,會對候選框中的每個像素進行分類,判斷每個像素是否屬於候選框的中目標。

Mask R-CNN綜合了上面講的很多方法,最終的效果也是非常好的。比如下圖最左邊,不僅框出了每個物體還分割了像素,即使很遠地方的人也被清晰的分割出來了。

此外,Mask R-CNN也可以識別動作,方法是在上面分支中增加一個關節坐標損失,這樣就能同時進行分類、檢測、動作識別、語義分割。此外,基於Faster R-CNN,運行速度也是非常快的。下圖展示的效果是很令人驚訝的,可以同時識別出圖上有多少人,分割出他們的像素區域,並且會標示他們的動作姿勢。

使用前饋模型。

YOLO 即 「You Only Look Once」 和 SSD 即 「Single-Shot MultiBox Detector」,這兩個模型是在同一時期提出的(2016),它們不會使用候選框分別進行處理,而是嘗試將其作為回歸問題,通過一個大的卷積網路,一次完成所有預測。給定輸入圖像,分成網格狀比如7x7,然後在每個小單元中心處使用 B 個基本的邊界框,比如高的、寬的、正方形的,這樣總共有 7x7xB個基本框。現在想對每個網格單元的所有基本邊界框預測目標物體,首先要預測每個基本邊界框偏移來確定邊界框和真實物體的位置差值,使用5個值(dx, dy, dh, dw, confidence)來表示偏差;然後預測每個網格單元里目標的 C 個分類(包括背景)得分,這樣每個網格單元都會得到一個分類得分,即目標所屬類別。最終的輸出就是一個三維的張量:7x7x(5*B+C)。

TensorFlow Detection API(Faster RCNN, SSD, RFCN, Mask R-CNN): 點擊這里

二維平面的目標檢測只需確定 [x, y, w, h],3D的定位框需要確定的坐標為 [x, y, z, roll, pitch, yaw],簡化後可以不需要 roll 和 pitch。比2D目標檢測要復雜的多。

『貳』 計算機視覺面試之語義分割

在深度學習廣泛應用於計算機視覺之前,人們一般使用TextonForest和Random Forest based Classifiers的方法進行語義分割。

深度學習方法中常見的一種語義分割方法是圖像塊分類(patch classification),即利用像素周圍的圖像塊對每一個像素進行分類。原因是網路模型通常包含全連接層(fully connect layer),而且要求固定大小的圖像輸入。

2014年,加州大學伯克利分校的Long等人提出全卷積網路(FCN),使得卷積神經網路不需要全連接層就可以實現密集的像素級分類,從而成為當前非常流行的像素級分類CNN架構。由於不需要全連接層,所以可以對任意大小的圖像進行語義分割,而且比傳統方法要快上很多。之後,語義分割領域幾乎所有的先進方法都是基於該模型進行擴展的。

為了保留像素的空間位置信息,有兩種方法可以解決這個問題:

(1)編碼器-解碼器結構,編碼器與解碼器之間通常存在跨越連接(shortcut connections)。U-Net是這類架構中最常用的模型之一(源於: Convolutional Networks for Biomedical Image Segmentation )。

(2)使用帶孔卷積(dilated/atrous convolutions),從而除去池化層。

條件隨機場(CRF)通常用於後處理來進一步改善分割效果。CRF是一種基於底層圖像的像素強度進行的平滑分割的圖模型,原理是相似強度的像素更可能標記為同一類別。

主要貢獻:

1. 為語義分割引入了端到端的全卷積網路。

2. 利用ImageNet的預訓練網路做語義分割。

3. 使用反卷積層(取代線性插值)進行上采樣。

4. 引入少量跳躍連接改善上采樣粗糙的像素定位。

主要貢獻:

使用編碼-解碼架構。並且將池化結果應用到解碼的過程,使用的是Pooling indices(記錄位置信息)而不是簡單地復制特徵。其實沒有跳躍連接,更節省內存。

U-Net的結構更規整,是FCN的延伸,通過將編碼器的每層結果拼接到解碼器中得到更好的結果。

移去了VGG網路的最後兩層池化層,並且後續的卷積層都採用帶孔卷積。還訓練了一個模塊,輸入卷積結果,級聯了不同孔大小的帶孔卷積層。

主要貢獻:

1. 通過帶孔卷積提取和聚合多尺度的信息。

2. 提出context mole來聚合多尺度的信息。

主要貢獻:

1. 採用了帶孔卷積。

2. 提出了金字塔形的空洞池化(Atrous Spatial Pyramid Pooling, ASPP)。

3. 採用了全連接的CRF。

由於帶孔卷積需要大量的高解析度特徵圖,對計算和內存的消耗很大,因此無法利用高解析度的精細預測。

該文章採用編碼解碼結構。編碼器是ResNet-101,解碼器是RefineNet模塊,用於連接編碼器中高解析度特徵和先前RefineNet中低解析度的特徵。

每一個RefineNet都有兩個組件,一個組件通過對低解析度特徵的上采樣操作融合不同的解析度特徵,另一個組件利用窗口為5*5且步長為1的池化層來獲取背景信息。這些組件都遵循恆等映射(identity mapping)思想,採用殘差連接設計。

主要貢獻:

1. 精心設計了解碼模塊。

2. 所有模塊遵循殘差連接設計。

金字塔池化模塊通過使用大窗口的池化層來提高感受野。使用帶孔卷積來修改ResNet網路,並增加了金字塔池化模塊。金字塔池化模塊對ResNet輸出的特徵進行不同規模的池化操作,並作上采樣後,拼接起來,最後得到結果。

金字塔池化模塊簡單來說是將DeepLab(不完全一樣)ASPP之前的feature map池化了四種尺度之後,將五種feature map拼接到一起,經過卷積,最後進行預測的過程。

在ResNet的第四個階段之後(即輸入到金字塔池化模塊的階段),在主分支損失之外增加輔助損失(其他論文稱為中間監督)。

主要貢獻:

1. 提出了金字塔池化模塊來聚合圖片上下文信息。

2. 使用附加的輔助損失函數。

理論上更深的ResNet能有很大的感受野,但研究表明實際上網路更適合收集較小區域(有效感受野)內的信息,因此使用大核來擴大感受野。但是核越大,計算量越大,因此將 k x k 的卷積近似轉換為 1 x k + k x 1 和 k x 1 + 1 x k 卷積的和。本文稱為GCN。

編碼器使用ResNet(無帶孔卷積),解碼器由GCNs和反卷積構成。此外還用到了邊界精調(Boundary Refinement, BR)的簡單殘差塊。

主要貢獻:提出具有大卷積核的編碼-解碼架構。

主要貢獻:

1. 改進ASPP。將不同孔率的帶孔卷積的結果拼接起來(DeepLab v2使用的是求和),並使用了BN。

2. 串列部署ASPP的模塊。直接對中間的特徵圖進行帶孔卷積(Dilated Convolutions(2015) 是在最後做)。

『叄』 圖像語義分割是什麼

圖像語義分割屬於人工智慧計算機視覺領域的一個重要分支,它結合了圖像分類、目標檢測和圖像分割等技術,主要針對圖像進行像素級的分類。

語義分割的結果是將圖像變成帶有一定語義信息的色塊。語義分割技術可以識別出每個色塊的語義類別,並給每個像素都標註上其對應的標簽,從而實現從底層到高層的語義推理過程,最終得到一張具有各個像素語義標注信息的分割圖像。

圖片來源:曼孚科技

『肆』 圖像分類轉語義分割難嗎

不難。圖像分類轉語義分割不難,語義分割是最簡單的,對每個像素做分類。圖像分類,根據各自在圖像信息中所反映的不同特徵,把不同類別的目標區分開來的圖像處理方法。

『伍』 語義分割是什麼意思

語義分割是數據標注領域常用的一種標注類型。

這是一張經過語義分割後的圖片:

來源:曼孚科技SEED數據標注平台

『陸』 圖片處理一般是怎麼收費的,多少錢一張呢

影樓其實主要就是靠精修加片賺錢,很多小影樓起步價幾百塊,加完精修就幾千了。
其實有方法能省錢的,可以藉助2個微信小程序,一個是「雪絹閣」專業修圖10元一張,另一個是「印鴿」列印照片,照片書,擺台,甚至更多DIY物件基本都是二十左右搞定,所以我的建議是原來套餐里的還在影樓做,談套餐的時候底片多要點,然後如果想加精修,就別去影樓那麼貴了。