1. 程式人生 > >Pascalvoc資料集製作

Pascalvoc資料集製作

用深度學習做物體檢測的都離不開資料集,本文教你如何製作自己的資料集,格式為Pascalvoc。整個流程如下。

使用方法非常簡單,網上各種教程。

2.建立Pascalvoc目錄結構,在指定目錄下建立Annatations、ImageSets、JPEGImages三個資料夾即可。在ImageSets目錄下建立Main資料夾。目錄結構如下:

./

Annatations

ImageSets

    Main

JPEGImages

3.由於Pascalvoc影象命名格式為000001.jpg,因此你需要把你的影象也按照這種排序規則命名。這裡提供一份python程式:

# -*- coding:utf8 -*-  
import os  
import sys  
class BatchRename():  
    ''''' 
    批量重新命名資料夾中的圖片檔案 
    '''  
    def __init__(self):  
        #給定目標目錄  
        self.path = './JPEGImages'  
  
    def rename(self):  
        filelist = os.listdir(self.path)  
        total_num = len(filelist)  
        i = 1  
        n = 6  
        for item in filelist:  
            if item.endswith('.jpg'):  
                n = 6 - len(str(i))  
                src = os.path.join(os.path.abspath(self.path), item)  
                dst = os.path.join(os.path.abspath(self.path), str(0)*n + str(i) + '.jpg')  
                try:  
                    os.rename(src, dst)  
                    #print ('converting %s to %s ...' % (src, dst)  )
                    i = i + 1             
                except:  
                    continue  
if __name__ == '__main__':  
    demo = BatchRename()  
    demo.rename() 

4.用Label-Image工具依次對./JPEGImages資料夾中的所有影象進行標註,每一張影象都會生成對應的xxx.xml檔案,將所有的xml檔案放在Annatations目錄裡。下面是標註的例子:

5.最後劃分訓練樣本,測試樣本,驗證樣本。

Matlab版程式碼如下:

%%
%該程式碼根據已生成的xml,製作VOC2007資料集中的trainval.txt;train.txt;test.txt和val.txt
%trainval佔總資料集的50%,test佔總資料集的50%;train佔trainval的50%,val佔trainval的50%;
%上面所佔百分比可根據自己的資料集修改,如果資料集比較少,test和val可少一些
%%
%注意修改下面四個值
xmlfilepath='Annotations';
txtsavepath='ImageSets\Main\\';
trainval_percent=0.6;%trainval佔整個資料集的百分比,剩下部分就是test所佔百分比
train_percent=0.6;%train佔trainval的百分比,剩下部分就是val所佔百分比

xmlfile=dir(xmlfilepath);
numOfxml=length(xmlfile)-2;

trainval=sort(randperm(numOfxml,floor(numOfxml*trainval_percent)));
test=sort(setdiff(1:numOfxml,trainval));

trainvalsize=length(trainval);%trainval的大小
train=sort(trainval(randperm(trainvalsize,floor(trainvalsize*train_percent))));
val=sort(setdiff(trainval,train));


ftrainval=fopen([txtsavepath 'trainval.txt'],'w');
ftest=fopen([txtsavepath 'test.txt'],'w');
ftrain=fopen([txtsavepath 'train.txt'],'w');
fval=fopen([txtsavepath 'val.txt'],'w');


for i=1:numOfxml
    if ismember(i,trainval)
        fprintf(ftrainval,'%s\n',xmlfile(i+2).name(1:end-4));
        if ismember(i,train)
            fprintf(ftrain,'%s\n',xmlfile(i+2).name(1:end-4));
        else
            fprintf(fval,'%s\n',xmlfile(i+2).name(1:end-4));
        end
    else
        fprintf(ftest,'%s\n',xmlfile(i+2).name(1:end-4));
    end
end
fclose(ftrainval);
fclose(ftrain);
fclose(fval);
fclose(ftest);

Python版程式碼如下:

