1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- from .detect import *
- def _get_format(record):
- if isinstance(record, LabelmeRecord):
- return ('labelme',)
- elif isinstance(record, YoloRecord):
- return ('yolo',)
- elif isinstance(record, PascalVocRecord):
- return ('voc', 'pascal', 'pascal_voc')
- elif isinstance(record, CocoRecord):
- return ('coco',)
- else:
- return ()
-
-
- def load(filename, fmt, **kwargs):
- if fmt == 'labelme':
- record = LabelmeHandler.load(filename)
- elif fmt == 'yolo':
- record = YoloHandler.load(filename)
- elif fmt in ('voc', 'pascal', 'pascal_voc'):
- record = PascalVocHandler.load(filename)
- elif fmt == 'coco':
- record = CocoDetectHandler.load(filename, **kwargs)
- else:
- raise ValueError(f"Unsupported detect label fmt. Got {fmt}")
- return record
-
-
- def save(filename, record):
- if isinstance(record, LabelmeRecord):
- LabelmeHandler.save(filename, record)
- elif isinstance(record, YoloRecord):
- YoloHandler.save(filename, record)
- elif isinstance(record, PascalVocRecord):
- PascalVocHandler.save(filename, record)
- elif isinstance(record, CocoRecord):
- raise ValueError("Unsupported for CocoRecord now!")
- else:
- raise ValueError("Unsupported type!")
-
-
- def convert(record, out_fmt):
- allowed_fmts = ("labelme", "yolo", "voc", "coco", 'pascal', 'pascal_voc')
- if out_fmt not in allowed_fmts:
- raise ValueError("Unsupported label format conversions for given out_fmt")
- if out_fmt in _get_format(record):
- return record
- if isinstance(record, LabelmeRecord):
- ir_record = LabelmeHandler.to_ir(record)
- elif isinstance(record, YoloRecord):
- ir_record = YoloHandler.to_ir(record)
- elif isinstance(record, PascalVocRecord):
- ir_record = PascalVocHandler.to_ir(record)
- elif isinstance(record, CocoRecord):
- ir_record = CocoDetectHandler.to_ir(record)
- else:
- raise ValueError('Unsupported type for record')
-
- if out_fmt == 'labelme':
- dst_record = LabelmeHandler.from_ir(ir_record)
- elif out_fmt == 'yolo':
- dst_record = YoloHandler.from_ir(ir_record)
- elif out_fmt in ('voc', 'pascal', 'pascal_voc'):
- dst_record = PascalVocHandler.from_ir(ir_record)
- elif out_fmt == 'coco':
- dst_record = CocoDetectHandler.from_ir(ir_record)
- return dst_record
-
|