Skip to content

a small tool for image augmentation, including mask files to json/xml files , image augmentation(flip,rotation,noise,...) and so on

License

Notifications You must be signed in to change notification settings

Dominix-411/mask2json

 
 

Repository files navigation

Issues and advices wanted.

Build Status

mask2json

a small tool for image augmentation, including mask files to json/xml files , image augmentation(flip,rotation,noise,...) and so on

HOW TO USE

This script is used to convert mask-labels to json files for labelme.

FIRST:

pip install -r requestments.txt [-i https://pypi.tuna.tsinghua.edu.cn/simple/] 

IF ERROR, try:

pip install -r requirements.txt [-i https://pypi.tuna.tsinghua.edu.cn/simple/] --ignore-installed

AND THEN:

Json files to masks can be found on this site. Sometimes there will be an ERROR,should add this file in labelme path (mine is '../anaconda/Lib/site-packages/labelme/utils ') and add some codes in __init__.py:

from .draw import label_colormap
from .draw import _validate_colormap
from .draw import label2rgb
from .draw import draw_label
from .draw import draw_instances 

'labelme_sub' folder is a copy of labelme (version 4.2.9) and i made some change.

Here shows an example using this script.

origin image

img1

mask image

img1

manually_labeled image

img1

auto_labeled image

img1 img1

Also ,for labelimg,a small tool to convert results(yolo) to xml-files.

(1) for labelme mask files

the test script can be found here

from convertmask.utils import getMultiShapes
getMultiShapes.getMultiShapes(param1,param2,param3,param4)

param1:path which saves the origin imgs

param2:path which saves the mask imgs (file names should match the origin imgs)

param3:converted json files save path

param4:can be blank (better don't), a yaml file path which saves the class information

(2) for labelimg mask files

the test script can be found here

from convertmask.utils.getMultiShapes import getMultiObjs_voc as gvoc
gvoc(param1,param2,param3)

param1:path which saves the origin imgs

param2:path which saves the mask imgs (file names should match the origin imgs)

param3:converted xml files save path

(3) for json files to mask files

the test script can be found here

from convertmask.utils.convert import processor
processor(param1,param2)

param1:json file or folder

param2:can be blank,encoding type, default 'utf-8'

(4) for json files to xml files

the test script can be found here

from convertmask.utils.json2xml import j2xConvert
j2xConvert(path-of-your-jsonfile)

(5) image augmentation

the test script can be found here

from convertmask.utils.imgAug import imgFlip,imgNoise,imgRotation,imgTranslation,aug_labelme

imgFlip(imgPath, labelPath)
imgNoise(imgPath,labelPath)
imgRotation(imgPath,labelPath)
imgTranslation(imgPath,labelPath)

details see Here

AILERNATIVE

you can try:

pip install -U convertmask

and

pip uninstall convertmask

to delete convertmask.

it is a test release. : )

version 0.3.1 (2020.8.20 , pre-release)

1.try :

convertmask -h | --help

to read the guide.

2.try:

convertmask -v | --version

to show the current version

3.try:

convertmask m2j 

to test mask to json function(should type in some file path)

4.try:

convertmask m2x 

to test mask to xml function(should type in some file path)

5.try:

convertmask j2m 

to test json to mask function(should type in some file path)

6.try:

convertmask j2x 

to test json to xml function(should type in some file path)

7.try:

convertmask aug 

to test image augmentation function(should type in some file path)

CHANGE LOGS

2020.10.13

1.image augumentation support convert yolo txts to xmls(pascal). See here

2.speed up by using multiprocess

2020.10.12

1.image augumentation support generating several annotation/images with single image/annotation(json,xml). See here

2020.9.24

1.inspired by LabelImgTool, convert xmls to jsons is useful. Also ,i forked this repo and add some pyqt5/py3 support,see here.

examples:

script here

gif1

2020.8.24

support convert xml files to yolo files. see here

examples:

gif1

2020.8.19

1. image translation supported.

img1

combination of every augmentation method.

img1

2. besides, a simple way convert json file(labelme) to xml file(labelImg) is provided. see here

img1

2020.8.17

1. bug fix.

2. support image augmentation methods: noise,flip,rotation. try test_imgAug.py !

here are some examples:

flip

img1

img1

img1

noise

img1

rotation

img1

2020.8.14

1. add image augmentation (image flip) test. see test_imgAug.py !

2020.7.14

1.bugfix , test multi objects to xml files, pretty xmls

eg:

img1

2020.7.13

1. convert multi objects to xml files supported (untested)

2020.7.10

1. a lot of things to do ,such as many warnings related to labelme.

2020.6.12

1.support multiple objects mask to json

try test.py !

1.1 multiple objects in different classes

manually_labeled image

img1

auto_labeled image

img1

1.2 multiple objects in same classes

manually_labeled image

img1

auto_labeled image

img1

what to do next

1. support multiple files image augmentation (2020.8.21)

2. support image augmentation without a label/json file (2020.8.21)

3. support image augmentation with a labeled file (just support json file right now) (2020.9)

4. image augmentation supports custom parameters (auto augmented right now)

5. do something more interesting

6. re-write main script

7. solve PyYmal installation error(currently write a script by myself. maybe failure in the end.)

8. image augmentation zoooom (2020.10.14)

OTHERS

  1. issue:json2mask has no output

gif2

if you test the json2mask.py script, you should change the path first and make sure the file is valid(maybe i have deleted :) )

Also, this script is just a reverse of mask2json, for a more COOOOOL method, see here , try convert.processor

SHORTCOMING

1.objects connected to each other is not supported yet.

this may happen if you labelling multiple-object-images with only 2 labels .Or some objects are of the same type and are connected to each other(eg. a bunch of grapes,it is hard to split one to the other).

2.Image Binarization issue

About

a small tool for image augmentation, including mask files to json/xml files , image augmentation(flip,rotation,noise,...) and so on

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 100.0%