# -*- coding:utf8 -*-  
import os  
import random  
trainval_percent = 0.66  
train_percent = 0.5  
xmlfilepath = 'Annatations'  
txtsavepath = 'ImageSets\Main'  
total_xml = os.listdir(xmlfilepath)  
 
num=len(total_xml)  
list=range(num)  
tv=int(num*trainval_percent)  
tr=int(tv*train_percent)  
trainval= random.sample(list,tv)  
train=random.sample(trainval,tr)  
  
ftrainval = open('ImageSets/Main/trainval.txt', 'w')  
ftest = open('ImageSets/Main/test.txt', 'w')  
ftrain = open('ImageSets/Main/train.txt', 'w')  
fval = open('ImageSets/Main/val.txt', 'w')  

for i  in list:  
    name=total_xml[i][:-4]+'\n'  
    if i in trainval:  
        ftrainval.write(name)  
        if i in train:  
            ftrain.write(name)  
        else:  
            fval.write(name)  
    else:  
        ftest.write(name)  
  
ftrainval.close()  
ftrain.close()  
fval.close()  
ftest .close()  

下一篇將會介紹如何用Tensorflow-SSD演算法訓練自己製作的Pascalvoc資料集。

相關推薦

Pascalvoc資料製作

用深度學習做物體檢測的都離不開資料集,本文教你如何製作自己的資料集,格式為Pascalvoc。整個流程如下。 使用方法非常簡單,網上各種教程。 2.建立Pascalvoc目錄結構,在指定目錄下建立Annatations、ImageSets、JPEGImages三個資料

資料製作之xml檔案轉化為csv

# -*- coding: utf-8 -*- """ 將資料夾內所有XML檔案的資訊記錄到CSV檔案中 """ import os import glob import pandas as pd import xml.etree.ElementTree as ET os.chdir('

資料製作之txt轉xml

