【CV项目实战】纯新手如何从零开始完成一个工业级图像分割任务的整个流程?...
大家好,歡迎來到專欄《CV項目實戰》,在這個專欄中我們會講述計算機視覺相關的項目實戰,有大型的完整項目,也有精煉的核心算法實戰。
本次主要講述一個完整的圖像分割項目的標準流程,涉及數據標注,模型訓練,模型測試。
作者&編輯 | 言有三
本文資源與圖像分割結果展示
本文篇幅:4300字
背景要求:會使用Python和Pytorch深度學習開源框架
附帶資料:Pytorch完整工程和標注工具可以從本文末公眾號獲取
同步平臺:有三AI知識星球(一周內同步全文和Pytorch+Caffe代碼,數據集)
1 項目背景
圖像處理中,研究者往往只對圖像中的某些區域感興趣,在此基礎上才有可能對目標進行后續的處理與分析。圖像分割技術就是把圖像中屬于目標區域的感興趣區域進行半自動或者自動地提取分離出來,屬于計算機視覺領域中最基礎的任務之一。
為了讓新手們能夠一次性體驗一個圖像分割任務的完整流程,本次我們選擇帶領大家完成一個天空背景圖像分割任務,包括數據集的獲取與標注,模型的訓練和測試,同時也將這次的實驗與上一期內容結合起來,完成嘴唇部位的分割。
2 準備工作
2.1 環境搭建
本次項目開發需要以下環境:
(1) Linux系統,推薦ubuntu16.04或者ubuntu18.04。使用windows系統也可以完成,但是使用Linux效率更高。
(2) 最好擁有一塊顯存不低于6G的GPU顯卡,如果沒有使用CPU進行訓練速度較慢。
(3)?安裝好的Pytorch(或Caffe)
2.2 數據獲取
由于沒有開源的數據集,我們首先要學會使用爬蟲爬取圖像,然后對獲得的圖片數據進行整理,包括重命名,格式統一,如果不清楚整個流程,可以參考我們上一次《【CV項目實戰】純新手如何從零開始完成一個工業級的圖像分類任務?》,獲得到的圖像如下:
2.3 數據標注
接下來,我們需要對數據進行標注。圖像分割任務要求對每一個像素進行預測,所以需要像素級別的標注結果,當然我們實際標注的時候往往是通過畫輪廓形成閉合區域,下面使用我們自己開發的工具進行標注,步驟包括:
(1) 選擇圖片。
(2) 導入配置文件。
(3) 標注。
操作指導視頻如下,工具獲取方式請閱讀至本文末尾。
如果要標注多個類別,可以配置多個類和對應的顏色,標注完之后的樣本和結果如下:
需要注意的是,標注的結果并不是我們用于訓練的標簽,因為圖像分割本身是對每一個圖像像素進行分類,在當前的開源框架中,每一個像素的類別也是從0,1,2,3這樣依次增加的。
所以需要把上面的彩色圖,轉換為單通道圖,其中每一個像素值等于它的類別,如果上圖中白色作為背景,類別為0,紅色作為背景,類別為1,則可以用matlab或者python opencv遍歷圖像進行轉換,python的代碼如下。
import cv2
import sys
import os
import numpy as np
imagepaths = os.listdir(sys.argv[1])
for imagepath in imagepaths:
? ?img = cv2.imread(os.path.join(sys.argv[1],imagepath))
? ?mask = (img == (0,0,255)).astype(np.uint8)
? ?cv2.imwrite(os.path.join(sys.argv[2],imagepath),mask)
與50位技術專家面對面20年技術見證,附贈技術全景圖
總結
以上是生活随笔為你收集整理的【CV项目实战】纯新手如何从零开始完成一个工业级图像分割任务的整个流程?...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【CV项目实战】纯新手如何从零开始完成一
- 下一篇: 【通知】3月第三周直播预告,模型精简前沿