Skip to content

它叫“抠二狗”,帮助您针对 coco 标注文件进行简单的检索或简单处理

Notifications You must be signed in to change notification settings

okooo5km/cocogo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

42 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CoCoGo

又名“抠二狗”,用于检索指定 coco json 文件中的关键信息以及进行简单的数据优化处理。

使用 poetry构建项目和管理环境依赖。

python

使用 python3.6 以上版本开发。

安装

pip 安装

pip install cocogo

poetry 安装

# 克隆仓库
git clone https://github.com/smslit/cocogo.git
# 安装
cd cocogo && poetry install

开发

安装 poetry 后执行以下命令就可以

# 仅安装依赖
poetry install --no-root

使用

执行命令打印帮助信息。

cocogo --help

Usage: cocogo [OPTIONS] COMMAND [ARGS]...

  此工具可以帮助您针对 coco 标注文件进行简单的检索或简单处理,帮助详见 https://github.com/smslit/cocogo

Options:
  --help                          Show this message and exit.

Commands:
  count     统计数据
  info      查看文件中的基本信息,可以指定具体内容项
  list      查询数据
  optimize  优化数据,删除没有的图像数据及相关标注信息
  version   查看当前使用 cocogo 的版本

可以看到目前功能有:

  • 统计数据
  • 查看基本信息
  • 检索数据
  • 优化数据
  • 查看版本

每个功能对应一个子命令。

统计数据

使用 count 子命令。

cocogo count --help

Usage: cocogo count [OPTIONS] JSON_FILE

  统计数据

Arguments:
  JSON_FILE  指定待检索的 json 文件  [required]

Options:
  -i, --item [info|type|images|annotations|categories|licenses]
                                  检索项  [default: images]
  --help                          Show this message and exit.

可以看到使用方式很简单,当然功能也很简单,只有一个选项就是指定要统计项,统计项不指定默认为图像,现在只是统计个数。

统计图像数据

比如:

cocogo count -i images eval.json

加载 json 文件数据中...

检索到数据项 images 3471 条记录!

图像不同宽高比数量统计如下:
  宽高比 1.33-(2592, 1944): 1083 张
  宽高比 1.33-(1200, 900): 2195 张
  宽高比 1.76-(1920, 1088): 20 张
  宽高比 1.33-(3264, 2448): 36 张
  宽高比 1.33-(1296, 972): 60 张
  宽高比 1.33-(3200, 2400): 25 张
  宽高比 1.33-(900, 675): 4 张
  宽高比 1.33-(2560, 1920): 11 张
  宽高比 1.33-(4160, 3120): 1 张
  宽高比 1.79-(1276, 714): 2 张
  宽高比 1.78-(1280, 720): 8 张
  宽高比 0.75-(960, 1280): 2 张
  宽高比 1.33-(896, 672): 3 张
  宽高比 1.33-(907, 680): 7 张
  宽高比 1.33-(3968, 2976): 3 张
  宽高比 1.33-(648, 486): 3 张
  宽高比 0.75-(1080, 1440): 1 张
  宽高比 1.22-(704, 576): 2 张
  宽高比 1.78-(1920, 1080): 3 张
  宽高比 1.33-(1920, 1440): 1 张
  宽高比 0.75-(2976, 3968): 1 张

统计图像会列出各个宽、高比的图像个数,同时会生成按照宽高统计的尺寸分布图,如下:

统计标注

另外统计 annotation 的化还会生成相应的图表(各类别 annotation 的数量、 各类别 annotation 宽高归一化分布):

cocogo count -i annotations train.json 

加载 json 文件数据中...

检索到数据项 annotations 371852 条记录!

建立 images 索引...
完成!

建立 categories 索引...
完成!

统计标注数据...
完成!

标注数据按分类统计如下:
  moxxxxne: 56686 条
  toxxxxne: 85002 条
  pxxxxar: 4465 条
  pxxxxr: 19337 条
  txxxxk: 18322 条
  dxxxxr: 49688 条
  fxxxxe: 3303 条
  sxxxxg: 25944 条
  cxxxxs: 6068 条
  dxxxxof: 45610 条
  cxxxxer: 8524 条
  pxxxxe: 5152 条
  vxxxxn: 6995 条
  txxxxer: 12392 条
  sxxxxck: 9377 条
  rxxxxer: 1596 条
  wxxxxl: 5584 条
  bxxxxd: 7807 条

统计图表已保存至目录 - /data/plots
  • 各类别统计数量直方图例图:

  • 所有类别的 annotation 宽高归一化分布图例图:

  • 指定类别的 annotation 宽高归一化分布图例图(motorcarane):

  • 指定类别的 annotation 宽高实际尺寸分布图例图(motorcarane):

统计类别的数据

➜ cocogo count -i categories .eval.json

加载 json 文件数据中...

检索到数据项 categories 18 条记录!

