1.COCO 数据集制作
采用VIA标注polygon导出相应的.csv数据。
注意:sgmentation是[[x0,y0,x1,y1,x2,y2,x3,y3,x4,y4]]
遇到的坑:”annotations“字段的"segmentation"是一个二维度的数组(大概是考虑到某个实例由不相连的好几个部分组成)
#!/usr/bin/env python3
import datetime
import json
import os
import re
import fnmatch
from PIL import Image
import numpy as np
import pandas as pd
import cv2
import getArea
#%%
ROOT_DIR = 'train'
IMAGE_DIR = '/media/ices18/Data/sms/shiyou_segment_model/data/JPEGImages'
#ANNOTATION_DIR = os.path.join(ROOT_DIR, "annotations")
INFO = {
"description": "Example Dataset",
"url": "https://github.com/waspinator/pycococreator",
"version": "0.1.0",
"year": 2019,
"contributor": "mingshan",
"date_created": datetime.datetime.utcnow().isoformat(' ')
}
LICENSES = [
{
"id": 1,
"name": "Attribution-NonCommercial-ShareAlike License",
"url": "http://creativecommons.org/licenses/by-nc-sa/2.0/"
}
]
CATEGORIES_NAMES=['car','truck','build','collapse','river','dig','mound','brick','tube','pole']
TRUNCATED_NAMES=['10052.jpg','14191.jpg','14383.jpg','13285.jpg','12048.jpg']
CATEGORIES = [
{
'id': 1,
'name': 'car',
'supercategory': 'vehicle',
},
{
'id': 2,
'name': 'truck',
'supercategory': 'vehicle',
},
{
'id': 3,
'name': 'build',
'supercategory': 'engineer',
},
{
'id': 4,
'name': 'river',
'supercategory': 'disaster',
},
{
'id': 5,
'name': 'collapse',
'supercategory': 'disaster',
},
{
'id': 6,
'name': 'mound',
'supercategory': 'engineer',
},
{
'id': 7,
'name': 'brick',
'supercategory': 'engineer',
},
{
'id': 8,
'name': 'tube',
'supercategory': 'engineer',
},
{
'id': 9,
'name': 'dig',
'supercategory': 'engineer',
},
{
'id': 10,
'name': 'pole',
'supercategory': 'engineer',
}
]
#%%
def filter_for_jpeg(root, files):
file_types = ['*.jpeg', '*.jpg']
file_types = r'|'.join([fnmatch.translate(x) for x in file_types])
files = [os.path.join(root, f) for f in files]
files = [f for f in files if re.match(file_types, f)]
return files
#%%
def get_segmenation(coord_x, coord_y):
seg = []
for x, y in zip(coord_x, coord_y):
seg.append(x)
seg.append(y)
return [seg]
def create_image_info(image_id, file_name, image_size,
date_captured=datetime.datetime.utcnow().isoformat(' '),
license_id=1, coco_