AI+X更新日志-shuai
4036 ワード
11.28
1.datasetsページにreload機能を追加し、データセット情報を更新する. app/templates/datasets. add reloadボタン、テーブルadd reloadフィールド、選択されたデータセット機能のみを更新する を提供します.
ap/static/js/dataset.js add を更新する.
ap.datasets.py: add
app.db.py: は、データセットリストのtypeフィールドを変更する: を追加する. add utils.box_utils.py add 部分関数名を変更します. utils.dataset_utils.py add をフィルタします. add を作成する. udate です.
アメリカ
1.datasetsページにreload機能を追加し、データセット情報を更新する.
reload_dataset()
、テーブルデータセット情報reload_dataset()
、対応するバックグラウンド機能:全部更新する/更新するtaskType -> taskRules: defaultShape
、dataturksのPoint, Rectangle, Polygon
は、taskype IMAGE_POLYGON_BOUNDING_BOX_V2
を共有するので、タスクマッピングclear_dataset()
、reload datasets task_type = {
'rectangle': 'Detection',
'polygon': 'Segmentaion'
}
def parse_projects(row):
taskRules = json.loads(row[3]) # str->dict,
cats = taskRules['tags'].replace(' ', '').split(',')
task = task_type[taskRules['defaultShape']]
return {
'id': row[0],
'name': row[1],
'taskType': task, # change ori task typye here
'classes': len(cats),
'cats': cats,
}
2.新しいタスクデータセット:rotated bboxcvt_poly_fpts_to_center_xywh_angle()
は、dataturksに表示されたポリゴンpolygonを外部の長方形に変換し、フォーマット:(x,y,w,h), angle
4pts -> rect
filter_cigars()
、dataturksの表示annotation
フィールドから、タバコの表示create_dataset_from_dataturks_json()
は、dataturksから導出されたjsonファイルからデータセットconvert_to_coco()
は、ann
に新たに追加されたangle
フィールドアメリカ
create_dataset_from_dataturks_json()
def build_top_k_dataset(dataset, dataset_dir, top_k=None):
""" create dataset with top_k classes """
filted_cats, filted_cats_num, train_num, val_num, test_num = split_and_save_coco_dataset(dataset, dataset_dir=dataset_dir, top_k=top_k)
prefix = '{}_'.format(top_k) if top_k else ''
data_cfg = {
'name': 'Cigar Rotated Box',
'cats_num': filted_cats_num,
'classses': len(filted_cats),
'train': train_num,
'valid': val_num,
'test': test_num
}
dataset_name = os.path.basename(dataset_dir)
dump_json(data_cfg, out_path=os.path.join(dataset_dir, prefix + '{}_cfg.json'.format(dataset_name)))
def build_rbox_dataset():
""" create mulit rbox dataset with multi top_k classes """
dataset_name = 'cigar_rbox'
dataset_dir = os.path.join('data', dataset_name)
in_path = os.path.join(dataset_dir, 'Retail Cigar Dataset.json')
dataset = create_dataset_from_dataturks_json(dataturks_json_path=in_path)
# build with top k classes
top_ks = 10, 20, 40
for tk in top_ks:
build_top_k_dataset(dataset, dataset_dir, top_k=tk)
# build with all classes
build_top_k_dataset(dataset, dataset_dir)
udate convert_to_coco()
# add anns
for ann in anns:
label = ann['label'][0]
# add shape judgement
rect_box, rect_angle = [], 0
if ann['shape'] == 'rectangle':
rect_box, rect_angle = cvt_rect_fpts_to_xywh(ann['points'], img_w, img_h), 0
elif ann['shape'] == 'polygon':
rect_box, rect_angle = cvt_poly_fpts_to_center_xywh_angle(ann['points'], img_w, img_h)
anno_coco = {
"segmentation": [],
"area": [],
"iscrowd": 0,
"image_id": result['img_id'],
"bbox": rect_box,
"angle": rect_angle,
"category_id": categories[label],
"id": ann_id
}