包含指定类别图像以及标注数量统计如下:

           moxocxxxe > 图像   1347   张,标注   1754   个
          toxxrcxxxe > 图像   1007   张,标注   3139   个
             pumxxxr > 图像   156    张,标注   162    个
           puxxdxxxr > 图像   620    张,标注   721    个
               txxxk > 图像   455    张,标注   810    个
              dixxxr > 图像   1409   张,标注   2020   个
                xxxe > 图像    23    张,标注    39    个
                xxxg > 图像   170    张,标注   187    个
          cxlxrbxxxs > 图像    31    张,标注    35    个
           dustpxxxf > 图像   792    张,标注   1546   个
         cexxxxxxxxr > 图像   181    张,标注   249    个
       pixxxxxxxxxxe > 图像   131    张,标注   183    个
                xxxn > 图像   116    张,标注   178    个
             traxxxr > 图像   265    张,标注   448    个
          smalltxxxk > 图像   226    张,标注   282    个
              roxxxr > 图像    0     张,标注    0     个
            wxndxxxl > 图像    8     张,标注    21    个
                xxxd > 图像    0     张,标注    0     个

查看基本信息

使用 info 子命令。

cocogo info --help

Usage: cocogo info [OPTIONS] JSON_FILE

  查看文件中的基本信息,可以指定具体内容项

Arguments:
  JSON_FILE  指定待检索的 json 文件  [required]

Options:
  -i, --item [info|type|images|annotations|categories|licenses]
                                  检索项
  --help                          Show this message and exit.

用来查看包含了哪些关键字段信息,又一个指定查看项的参数,不指定参数项会列出指定 json 文件中包含的关键字段:

cocogo info eval.json

文件中包含内容项如下:

  images, type, annotations, categories

所以我们就可以查看上面列出的文件包含内容项的信息,比如 images 的:

cocogo info -i images eval.json

指定项 images 内容格式如下:

  file_name: 97454.jpg
  height: 1944
  width: 2592
  id: 0

一般就是看内容结构。

检索数据

使用 list 子命令, 主要是列出指定范围内指定项目的数据。

cocogo list --help                                       
Usage: cocogo list [OPTIONS] JSON_FILE

  查询数据

Arguments:
  JSON_FILE  指定待检索的 json 文件  [required]

Options:
  -i, --item [info|type|images|annotations|categories|licenses]
                                  检索项  [default: images]
  -s, --start INTEGER             列出数据的起始位置  [default: 0]
  -e, --end INTEGER               列出数据的结束位置  [default: 10]
  --help                          Show this message and exit.

默认列出图像的 0 ~ 10 的数据。

比如列出标注的 12 ~ 18 (左闭右开区间) 的数据:

cocogo list -s 12 -e 18 -i annnotations eval.json

加载 json 文件数据中...

  {'area': 16544, 'iscrowd': 0, 'bbox': [293, 485, 176, 94], 'category_id': 6, 'ignore': 0, 'segmentation': [], 'image_id': 1, 'id': 13}
  {'area': 21012, 'iscrowd': 0, 'bbox': [1253, 196, 103, 204], 'category_id': 12, 'ignore': 0, 'segmentation': [], 'image_id': 1, 'id': 14}
  {'area': 22704, 'iscrowd': 0, 'bbox': [709, 167, 86, 264], 'category_id': 12, 'ignore': 0, 'segmentation': [], 'image_id': 1, 'id': 15}
  {'area': 1204, 'iscrowd': 0, 'bbox': [649, 387, 43, 28], 'category_id': 6, 'ignore': 0, 'segmentation': [], 'image_id': 1, 'id': 16}
  {'area': 1406, 'iscrowd': 0, 'bbox': [472, 342, 38, 37], 'category_id': 6, 'ignore': 0, 'segmentation': [], 'image_id': 1, 'id': 17}
  {'area': 5160, 'iscrowd': 0, 'bbox': [337, 453, 120, 43], 'category_id': 5, 'ignore': 0, 'segmentation': [], 'image_id': 1, 'id': 18}

共列出 6(12~18) 条记录!

优化数据

cocogo optimize --help

Usage: cocogo optimize [OPTIONS] JSON_FILE IMG_DIR

  优化数据,删除没有的图像数据及相关标注信息

Arguments:
  JSON_FILE  CoCo 标注文件路径  [required]
  IMG_DIR    标注文件对应的图像目录  [required]

Options:
  -p, --prefix TEXT               优化后标注文件名的前缀  [default: processed]
  -v, --verbose                   罗嗦模式,打印全部信息
  -o, --override                  保存文件覆盖原标注文件
  --check-size / --no-check-size  检查标注文件中图像宽高是否与图像文件一致  [default: False]
  --help                          Show this message and exit.

默认情况下,生成优化后的 json 文件带有前缀 processed,如果指定 override 选项会覆盖原来的 json 文件。

默认优化的内容只是检查数据中图像文件是否存在,不存在就会删除相应的图像记录和标注记录,如果指定 --check-size 会检查图像数据中宽、高是否与原图的宽高一致,如果不一致会更新为正确的宽、高数据。

两个必须的参数是:

  • coco json 文件
  • 对应 json 文件的图像目录
cocogo optimize train.json train_imgs 

Json 数据加载中 ...
  完成!

缺失的图像检索中 ...
checking  [████████████████████████████████████]  100%         
  完成!

缺失图像相关标注数据检索中 ...
checking  [████████████████████████████████████]  100%         
  完成!

Json 数据保存中 ...
  完成! - ./processed_train.json

优化总结:
  - 图像: 0 / 127015 (缺失/全部)
  - 标注: 0 / 371852 (失效/全部)

About

它叫“抠二狗”,帮助您针对 coco 标注文件进行简单的检索或简单处理

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages