日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

语义分割VOC2012标签处理

發(fā)布時間:2023/12/14 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 语义分割VOC2012标签处理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

語義分割VOC2012標簽處理

    • 準備操作
    • 標簽處理
    • 運行網絡
    • 結語

準備操作

PASCAL-VOC2012數據集介紹官網: 點擊

VOC2012數據集分為20類,包括背景為21類,分別如下:

  • Person: person
  • Animal: bird, cat, cow, dog, horse, sheep
  • Vehicle: aeroplane, bicycle, boat, bus, car, motorbike, train
  • Indoor: bottle, chair, dining table, potted plant, sofa, tv/monitor

下載后得到的文件:

進行解壓,得到下列文件夾:

JPEGImage 文件夾中存放的是原始圖像
SegmentationClass 文件夾中存放的是label可視化的彩色圖,如:

我們需要對 SegmentationClass 文件夾下的標簽進行處理,得到灰度圖

標簽處理

我們寫一個Python腳本:

from tqdm import tqdm import numpy as np import cv2 import os# 標簽中每個RGB顏色的值 VOC_COLORMAP = np.array([[0, 0, 0], [128, 0, 0], [0, 128, 0], [128, 128, 0],[0, 0, 128], [128, 0, 128], [0, 128, 128], [128, 128, 128],[64, 0, 0], [192, 0, 0], [64, 128, 0], [192, 128, 0],[64, 0, 128], [192, 0, 128], [64, 128, 128], [192, 128, 128],[0, 64, 0], [128, 64, 0], [0, 192, 0], [128, 192, 0],[0, 64, 128]]) # 標簽其標注的類別 VOC_CLASSES = ['background', 'aeroplane', 'bicycle', 'bird', 'boat','bottle', 'bus', 'car', 'cat', 'chair', 'cow','diningtable', 'dog', 'horse', 'motorbike', 'person','potted plant', 'sheep', 'sofa', 'train', 'tv/monitor']# 處理txt中的對應圖像 txt_path = '/home/DATA/database/VOC2012/VOCdevkit/VOC2012/ImageSets/Segmentation/trainval.txt' # 標簽所在的文件夾 label_file_path = '/home/DATA/database/VOC2012/VOCdevkit/VOC2012/SegmentationClass' # 處理后的標簽保存的地址 gray_save_path = '/home/DATA/database/Voc2012/new_label/'with open(txt_path, 'r') as f:file_names = f.readlines()for name in tqdm(file_names):name = name.strip('\n') # 去掉換行符label_name = name + '.png' # label文件名label_url = os.path.join(label_file_path, label_name)mask = cv2.imread(label_url)mask = cv2.cvtColor(mask, cv2.COLOR_BGR2RGB) # 通道轉換mask = mask.astype(int) label_mask = np.zeros((mask.shape[0], mask.shape[1]), dtype=np.int16)# 標簽處理for ii, label in enumerate(VOC_COLORMAP):locations = np.all(mask == label, axis=-1)label_mask[locations] = ii# 標簽保存cv2.imwrite(gray_save_path+label_name, label_mask)

腳本運行完成后,即可在對應的路徑下得到處理完成的標簽
處理前:

處理后:

運行網絡

我們隨便找一個網絡簡單的測試一下

較少迭代次數:
emmmmm,再多跑跑…

較多迭代次數:

這回看著還行

結語

很多數據集的標簽都需要我們手動處理一下,以上只是一個小例子。

總結

以上是生活随笔為你收集整理的语义分割VOC2012标签处理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。