prepare_detection_dataset

convert dataset to coco/voc format

MIT License

Stars
1.1K
Committers
2

Github : ?


  • (28/03/2019)
    • csv2labelme

csv

  • csv to coco
  • csv to voc
  • labelme to coco
  • labelme to voc
  • csv to json

csv

csv:

  • csv/
    • labels.csv
    • images/
      • image1.jpg
      • image2.jpg
      • ...

labels.csv :

/path/to/image,xmin,ymin,xmax,ymax,label

:

/mfs/dataset/face/0d4c5e4f-fc3c-4d5a-906c-105.jpg,450,154,754,341,face
/mfs/dataset/face/0ddfc5aea-fcdac-421-92dad-144.jpg,143,154,344,341,face
...

voc

  • VOC2007/
    • Annotations/
      • 0d4c5e4f-fc3c-4d5a-906c-105.xml
      • 0ddfc5aea-fcdac-421-92dad-144/xml
      • ...
    • ImageSets/
      • Main/
        • train.txt
        • test.txt
        • val.txt
        • trainval.txt
    • JPEGImages/
      • 0d4c5e4f-fc3c-4d5a-906c-105.jpg
      • 0ddfc5aea-fcdac-421-92dad-144.jpg
      • ...
  • coco/
    • annotations/
      • instances_train2017.json
      • instances_val2017.json
    • images/
      • train2017/
        • 0d4c5e4f-fc3c-4d5a-906c-105.jpg
        • ...
      • val2017
        • 0ddfc5aea-fcdac-421-92dad-144.jpg
        • ...
  • labelme/
    • 0d4c5e4f-fc3c-4d5a-906c-105.json
    • 0d4c5e4f-fc3c-4d5a-906c-105.jpg
    • 0ddfc5aea-fcdac-421-92dad-144.json
    • 0ddfc5aea-fcdac-421-92dad-144.jpg

Json file : imageData

{
  "version": "3.6.16",
  "flags": {},
  "shapes": [
    {
      "label": "helmet",
      "line_color": null,
      "fill_color": null,
      "points": [
        [
          131,
          269
        ],
        [
          388,
          457
        ]
      ],
      "shape_type": "rectangle"
    }
  ],
  "lineColor": [
    0,
    255,
    0,
    128
  ],
  "fillColor": [
    255,
    0,
    0,
    128
  ],
  "imagePath": "004ffe6f-c3e2-3602-84a1-ecd5f437b113.jpg",
  "imageData": ""   # too long ,so not show here
  "imageHeight": 1080,
  "imageWidth": 1920
}

csv2coco.py

classname_to_id = {"person": 1}  # for your dataset classes
csv_file = "labels.csv"  # annatations file path
image_dir = "images/"    # original image path
saved_coco_path = "./"   # path to save converted coco dataset

python csv2coco.py

  • coco/
    • annotations/
      • instances_train2017.json
      • instances_val2017.json
    • images/
      • train2017/
        • 0d4c5e4f-fc3c-4d5a-906c-105.jpg
        • ...
      • val2017
        • 0ddfc5aea-fcdac-421-92dad-144.jpg
        • ...

csv2voc.py

csv_file = "labels.csv"
saved_path = ".VOC2007/" # path to save converted voc dataset     
image_save_path = "./JPEGImages/"   # converted voc images path
image_raw_parh = "images/"          # original image path

python csv2voc.py

  • VOC2007/
    • Annotations/
      • 0d4c5e4f-fc3c-4d5a-906c-105.xml
      • 0ddfc5aea-fcdac-421-92dad-144/xml
      • ...
    • ImageSets/
      • Main/
        • train.txt
        • test.txt
        • val.txt
        • trainval.txt
    • JPEGImages/
      • 0d4c5e4f-fc3c-4d5a-906c-105.jpg
      • 0ddfc5aea-fcdac-421-92dad-144.jpg
      • ...

labelme2coco.py

classname_to_id = {"person": 1}  # for your dataset classes
labelme_path = "labelme/"  # path for labelme dataset
saved_coco_path = "./"     # path for saved coco dataset

python labelme2coco.py``csv2coco

labelme2voc.py

labelme_path = "labelme/"  # path for labelme dataset
saved_coco_path = "./"     # path for saved coco dataset

python labelme2voc.py``csv2voc

csv2labelme.py

image_path = "./images/"  # path for images
csv_file = "./"     # path for csv annotations

python csv2labelme.py``json``image_path,,labelme .

csvcsv

info = [[filename0,"xmin ymin xmax ymax label0"],
          filename1,"xmin ymin xmax ymax label1"]
csv_labels = open("csv_labels.csv","w")
for filename,bboxes in info:
    bbox = bboxes.split(" ")
    label = bbox[-1]
    csv_labels.write(filename+","+bbox[0]+","+bbox[1]+","+bbox[2]+","+bbox[3]+","+label+"\n")
csv_labels.close()

23333

TODO

    1. Multiprocessing

Badges
Extracted from project README
Stargazers repo roster for @spytensor/prepare_detection_dataset
Related Projects