mirror of https://github.com/open-mmlab/mmyolo.git
[Improvement] Improve browse coco json script args (#309)
* Improve browse coco json script * Improve doc * Improve script * Improve doc * Improve doc * Improve docpull/367/head
parent
1773439b83
commit
47bb3ce408
|
@ -17,49 +17,60 @@ mim run mmdet print_config [CONFIG]
|
|||
`tools/analysis_tools/browse_coco_json.py` is a script that can visualization to display the COCO label in the picture.
|
||||
|
||||
```shell
|
||||
python tools/analysis_tools/browse_coco_json.py ${DATA_ROOT} \
|
||||
[--ann_file ${ANN_FILE}] \
|
||||
[--img_dir ${IMG_DIR}] \
|
||||
python tools/analysis_tools/browse_coco_json.py [--data-root ${DATA_ROOT}] \
|
||||
[--img-dir ${IMG_DIR}] \
|
||||
[--ann-file ${ANN_FILE}] \
|
||||
[--wait-time ${WAIT_TIME}] \
|
||||
[--disp-all] [--category-names CATEGORY_NAMES [CATEGORY_NAMES ...]] \
|
||||
[--shuffle]
|
||||
```
|
||||
|
||||
If images and labels are in the same folder, you can specify `--data-root` to the folder, and then `--img-dir` and `--ann-file` to specify the relative path of the folder. The code will be automatically spliced.
|
||||
If the image and label files are not in the same folder, you do not need to specify `--data-root`, but directly specify `--img-dir` and `--ann-file` of the absolute path.
|
||||
|
||||
E.g:
|
||||
|
||||
1. Visualize all categories of `COCO` and display all types of annotations such as `bbox` and `mask`:
|
||||
|
||||
```shell
|
||||
python tools/analysis_tools/browse_coco_json.py './data/coco/' \
|
||||
--ann_file 'annotations/instances_train2017.json' \
|
||||
--img_dir 'train2017' \
|
||||
python tools/analysis_tools/browse_coco_json.py --data-root './data/coco' \
|
||||
--img-dir 'train2017' \
|
||||
--ann-file 'annotations/instances_train2017.json' \
|
||||
--disp-all
|
||||
```
|
||||
|
||||
If images and labels are not in the same folder, you can use a absolutely path:
|
||||
|
||||
```shell
|
||||
python tools/analysis_tools/browse_coco_json.py --img-dir '/dataset/image/coco/train2017' \
|
||||
--ann-file '/label/instances_train2017.json' \
|
||||
--disp-all
|
||||
```
|
||||
|
||||
2. Visualize all categories of `COCO`, and display only the `bbox` type labels, and shuffle the image to show:
|
||||
|
||||
```shell
|
||||
python tools/analysis_tools/browse_coco_json.py './data/coco/' \
|
||||
--ann_file 'annotations/instances_train2017.json' \
|
||||
--img_dir 'train2017' \
|
||||
python tools/analysis_tools/browse_coco_json.py --data-root './data/coco' \
|
||||
--img-dir 'train2017' \
|
||||
--ann-file 'annotations/instances_train2017.json' \
|
||||
--shuffle
|
||||
```
|
||||
|
||||
3. Only visualize the `bicycle` and `person` categories of `COCO` and only the `bbox` type labels are displayed:
|
||||
|
||||
```shell
|
||||
python tools/analysis_tools/browse_coco_json.py './data/coco/' \
|
||||
--ann_file 'annotations/instances_train2017.json' \
|
||||
--img_dir 'train2017' \
|
||||
python tools/analysis_tools/browse_coco_json.py --data-root './data/coco' \
|
||||
--img-dir 'train2017' \
|
||||
--ann-file 'annotations/instances_train2017.json' \
|
||||
--category-names 'bicycle' 'person'
|
||||
```
|
||||
|
||||
4. Visualize all categories of `COCO`, and display all types of label such as `bbox`, `mask`, and shuffle the image to show:
|
||||
|
||||
```shell
|
||||
python tools/analysis_tools/browse_coco_json.py './data/coco/' \
|
||||
--ann_file 'annotations/instances_train2017.json' \
|
||||
--img_dir 'train2017' \
|
||||
python tools/analysis_tools/browse_coco_json.py --data-root './data/coco' \
|
||||
--img-dir 'train2017' \
|
||||
--ann-file 'annotations/instances_train2017.json' \
|
||||
--disp-all \
|
||||
--shuffle
|
||||
```
|
||||
|
|
|
@ -17,49 +17,60 @@ mim run mmdet print_config [CONFIG]
|
|||
脚本 `tools/analysis_tools/browse_coco_json.py` 能够使用可视化显示 COCO 标签在图片的情况。
|
||||
|
||||
```shell
|
||||
python tools/analysis_tools/browse_coco_json.py ${DATA_ROOT} \
|
||||
[--ann_file ${ANN_FILE}] \
|
||||
[--img_dir ${IMG_DIR}] \
|
||||
python tools/analysis_tools/browse_coco_json.py [--data-root ${DATA_ROOT}] \
|
||||
[--img-dir ${IMG_DIR}] \
|
||||
[--ann-file ${ANN_FILE}] \
|
||||
[--wait-time ${WAIT_TIME}] \
|
||||
[--disp-all] [--category-names CATEGORY_NAMES [CATEGORY_NAMES ...]] \
|
||||
[--shuffle]
|
||||
```
|
||||
|
||||
其中,如果图片、标签都在同一个文件夹下的话,可以指定 `--data-root` 到该文件夹,然后 `--img-dir` 和 `--ann-file` 指定该文件夹的相对路径,代码会自动拼接。
|
||||
如果图片、标签文件不在同一个文件夹下的话,则无需指定 `--data-root` ,直接指定绝对路径的 `--img-dir` 和 `--ann-file` 即可。
|
||||
|
||||
例子:
|
||||
|
||||
1. 查看 `COCO` 全部类别,同时展示 `bbox`、`mask` 等所有类型的标注:
|
||||
|
||||
```shell
|
||||
python tools/analysis_tools/browse_coco_json.py './data/coco/' \
|
||||
--ann_file 'annotations/instances_train2017.json' \
|
||||
--img_dir 'train2017' \
|
||||
python tools/analysis_tools/browse_coco_json.py --data-root './data/coco' \
|
||||
--img-dir 'train2017' \
|
||||
--ann-file 'annotations/instances_train2017.json' \
|
||||
--disp-all
|
||||
```
|
||||
|
||||
如果图片、标签不在同一个文件夹下的话,可以使用绝对路径:
|
||||
|
||||
```shell
|
||||
python tools/analysis_tools/browse_coco_json.py --img-dir '/dataset/image/coco/train2017' \
|
||||
--ann-file '/label/instances_train2017.json' \
|
||||
--disp-all
|
||||
```
|
||||
|
||||
2. 查看 `COCO` 全部类别,同时仅展示 `bbox` 类型的标注,并打乱显示:
|
||||
|
||||
```shell
|
||||
python tools/analysis_tools/browse_coco_json.py './data/coco/' \
|
||||
--ann_file 'annotations/instances_train2017.json' \
|
||||
--img_dir 'train2017' \
|
||||
python tools/analysis_tools/browse_coco_json.py --data-root './data/coco' \
|
||||
--img-dir 'train2017' \
|
||||
--ann-file 'annotations/instances_train2017.json' \
|
||||
--shuffle
|
||||
```
|
||||
|
||||
3. 只查看 `bicycle` 和 `person` 类别,同时仅展示 `bbox` 类型的标注:
|
||||
|
||||
```shell
|
||||
python tools/analysis_tools/browse_coco_json.py './data/coco/' \
|
||||
--ann_file 'annotations/instances_train2017.json' \
|
||||
--img_dir 'train2017' \
|
||||
python tools/analysis_tools/browse_coco_json.py --data-root './data/coco' \
|
||||
--img-dir 'train2017' \
|
||||
--ann-file 'annotations/instances_train2017.json' \
|
||||
--category-names 'bicycle' 'person'
|
||||
```
|
||||
|
||||
4. 查看 `COCO` 全部类别,同时展示 `bbox`、`mask` 等所有类型的标注,并打乱显示:
|
||||
|
||||
```shell
|
||||
python tools/analysis_tools/browse_coco_json.py './data/coco/' \
|
||||
--ann_file 'annotations/instances_train2017.json' \
|
||||
--img_dir 'train2017' \
|
||||
python tools/analysis_tools/browse_coco_json.py --data-root './data/coco' \
|
||||
--img-dir 'train2017' \
|
||||
--ann-file 'annotations/instances_train2017.json' \
|
||||
--disp-all \
|
||||
--shuffle
|
||||
```
|
||||
|
|
|
@ -10,7 +10,10 @@ from pycocotools.coco import COCO
|
|||
|
||||
|
||||
def show_coco_json(args):
|
||||
coco = COCO(osp.join(args.data_root, args.ann_file))
|
||||
if args.data_root is not None:
|
||||
coco = COCO(osp.join(args.data_root, args.ann_file))
|
||||
else:
|
||||
coco = COCO(args.ann_file)
|
||||
print(f'Total number of images:{len(coco.getImgIds())}')
|
||||
categories = coco.loadCats(coco.getCatIds())
|
||||
category_names = [category['name'] for category in categories]
|
||||
|
@ -30,8 +33,11 @@ def show_coco_json(args):
|
|||
|
||||
for i in range(len(image_ids)):
|
||||
image_data = coco.loadImgs(image_ids[i])[0]
|
||||
image_path = osp.join(args.data_root, args.img_dir,
|
||||
image_data['file_name'])
|
||||
if args.data_root is not None:
|
||||
image_path = osp.join(args.data_root, args.img_dir,
|
||||
image_data['file_name'])
|
||||
else:
|
||||
image_path = osp.join(args.img_dir, image_data['file_name'])
|
||||
|
||||
annotation_ids = coco.getAnnIds(
|
||||
imgIds=image_data['id'], catIds=category_ids, iscrowd=0)
|
||||
|
@ -103,14 +109,13 @@ def show_bbox_only(coco, anns, show_label_bbox=True, is_filling=True):
|
|||
|
||||
def parse_args():
|
||||
parser = argparse.ArgumentParser(description='Show coco json file')
|
||||
parser.add_argument('--data-root', default=None, help='dataset root')
|
||||
parser.add_argument(
|
||||
'data_root', default='data/coco/', help='data root path')
|
||||
'--img-dir', default='data/coco/train2017', help='image folder path')
|
||||
parser.add_argument(
|
||||
'--ann_file',
|
||||
default='annotations/instances_train2017.json',
|
||||
'--ann-file',
|
||||
default='data/coco/annotations/instances_train2017.json',
|
||||
help='ann file path')
|
||||
parser.add_argument(
|
||||
'--img_dir', default='train2017', help='image folder path')
|
||||
parser.add_argument(
|
||||
'--wait-time', type=float, default=2, help='the interval of show (s)')
|
||||
parser.add_argument(
|
||||
|
@ -133,6 +138,10 @@ def parse_args():
|
|||
return args
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
def main():
|
||||
args = parse_args()
|
||||
show_coco_json(args)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
|
|
Loading…
Reference in New Issue