問題描述: 現有images圖片,txt檔案包含四種類別bounding box 座標,需要將txt中兩種類別座標提取出來並轉化成xml檔案。 images資料夾中有18184張圖片,txt資料夾中只有16907個txt檔案(即有一千多張圖片是沒有標註的,需要將這些圖片刪除

論文Multi-Perspective Sentence Similarity Modeling with Convolution Neural Networks實現之資料製作

1.資料集 本文采用的是STS資料集,如下圖所示,包括所有的2012-2016年的資料,而all資料夾包含2012-2015的所有資料。 每一個檔案的具體資料如下所示,每一行為一個三元組:<相似性得分,句子1,句子2>. 在實現時將all資料夾中的所有資料當作

VOC格式資料製作

rename %% %圖片儲存路徑為: %E:\image\car %E:\image\person %car和person是儲存車和行人的資料夾 %這些資料夾還可以有多個, %放在image資料夾裡就行 %該程式碼的作用是將圖片名字改成000123.jp

VOC2007格式資料製作

                                <div class="article-copyright">                     版權宣告:本文為博主原創文章,轉載需宣告出處。                    http

關於資料製作過程中對圖片的一些操作

#給圖片建立資料名稱列表: ls > list.txt 給當目錄下的圖片在當前目錄下一個名為list.txt的圖片名稱列表文字檔案 #在已建立圖片名稱列表文字檔案的前提下,給圖片增添型別號 在圖片所在的資料夾下開啟終端,執行下列命令: sed -i “1

影象分割 | FCN資料製作的全流程(影象標註)

一 全卷積神經網路 文章所有程式碼已上傳至github,覺得好用就給個star吧,謝謝 深度學習影象分割(FCN)訓練自己的模型大致可以以下三步: 1.為自己的資料製作label; 2.將自己的資料分為train,val和test集; 3.仿照voc_lyaers.py編寫自己的輸入資料層。

caffe fcn資料製作 -標籤

caffe下fcn資料集的製作:看過我上篇部落格的人,想必已經跑通了作者的fcn資料集,現在就是製作自己的資料集並進行訓練。其實不難,首先我們分析一下作者的資料集。根據他的資料集,模仿一個即可。首先我們看作者訓練時需要的兩個資料集voc和dataset(這裡我的voc,我自己改了名字叫做voc2016):

MXNET資料製作,生成rec檔案

https://github.com/apache/incubator-mxnet/blob/master/tools/im2rec.py (一)製作rec資料集 (1)下載im2rec.py 檔案 (2)python im2rec.py train 檔案地址(內部按類別分成不同的資料夾)

ubuntu 使用yolov3 yolo-tiny-v3 基於cudnn 7.1 + cuda 9.1 + opencv 3.4.0 以及yolo資料製作

1.我在Ubuntu官網上直接下載並安裝ubuntu ,顯示卡使用的gtx10702.在nvidia官網家上下載cuda9.1 runtime ubuntu16.04版本3.下載cudnn7.1 (需要註冊)4.在opencv官網上下載opencv3.4.0 原始碼5.在nv

利用Darket 和YOLOV3訓練自己的資料(製作VOC)

1. 配置Darknet 下載darknet原始碼:git clone https://github.com/pjreddie/darknet 進入darknet目錄: cd darknet 如果是cpu直接make,否則需要修改Makefile,設

Tensorflow框架下Faster-RCNN實踐(一)——Faster-RCNN所需資料製作(附程式碼)

最近剛實現了在Ubuntu16.04、Tensorfllow1.0下 Faster R-CNN 從資料製作到訓練再到利用生成的模型檢測的測試圖片的全過程,現在將具體的過程記錄在部落格,方便遇到困惑或者需要的朋友檢視。 製作資料集 利用Fast

tensorflow資料製作/檔案佇列讀取方式

3種資料讀取方式 TensorFlow程式讀取資料一共有3種方法: 供給資料(Feeding): 在TensorFlow程式執行的每一步, 讓Python程式碼來供給資料。 從檔案讀取資料: 在TensorFlow圖的起始, 讓一個輸入管線從檔案中讀取資料

Faster RCNN從demo到訓練自己的資料(3)——資料製作

製作資料集可以選擇自己編寫一個demo,也可以直接下載labelImg進行標註。Faster RCNN需要的標註檔案為xml檔案。 我是自己編寫的一個demo,標記出每一張圖片的座標框和分類,生成的文字為txt檔案,也是常見的caffe標註規格,如下圖。 1.將txt

影象資料製作

影象資料集的製作分為以下2個步驟:1.將影象資訊資料化 2.給每一幅影象貼上對應的標籤 .使用PIL中的Image模組將圖片的資訊資料化,整個處理過程都已經封裝好了的,需要修改的地方就是資料夾的路徑和資料夾的名字classes,直接上程式碼: import

模仿mnist資料製作自己的資料

#include "Image_to_BinaryData.h" int main() { Image2BinaryData IBD(28,28); //設定圖片大小(Height,Width) /*------------生成訓練集檔案--------------------

超級簡單的VOC2007資料製作——使用自制的VOC2007資料製作工具

使用自制VOC2007資料集製作工具 本人win10 64位系統 操作沒有問題(其他系統沒有試過),在有的機子測試會出現應用程式無法正常啟動0xc0000007b,請從以下幾個方面排查 1.建立資料夾 首先建立一個名字為VOC2007的資料夾,在該資料夾

Faster R-CNN Tensorflow實現之資料製作(2)--- xml檔案的讀寫修改

接著上一篇的文章繼續製作自己的資料集,由於需要將資料集弄成與VOC 2007資料集一樣的格式,需要自己手動標註資料,根據網上前輩的經驗,這裡使用了labelImg,版本用了windows_v1 .7.0,操作簡單方便。使用該軟體進行標註後將直接生成以與圖片名稱相同的.XML檔

【tensorflow入門教程二】資料製作:使用TFRecords製作資料集並使用inceptionv3進行訓練

這篇文章中,我們將探討深度學習中最基本的問題,影象分類中的資料集以及標籤的製作;以及使用Inceptionv3網路對其進行訓練。PS:文末附博文配套程式碼以及資料集原圖的下載。先上一張最後的訓練結果圖:17flowers資料集17flowers資料集包含有17種不同的花的圖片