Latest commit

History

103 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Dataset scripts

This repository contains python3 scripts to work with annotation files (mainly in COCO format).

Before using make sure that dataset_scripts folder is in your PYTHONPATH environment variable.

Converters

Not all converters are described.


converters/coco2darknet.py

Converts COCO annotations to the format used to train networks in darknet repository.

-json, --json-file - json file with COCO annotations
-img-root-fld, --images-root-folder - path to images folder
-out-list, --out-list-file - output file with list of images files
-out-anns-fld, --out-annotations-folder - output folder to save converted annotations to
-root-fld, --root-folder [default './'] - paths to images in output file '-out-list' are set
relative to the directory specified in this parameter

Dataset tools

Not all dataset tools are described.


coco_nms.py

NMS (non-maximum suppression) algorithm.

Before using this script compile nms.c into shared library nms.so:

gcc nms.c -shared -fPIC -o nms.so

Usage:

-json, --json-file - json file with COCO annotations
-thr, --threshold - IoU (intersection over union) threshold for NMS algorithm
-out, --out-file - output COCO annotation file

dataset_info.py

Short summary about COCO annotation file.

-json, --json-file - json file with COCO annotations

draw_boxes.py

Draw bounding boxes form COCO annotations on images.

-json, --json-file - json file with COCO annotations (this file may contain
only boxes without images paths and categories;in that case
json file with images paths and categories should be
specified in parameter '-img-json' (see below))
-img-fld, --images-folder - path to images folder
-out-fld, --out-folder - output folder to save images with drawn boxes to
-imgs-to-draw, --images-files-to-draw [optional] - images files to draw boxes on (relative to the current directory)
-num, --images-number [optional] - number of images to draw boxes on (has on effect
if'-imgs-to-draw' is specified)
-rnd, --random [optional] - used in combination with '-num': selectrandom images
to draw on, otherwise first images are selected
-owb, --only-with-boxes [optional] - used in combination with '-num': do not selectimages
that have no boxes
-img-json, --images-json-file [optional] - json file with images paths and categories if'-json'
does not contains that information
-preserve-files-tree, --preserve-files-tree [optional] - preserve images files tree when saving images with drawn boxes,
otherwise all images are saved in output directory '-out-fld'
and if there are images with the same name, one of them is renamed
-thr, --threshold [default 0.] - filter out boxes with score less than '-thr' (has no effect
if annotations do not contain 'score' field)

If both -imgs-to-draw and -num are not specified then all the images are used to draw boxes on.


mark_coco_annotations.py

Add a field to COCO annotations with specified value.

-json, --json-file - json file with COCO annotations
-f, --field - field name to add
-v, --value - value to add. eval() is applied to this parameter
--force [optional] - rewrite field if it already exists. Without this flag
runtime error will be raised if the field alread exists
-out, --out-file - output COCO annotation file

metrics_eval.py

Evaluates AP and mAP metrics for detection results.

-ann, --annotations-file - json file with COCO gt (shoud contain images paths and categories)
-det, --detections-file - json file with detection results in COCO format (should contain only
detection results without images paths and categories)
-area, --area [default 0**2 1e5**2] - remove boxes with area beyond this range
-shape, --shape [default None None] - used in combination with '-area': before computing box area,
image containing that box is scaled keeping aspect ratio so that
this image is fitted into the (width, height) box specified
in this parameter. The box on the image is scaled with the image
and after that box area is computed

remove_empty_images.py

Removes images that contain no labels from COCO annotation file.

-json, --json-file - json file with COCO annotations
-out, --out-file - output COCO annotation file

replace_classes.py

Merges, removes, adds and renames categories in COCO annotation file (see usage example after parameters description).

-json, --json-file - json file with COCO annotations
-new-cats, --new-categories-names - new categories names
-old-cat-name-to-new, --old-category-name-to-new - how to convert old category names to new ones.
See example below. If special name convert_all_categories
(or conv_all_cats) is specified, then'-new-cats' should
contain only one category and all old categories
are converted into that new one.
-out, --out-file - output COCO annotation file

For example, we have annotation file annotations.json with categories person, car and van, and we want to convert person to pedestrian, car and van to vehicle. To do this we can use:

python replace_classes.py
-json annotations.json
-new-cats pedestrian vehicle
-old-cat-name-to-new 'person->pedestrian car->vehicle van->vehicle'
-out new_annotations.json

split_coco.py

Splits COCO annotation file into two files. Before splitting images are shuffled.

-json, --json-file - json file with COCO annotations
-train, --train-out-file - output COCO annotation file for training
-test, --test-out-file - output COCO annotation file for testing
-sr, --split-rate [default 0.8] - share of images in output training file

unite_coco.py

Merges multiple COCO annotation files into one. Categories with the same name are merged into one. Images with the same field 'file_name' are merged.

-jsons, --json-files - multiple json files with COCO annotations
-out, --out-file - output COCO annotation file

unite_datasets.py

Merges multiple COCO annotation files into one and copies (or makes hard links) images into one directory. Categories with the same name are merged into one. If there are images with the same name, one of them is renamed.

-jsons, --json-files - multiple json files with COCO annotations
-img-flds, --images-folders - multiple paths to images folders foreach filein'-jsons' parameter
-out, --out-file - output COCO annotation file
-out-img-fld, --out-images-folder - output folder for images for merged dataset
-ml, --make-links [optional] - make hard links for images instead of copying them
-co, --copy-ok [optional] - used in combination with '-ml': if could not make hard link
for the image, thendo not raise runtime error and simply copy that image

About

No description, website, or topics provided.

Resources

Stars

7 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Latest commit

History

103 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Dataset scripts

This repository contains python3 scripts to work with annotation files (mainly in COCO format).

Before using make sure that dataset_scripts folder is in your PYTHONPATH environment variable.

Converters

Not all converters are described.


converters/coco2darknet.py

Converts COCO annotations to the format used to train networks in darknet repository.

-json, --json-file - json file with COCO annotations
-img-root-fld, --images-root-folder - path to images folder
-out-list, --out-list-file - output file with list of images files
-out-anns-fld, --out-annotations-folder - output folder to save converted annotations to
-root-fld, --root-folder [default './'] - paths to images in output file '-out-list' are set
relative to the directory specified in this parameter

Dataset tools

Not all dataset tools are described.


coco_nms.py

NMS (non-maximum suppression) algorithm.

Before using this script compile nms.c into shared library nms.so:

gcc nms.c -shared -fPIC -o nms.so

Usage:

-json, --json-file - json file with COCO annotations
-thr, --threshold - IoU (intersection over union) threshold for NMS algorithm
-out, --out-file - output COCO annotation file

dataset_info.py

Short summary about COCO annotation file.

-json, --json-file - json file with COCO annotations

draw_boxes.py

Draw bounding boxes form COCO annotations on images.

-json, --json-file - json file with COCO annotations (this file may contain
only boxes without images paths and categories;in that case
json file with images paths and categories should be
specified in parameter '-img-json' (see below))
-img-fld, --images-folder - path to images folder
-out-fld, --out-folder - output folder to save images with drawn boxes to
-imgs-to-draw, --images-files-to-draw [optional] - images files to draw boxes on (relative to the current directory)
-num, --images-number [optional] - number of images to draw boxes on (has on effect
if'-imgs-to-draw' is specified)
-rnd, --random [optional] - used in combination with '-num': selectrandom images
to draw on, otherwise first images are selected
-owb, --only-with-boxes [optional] - used in combination with '-num': do not selectimages
that have no boxes
-img-json, --images-json-file [optional] - json file with images paths and categories if'-json'
does not contains that information
-preserve-files-tree, --preserve-files-tree [optional] - preserve images files tree when saving images with drawn boxes,
otherwise all images are saved in output directory '-out-fld'
and if there are images with the same name, one of them is renamed
-thr, --threshold [default 0.] - filter out boxes with score less than '-thr' (has no effect
if annotations do not contain 'score' field)

If both -imgs-to-draw and -num are not specified then all the images are used to draw boxes on.


mark_coco_annotations.py

Add a field to COCO annotations with specified value.

-json, --json-file - json file with COCO annotations
-f, --field - field name to add
-v, --value - value to add. eval() is applied to this parameter
--force [optional] - rewrite field if it already exists. Without this flag
runtime error will be raised if the field alread exists
-out, --out-file - output COCO annotation file

metrics_eval.py

Evaluates AP and mAP metrics for detection results.

-ann, --annotations-file - json file with COCO gt (shoud contain images paths and categories)
-det, --detections-file - json file with detection results in COCO format (should contain only
detection results without images paths and categories)
-area, --area [default 0**2 1e5**2] - remove boxes with area beyond this range
-shape, --shape [default None None] - used in combination with '-area': before computing box area,
image containing that box is scaled keeping aspect ratio so that
this image is fitted into the (width, height) box specified
in this parameter. The box on the image is scaled with the image
and after that box area is computed

remove_empty_images.py

Removes images that contain no labels from COCO annotation file.

-json, --json-file - json file with COCO annotations
-out, --out-file - output COCO annotation file

replace_classes.py

Merges, removes, adds and renames categories in COCO annotation file (see usage example after parameters description).

-json, --json-file - json file with COCO annotations
-new-cats, --new-categories-names - new categories names
-old-cat-name-to-new, --old-category-name-to-new - how to convert old category names to new ones.
See example below. If special name convert_all_categories
(or conv_all_cats) is specified, then'-new-cats' should
contain only one category and all old categories
are converted into that new one.
-out, --out-file - output COCO annotation file

For example, we have annotation file annotations.json with categories person, car and van, and we want to convert person to pedestrian, car and van to vehicle. To do this we can use:

python replace_classes.py
-json annotations.json
-new-cats pedestrian vehicle
-old-cat-name-to-new 'person->pedestrian car->vehicle van->vehicle'
-out new_annotations.json

split_coco.py

Splits COCO annotation file into two files. Before splitting images are shuffled.

-json, --json-file - json file with COCO annotations
-train, --train-out-file - output COCO annotation file for training
-test, --test-out-file - output COCO annotation file for testing
-sr, --split-rate [default 0.8] - share of images in output training file

unite_coco.py

Merges multiple COCO annotation files into one. Categories with the same name are merged into one. Images with the same field 'file_name' are merged.

-jsons, --json-files - multiple json files with COCO annotations
-out, --out-file - output COCO annotation file

unite_datasets.py

Merges multiple COCO annotation files into one and copies (or makes hard links) images into one directory. Categories with the same name are merged into one. If there are images with the same name, one of them is renamed.

-jsons, --json-files - multiple json files with COCO annotations
-img-flds, --images-folders - multiple paths to images folders foreach filein'-jsons' parameter
-out, --out-file - output COCO annotation file
-out-img-fld, --out-images-folder - output folder for images for merged dataset
-ml, --make-links [optional] - make hard links for images instead of copying them
-co, --copy-ok [optional] - used in combination with '-ml': if could not make hard link
for the image, thendo not raise runtime error and simply copy that image

About

No description, website, or topics provided.

Resources

Stars

7 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

103 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Dataset scripts

This repository contains python3 scripts to work with annotation files (mainly in COCO format).

Before using make sure that dataset_scripts folder is in your PYTHONPATH environment variable.

Converters

Not all converters are described.


converters/coco2darknet.py

Converts COCO annotations to the format used to train networks in darknet repository.

-json, --json-file - json file with COCO annotations
-img-root-fld, --images-root-folder - path to images folder
-out-list, --out-list-file - output file with list of images files
-out-anns-fld, --out-annotations-folder - output folder to save converted annotations to
-root-fld, --root-folder [default './'] - paths to images in output file '-out-list' are set
relative to the directory specified in this parameter

Dataset tools

Not all dataset tools are described.


coco_nms.py

NMS (non-maximum suppression) algorithm.

Before using this script compile nms.c into shared library nms.so:

gcc nms.c -shared -fPIC -o nms.so

Usage:

-json, --json-file - json file with COCO annotations
-thr, --threshold - IoU (intersection over union) threshold for NMS algorithm
-out, --out-file - output COCO annotation file

dataset_info.py

Short summary about COCO annotation file.

-json, --json-file - json file with COCO annotations

draw_boxes.py

Draw bounding boxes form COCO annotations on images.

-json, --json-file - json file with COCO annotations (this file may contain
only boxes without images paths and categories;in that case
json file with images paths and categories should be
specified in parameter '-img-json' (see below))
-img-fld, --images-folder - path to images folder
-out-fld, --out-folder - output folder to save images with drawn boxes to
-imgs-to-draw, --images-files-to-draw [optional] - images files to draw boxes on (relative to the current directory)
-num, --images-number [optional] - number of images to draw boxes on (has on effect
if'-imgs-to-draw' is specified)
-rnd, --random [optional] - used in combination with '-num': selectrandom images
to draw on, otherwise first images are selected
-owb, --only-with-boxes [optional] - used in combination with '-num': do not selectimages
that have no boxes
-img-json, --images-json-file [optional] - json file with images paths and categories if'-json'
does not contains that information
-preserve-files-tree, --preserve-files-tree [optional] - preserve images files tree when saving images with drawn boxes,
otherwise all images are saved in output directory '-out-fld'
and if there are images with the same name, one of them is renamed
-thr, --threshold [default 0.] - filter out boxes with score less than '-thr' (has no effect
if annotations do not contain 'score' field)

If both -imgs-to-draw and -num are not specified then all the images are used to draw boxes on.


mark_coco_annotations.py

Add a field to COCO annotations with specified value.

-json, --json-file - json file with COCO annotations
-f, --field - field name to add
-v, --value - value to add. eval() is applied to this parameter
--force [optional] - rewrite field if it already exists. Without this flag
runtime error will be raised if the field alread exists
-out, --out-file - output COCO annotation file

metrics_eval.py

Evaluates AP and mAP metrics for detection results.

-ann, --annotations-file - json file with COCO gt (shoud contain images paths and categories)
-det, --detections-file - json file with detection results in COCO format (should contain only
detection results without images paths and categories)
-area, --area [default 0**2 1e5**2] - remove boxes with area beyond this range
-shape, --shape [default None None] - used in combination with '-area': before computing box area,
image containing that box is scaled keeping aspect ratio so that
this image is fitted into the (width, height) box specified
in this parameter. The box on the image is scaled with the image
and after that box area is computed

remove_empty_images.py

Removes images that contain no labels from COCO annotation file.

-json, --json-file - json file with COCO annotations
-out, --out-file - output COCO annotation file

replace_classes.py

Merges, removes, adds and renames categories in COCO annotation file (see usage example after parameters description).

-json, --json-file - json file with COCO annotations
-new-cats, --new-categories-names - new categories names
-old-cat-name-to-new, --old-category-name-to-new - how to convert old category names to new ones.
See example below. If special name convert_all_categories
(or conv_all_cats) is specified, then'-new-cats' should
contain only one category and all old categories
are converted into that new one.
-out, --out-file - output COCO annotation file

For example, we have annotation file annotations.json with categories person, car and van, and we want to convert person to pedestrian, car and van to vehicle. To do this we can use:

python replace_classes.py
-json annotations.json
-new-cats pedestrian vehicle
-old-cat-name-to-new 'person->pedestrian car->vehicle van->vehicle'
-out new_annotations.json

split_coco.py

Splits COCO annotation file into two files. Before splitting images are shuffled.

-json, --json-file - json file with COCO annotations
-train, --train-out-file - output COCO annotation file for training
-test, --test-out-file - output COCO annotation file for testing
-sr, --split-rate [default 0.8] - share of images in output training file

unite_coco.py

Merges multiple COCO annotation files into one. Categories with the same name are merged into one. Images with the same field 'file_name' are merged.

-jsons, --json-files - multiple json files with COCO annotations
-out, --out-file - output COCO annotation file

unite_datasets.py

Merges multiple COCO annotation files into one and copies (or makes hard links) images into one directory. Categories with the same name are merged into one. If there are images with the same name, one of them is renamed.

-jsons, --json-files - multiple json files with COCO annotations
-img-flds, --images-folders - multiple paths to images folders foreach filein'-jsons' parameter
-out, --out-file - output COCO annotation file
-out-img-fld, --out-images-folder - output folder for images for merged dataset
-ml, --make-links [optional] - make hard links for images instead of copying them
-co, --copy-ok [optional] - used in combination with '-ml': if could not make hard link
for the image, thendo not raise runtime error and simply copy that image

About

No description, website, or topics provided.

Resources

Stars

7 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

103 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Dataset scripts

This repository contains python3 scripts to work with annotation files (mainly in COCO format).

Before using make sure that dataset_scripts folder is in your PYTHONPATH environment variable.

Converters

Not all converters are described.


converters/coco2darknet.py

Converts COCO annotations to the format used to train networks in darknet repository.

-json, --json-file - json file with COCO annotations
-img-root-fld, --images-root-folder - path to images folder
-out-list, --out-list-file - output file with list of images files
-out-anns-fld, --out-annotations-folder - output folder to save converted annotations to
-root-fld, --root-folder [default './'] - paths to images in output file '-out-list' are set
relative to the directory specified in this parameter

Dataset tools

Not all dataset tools are described.


coco_nms.py

NMS (non-maximum suppression) algorithm.

Before using this script compile nms.c into shared library nms.so:

gcc nms.c -shared -fPIC -o nms.so

Usage:

-json, --json-file - json file with COCO annotations
-thr, --threshold - IoU (intersection over union) threshold for NMS algorithm
-out, --out-file - output COCO annotation file

dataset_info.py

Short summary about COCO annotation file.

-json, --json-file - json file with COCO annotations

draw_boxes.py

Draw bounding boxes form COCO annotations on images.

-json, --json-file - json file with COCO annotations (this file may contain
only boxes without images paths and categories;in that case
json file with images paths and categories should be
specified in parameter '-img-json' (see below))
-img-fld, --images-folder - path to images folder
-out-fld, --out-folder - output folder to save images with drawn boxes to
-imgs-to-draw, --images-files-to-draw [optional] - images files to draw boxes on (relative to the current directory)
-num, --images-number [optional] - number of images to draw boxes on (has on effect
if'-imgs-to-draw' is specified)
-rnd, --random [optional] - used in combination with '-num': selectrandom images
to draw on, otherwise first images are selected
-owb, --only-with-boxes [optional] - used in combination with '-num': do not selectimages
that have no boxes
-img-json, --images-json-file [optional] - json file with images paths and categories if'-json'
does not contains that information
-preserve-files-tree, --preserve-files-tree [optional] - preserve images files tree when saving images with drawn boxes,
otherwise all images are saved in output directory '-out-fld'
and if there are images with the same name, one of them is renamed
-thr, --threshold [default 0.] - filter out boxes with score less than '-thr' (has no effect
if annotations do not contain 'score' field)

If both -imgs-to-draw and -num are not specified then all the images are used to draw boxes on.


mark_coco_annotations.py

Add a field to COCO annotations with specified value.

-json, --json-file - json file with COCO annotations
-f, --field - field name to add
-v, --value - value to add. eval() is applied to this parameter
--force [optional] - rewrite field if it already exists. Without this flag
runtime error will be raised if the field alread exists
-out, --out-file - output COCO annotation file

metrics_eval.py

Evaluates AP and mAP metrics for detection results.

-ann, --annotations-file - json file with COCO gt (shoud contain images paths and categories)
-det, --detections-file - json file with detection results in COCO format (should contain only
detection results without images paths and categories)
-area, --area [default 0**2 1e5**2] - remove boxes with area beyond this range
-shape, --shape [default None None] - used in combination with '-area': before computing box area,
image containing that box is scaled keeping aspect ratio so that
this image is fitted into the (width, height) box specified
in this parameter. The box on the image is scaled with the image
and after that box area is computed

remove_empty_images.py

Removes images that contain no labels from COCO annotation file.

-json, --json-file - json file with COCO annotations
-out, --out-file - output COCO annotation file

replace_classes.py

Merges, removes, adds and renames categories in COCO annotation file (see usage example after parameters description).

-json, --json-file - json file with COCO annotations
-new-cats, --new-categories-names - new categories names
-old-cat-name-to-new, --old-category-name-to-new - how to convert old category names to new ones.
See example below. If special name convert_all_categories
(or conv_all_cats) is specified, then'-new-cats' should
contain only one category and all old categories
are converted into that new one.
-out, --out-file - output COCO annotation file

For example, we have annotation file annotations.json with categories person, car and van, and we want to convert person to pedestrian, car and van to vehicle. To do this we can use:

python replace_classes.py
-json annotations.json
-new-cats pedestrian vehicle
-old-cat-name-to-new 'person->pedestrian car->vehicle van->vehicle'
-out new_annotations.json

split_coco.py

Splits COCO annotation file into two files. Before splitting images are shuffled.

-json, --json-file - json file with COCO annotations
-train, --train-out-file - output COCO annotation file for training
-test, --test-out-file - output COCO annotation file for testing
-sr, --split-rate [default 0.8] - share of images in output training file

unite_coco.py

Merges multiple COCO annotation files into one. Categories with the same name are merged into one. Images with the same field 'file_name' are merged.

-jsons, --json-files - multiple json files with COCO annotations
-out, --out-file - output COCO annotation file

unite_datasets.py

Merges multiple COCO annotation files into one and copies (or makes hard links) images into one directory. Categories with the same name are merged into one. If there are images with the same name, one of them is renamed.

-jsons, --json-files - multiple json files with COCO annotations
-img-flds, --images-folders - multiple paths to images folders foreach filein'-jsons' parameter
-out, --out-file - output COCO annotation file
-out-img-fld, --out-images-folder - output folder for images for merged dataset
-ml, --make-links [optional] - make hard links for images instead of copying them
-co, --copy-ok [optional] - used in combination with '-ml': if could not make hard link
for the image, thendo not raise runtime error and simply copy that image

About

No description, website, or topics provided.

Resources

Stars

7 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Latest commit

History

103 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Dataset scripts

This repository contains python3 scripts to work with annotation files (mainly in COCO format).

Before using make sure that dataset_scripts folder is in your PYTHONPATH environment variable.

Converters

Not all converters are described.


converters/coco2darknet.py

Converts COCO annotations to the format used to train networks in darknet repository.

-json, --json-file - json file with COCO annotations
-img-root-fld, --images-root-folder - path to images folder
-out-list, --out-list-file - output file with list of images files
-out-anns-fld, --out-annotations-folder - output folder to save converted annotations to
-root-fld, --root-folder [default './'] - paths to images in output file '-out-list' are set
relative to the directory specified in this parameter

Dataset tools

Not all dataset tools are described.


coco_nms.py

NMS (non-maximum suppression) algorithm.

Before using this script compile nms.c into shared library nms.so:

gcc nms.c -shared -fPIC -o nms.so

Usage:

-json, --json-file - json file with COCO annotations
-thr, --threshold - IoU (intersection over union) threshold for NMS algorithm
-out, --out-file - output COCO annotation file

dataset_info.py

Short summary about COCO annotation file.

-json, --json-file - json file with COCO annotations

draw_boxes.py

Draw bounding boxes form COCO annotations on images.

-json, --json-file - json file with COCO annotations (this file may contain
only boxes without images paths and categories;in that case
json file with images paths and categories should be
specified in parameter '-img-json' (see below))
-img-fld, --images-folder - path to images folder
-out-fld, --out-folder - output folder to save images with drawn boxes to
-imgs-to-draw, --images-files-to-draw [optional] - images files to draw boxes on (relative to the current directory)
-num, --images-number [optional] - number of images to draw boxes on (has on effect
if'-imgs-to-draw' is specified)
-rnd, --random [optional] - used in combination with '-num': selectrandom images
to draw on, otherwise first images are selected
-owb, --only-with-boxes [optional] - used in combination with '-num': do not selectimages
that have no boxes
-img-json, --images-json-file [optional] - json file with images paths and categories if'-json'
does not contains that information
-preserve-files-tree, --preserve-files-tree [optional] - preserve images files tree when saving images with drawn boxes,
otherwise all images are saved in output directory '-out-fld'
and if there are images with the same name, one of them is renamed
-thr, --threshold [default 0.] - filter out boxes with score less than '-thr' (has no effect
if annotations do not contain 'score' field)

If both -imgs-to-draw and -num are not specified then all the images are used to draw boxes on.


mark_coco_annotations.py

Add a field to COCO annotations with specified value.

-json, --json-file - json file with COCO annotations
-f, --field - field name to add
-v, --value - value to add. eval() is applied to this parameter
--force [optional] - rewrite field if it already exists. Without this flag
runtime error will be raised if the field alread exists
-out, --out-file - output COCO annotation file

metrics_eval.py

Evaluates AP and mAP metrics for detection results.

-ann, --annotations-file - json file with COCO gt (shoud contain images paths and categories)
-det, --detections-file - json file with detection results in COCO format (should contain only
detection results without images paths and categories)
-area, --area [default 0**2 1e5**2] - remove boxes with area beyond this range
-shape, --shape [default None None] - used in combination with '-area': before computing box area,
image containing that box is scaled keeping aspect ratio so that
this image is fitted into the (width, height) box specified
in this parameter. The box on the image is scaled with the image
and after that box area is computed

remove_empty_images.py

Removes images that contain no labels from COCO annotation file.

-json, --json-file - json file with COCO annotations
-out, --out-file - output COCO annotation file

replace_classes.py

Merges, removes, adds and renames categories in COCO annotation file (see usage example after parameters description).

-json, --json-file - json file with COCO annotations
-new-cats, --new-categories-names - new categories names
-old-cat-name-to-new, --old-category-name-to-new - how to convert old category names to new ones.
See example below. If special name convert_all_categories
(or conv_all_cats) is specified, then'-new-cats' should
contain only one category and all old categories
are converted into that new one.
-out, --out-file - output COCO annotation file

For example, we have annotation file annotations.json with categories person, car and van, and we want to convert person to pedestrian, car and van to vehicle. To do this we can use:

python replace_classes.py
-json annotations.json
-new-cats pedestrian vehicle
-old-cat-name-to-new 'person->pedestrian car->vehicle van->vehicle'
-out new_annotations.json

split_coco.py

Splits COCO annotation file into two files. Before splitting images are shuffled.

-json, --json-file - json file with COCO annotations
-train, --train-out-file - output COCO annotation file for training
-test, --test-out-file - output COCO annotation file for testing
-sr, --split-rate [default 0.8] - share of images in output training file

unite_coco.py

Merges multiple COCO annotation files into one. Categories with the same name are merged into one. Images with the same field 'file_name' are merged.

-jsons, --json-files - multiple json files with COCO annotations
-out, --out-file - output COCO annotation file

unite_datasets.py

Merges multiple COCO annotation files into one and copies (or makes hard links) images into one directory. Categories with the same name are merged into one. If there are images with the same name, one of them is renamed.

-jsons, --json-files - multiple json files with COCO annotations
-img-flds, --images-folders - multiple paths to images folders foreach filein'-jsons' parameter
-out, --out-file - output COCO annotation file
-out-img-fld, --out-images-folder - output folder for images for merged dataset
-ml, --make-links [optional] - make hard links for images instead of copying them
-co, --copy-ok [optional] - used in combination with '-ml': if could not make hard link
for the image, thendo not raise runtime error and simply copy that image

About

No description, website, or topics provided.

Resources

Stars

7 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

103 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Dataset scripts

This repository contains python3 scripts to work with annotation files (mainly in COCO format).

Before using make sure that dataset_scripts folder is in your PYTHONPATH environment variable.

Converters

Not all converters are described.


converters/coco2darknet.py

Converts COCO annotations to the format used to train networks in darknet repository.

-json, --json-file - json file with COCO annotations
-img-root-fld, --images-root-folder - path to images folder
-out-list, --out-list-file - output file with list of images files
-out-anns-fld, --out-annotations-folder - output folder to save converted annotations to
-root-fld, --root-folder [default './'] - paths to images in output file '-out-list' are set
relative to the directory specified in this parameter

Dataset tools

Not all dataset tools are described.


coco_nms.py

NMS (non-maximum suppression) algorithm.

Before using this script compile nms.c into shared library nms.so:

gcc nms.c -shared -fPIC -o nms.so

Usage:

-json, --json-file - json file with COCO annotations
-thr, --threshold - IoU (intersection over union) threshold for NMS algorithm
-out, --out-file - output COCO annotation file

dataset_info.py

Short summary about COCO annotation file.

-json, --json-file - json file with COCO annotations

draw_boxes.py

Draw bounding boxes form COCO annotations on images.

-json, --json-file - json file with COCO annotations (this file may contain
only boxes without images paths and categories;in that case
json file with images paths and categories should be
specified in parameter '-img-json' (see below))
-img-fld, --images-folder - path to images folder
-out-fld, --out-folder - output folder to save images with drawn boxes to
-imgs-to-draw, --images-files-to-draw [optional] - images files to draw boxes on (relative to the current directory)
-num, --images-number [optional] - number of images to draw boxes on (has on effect
if'-imgs-to-draw' is specified)
-rnd, --random [optional] - used in combination with '-num': selectrandom images
to draw on, otherwise first images are selected
-owb, --only-with-boxes [optional] - used in combination with '-num': do not selectimages
that have no boxes
-img-json, --images-json-file [optional] - json file with images paths and categories if'-json'
does not contains that information
-preserve-files-tree, --preserve-files-tree [optional] - preserve images files tree when saving images with drawn boxes,
otherwise all images are saved in output directory '-out-fld'
and if there are images with the same name, one of them is renamed
-thr, --threshold [default 0.] - filter out boxes with score less than '-thr' (has no effect
if annotations do not contain 'score' field)

If both -imgs-to-draw and -num are not specified then all the images are used to draw boxes on.


mark_coco_annotations.py

Add a field to COCO annotations with specified value.

-json, --json-file - json file with COCO annotations
-f, --field - field name to add
-v, --value - value to add. eval() is applied to this parameter
--force [optional] - rewrite field if it already exists. Without this flag
runtime error will be raised if the field alread exists
-out, --out-file - output COCO annotation file

metrics_eval.py

Evaluates AP and mAP metrics for detection results.

-ann, --annotations-file - json file with COCO gt (shoud contain images paths and categories)
-det, --detections-file - json file with detection results in COCO format (should contain only
detection results without images paths and categories)
-area, --area [default 0**2 1e5**2] - remove boxes with area beyond this range
-shape, --shape [default None None] - used in combination with '-area': before computing box area,
image containing that box is scaled keeping aspect ratio so that
this image is fitted into the (width, height) box specified
in this parameter. The box on the image is scaled with the image
and after that box area is computed

remove_empty_images.py

Removes images that contain no labels from COCO annotation file.

-json, --json-file - json file with COCO annotations
-out, --out-file - output COCO annotation file

replace_classes.py

Merges, removes, adds and renames categories in COCO annotation file (see usage example after parameters description).

-json, --json-file - json file with COCO annotations
-new-cats, --new-categories-names - new categories names
-old-cat-name-to-new, --old-category-name-to-new - how to convert old category names to new ones.
See example below. If special name convert_all_categories
(or conv_all_cats) is specified, then'-new-cats' should
contain only one category and all old categories
are converted into that new one.
-out, --out-file - output COCO annotation file

For example, we have annotation file annotations.json with categories person, car and van, and we want to convert person to pedestrian, car and van to vehicle. To do this we can use:

python replace_classes.py
-json annotations.json
-new-cats pedestrian vehicle
-old-cat-name-to-new 'person->pedestrian car->vehicle van->vehicle'
-out new_annotations.json

split_coco.py

Splits COCO annotation file into two files. Before splitting images are shuffled.

-json, --json-file - json file with COCO annotations
-train, --train-out-file - output COCO annotation file for training
-test, --test-out-file - output COCO annotation file for testing
-sr, --split-rate [default 0.8] - share of images in output training file

unite_coco.py

Merges multiple COCO annotation files into one. Categories with the same name are merged into one. Images with the same field 'file_name' are merged.

-jsons, --json-files - multiple json files with COCO annotations
-out, --out-file - output COCO annotation file

unite_datasets.py

Merges multiple COCO annotation files into one and copies (or makes hard links) images into one directory. Categories with the same name are merged into one. If there are images with the same name, one of them is renamed.

-jsons, --json-files - multiple json files with COCO annotations
-img-flds, --images-folders - multiple paths to images folders foreach filein'-jsons' parameter
-out, --out-file - output COCO annotation file
-out-img-fld, --out-images-folder - output folder for images for merged dataset
-ml, --make-links [optional] - make hard links for images instead of copying them
-co, --copy-ok [optional] - used in combination with '-ml': if could not make hard link
for the image, thendo not raise runtime error and simply copy that image

About

No description, website, or topics provided.

Resources

Stars

7 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

103 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Dataset scripts

This repository contains python3 scripts to work with annotation files (mainly in COCO format).

Before using make sure that dataset_scripts folder is in your PYTHONPATH environment variable.

Converters

Not all converters are described.


converters/coco2darknet.py

Converts COCO annotations to the format used to train networks in darknet repository.

-json, --json-file - json file with COCO annotations
-img-root-fld, --images-root-folder - path to images folder
-out-list, --out-list-file - output file with list of images files
-out-anns-fld, --out-annotations-folder - output folder to save converted annotations to
-root-fld, --root-folder [default './'] - paths to images in output file '-out-list' are set
relative to the directory specified in this parameter

Dataset tools

Not all dataset tools are described.


coco_nms.py

NMS (non-maximum suppression) algorithm.

Before using this script compile nms.c into shared library nms.so:

gcc nms.c -shared -fPIC -o nms.so

Usage:

-json, --json-file - json file with COCO annotations
-thr, --threshold - IoU (intersection over union) threshold for NMS algorithm
-out, --out-file - output COCO annotation file

dataset_info.py

Short summary about COCO annotation file.

-json, --json-file - json file with COCO annotations

draw_boxes.py

Draw bounding boxes form COCO annotations on images.

-json, --json-file - json file with COCO annotations (this file may contain
only boxes without images paths and categories;in that case
json file with images paths and categories should be
specified in parameter '-img-json' (see below))
-img-fld, --images-folder - path to images folder
-out-fld, --out-folder - output folder to save images with drawn boxes to
-imgs-to-draw, --images-files-to-draw [optional] - images files to draw boxes on (relative to the current directory)
-num, --images-number [optional] - number of images to draw boxes on (has on effect
if'-imgs-to-draw' is specified)
-rnd, --random [optional] - used in combination with '-num': selectrandom images
to draw on, otherwise first images are selected
-owb, --only-with-boxes [optional] - used in combination with '-num': do not selectimages
that have no boxes
-img-json, --images-json-file [optional] - json file with images paths and categories if'-json'
does not contains that information
-preserve-files-tree, --preserve-files-tree [optional] - preserve images files tree when saving images with drawn boxes,
otherwise all images are saved in output directory '-out-fld'
and if there are images with the same name, one of them is renamed
-thr, --threshold [default 0.] - filter out boxes with score less than '-thr' (has no effect
if annotations do not contain 'score' field)

If both -imgs-to-draw and -num are not specified then all the images are used to draw boxes on.


mark_coco_annotations.py

Add a field to COCO annotations with specified value.

-json, --json-file - json file with COCO annotations
-f, --field - field name to add
-v, --value - value to add. eval() is applied to this parameter
--force [optional] - rewrite field if it already exists. Without this flag
runtime error will be raised if the field alread exists
-out, --out-file - output COCO annotation file

metrics_eval.py

Evaluates AP and mAP metrics for detection results.

-ann, --annotations-file - json file with COCO gt (shoud contain images paths and categories)
-det, --detections-file - json file with detection results in COCO format (should contain only
detection results without images paths and categories)
-area, --area [default 0**2 1e5**2] - remove boxes with area beyond this range
-shape, --shape [default None None] - used in combination with '-area': before computing box area,
image containing that box is scaled keeping aspect ratio so that
this image is fitted into the (width, height) box specified
in this parameter. The box on the image is scaled with the image
and after that box area is computed

remove_empty_images.py

Removes images that contain no labels from COCO annotation file.

-json, --json-file - json file with COCO annotations
-out, --out-file - output COCO annotation file

replace_classes.py

Merges, removes, adds and renames categories in COCO annotation file (see usage example after parameters description).

-json, --json-file - json file with COCO annotations
-new-cats, --new-categories-names - new categories names
-old-cat-name-to-new, --old-category-name-to-new - how to convert old category names to new ones.
See example below. If special name convert_all_categories
(or conv_all_cats) is specified, then'-new-cats' should
contain only one category and all old categories
are converted into that new one.
-out, --out-file - output COCO annotation file

For example, we have annotation file annotations.json with categories person, car and van, and we want to convert person to pedestrian, car and van to vehicle. To do this we can use:

python replace_classes.py
-json annotations.json
-new-cats pedestrian vehicle
-old-cat-name-to-new 'person->pedestrian car->vehicle van->vehicle'
-out new_annotations.json

split_coco.py

Splits COCO annotation file into two files. Before splitting images are shuffled.

-json, --json-file - json file with COCO annotations
-train, --train-out-file - output COCO annotation file for training
-test, --test-out-file - output COCO annotation file for testing
-sr, --split-rate [default 0.8] - share of images in output training file

unite_coco.py

Merges multiple COCO annotation files into one. Categories with the same name are merged into one. Images with the same field 'file_name' are merged.

-jsons, --json-files - multiple json files with COCO annotations
-out, --out-file - output COCO annotation file

unite_datasets.py

Merges multiple COCO annotation files into one and copies (or makes hard links) images into one directory. Categories with the same name are merged into one. If there are images with the same name, one of them is renamed.

-jsons, --json-files - multiple json files with COCO annotations
-img-flds, --images-folders - multiple paths to images folders foreach filein'-jsons' parameter
-out, --out-file - output COCO annotation file
-out-img-fld, --out-images-folder - output folder for images for merged dataset
-ml, --make-links [optional] - make hard links for images instead of copying them
-co, --copy-ok [optional] - used in combination with '-ml': if could not make hard link
for the image, thendo not raise runtime error and simply copy that image

About

No description, website, or topics provided.

Resources

Stars

7 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Latest commit

History

103 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Dataset scripts

This repository contains python3 scripts to work with annotation files (mainly in COCO format).

Before using make sure that dataset_scripts folder is in your PYTHONPATH environment variable.

Converters

Not all converters are described.


converters/coco2darknet.py

Converts COCO annotations to the format used to train networks in darknet repository.

-json, --json-file - json file with COCO annotations
-img-root-fld, --images-root-folder - path to images folder
-out-list, --out-list-file - output file with list of images files
-out-anns-fld, --out-annotations-folder - output folder to save converted annotations to
-root-fld, --root-folder [default './'] - paths to images in output file '-out-list' are set
relative to the directory specified in this parameter

Dataset tools

Not all dataset tools are described.


coco_nms.py

NMS (non-maximum suppression) algorithm.

Before using this script compile nms.c into shared library nms.so:

gcc nms.c -shared -fPIC -o nms.so

Usage:

-json, --json-file - json file with COCO annotations
-thr, --threshold - IoU (intersection over union) threshold for NMS algorithm
-out, --out-file - output COCO annotation file

dataset_info.py

Short summary about COCO annotation file.

-json, --json-file - json file with COCO annotations

draw_boxes.py

Draw bounding boxes form COCO annotations on images.

-json, --json-file - json file with COCO annotations (this file may contain
only boxes without images paths and categories;in that case
json file with images paths and categories should be
specified in parameter '-img-json' (see below))
-img-fld, --images-folder - path to images folder
-out-fld, --out-folder - output folder to save images with drawn boxes to
-imgs-to-draw, --images-files-to-draw [optional] - images files to draw boxes on (relative to the current directory)
-num, --images-number [optional] - number of images to draw boxes on (has on effect
if'-imgs-to-draw' is specified)
-rnd, --random [optional] - used in combination with '-num': selectrandom images
to draw on, otherwise first images are selected
-owb, --only-with-boxes [optional] - used in combination with '-num': do not selectimages
that have no boxes
-img-json, --images-json-file [optional] - json file with images paths and categories if'-json'
does not contains that information
-preserve-files-tree, --preserve-files-tree [optional] - preserve images files tree when saving images with drawn boxes,
otherwise all images are saved in output directory '-out-fld'
and if there are images with the same name, one of them is renamed
-thr, --threshold [default 0.] - filter out boxes with score less than '-thr' (has no effect
if annotations do not contain 'score' field)

If both -imgs-to-draw and -num are not specified then all the images are used to draw boxes on.


mark_coco_annotations.py

Add a field to COCO annotations with specified value.

-json, --json-file - json file with COCO annotations
-f, --field - field name to add
-v, --value - value to add. eval() is applied to this parameter
--force [optional] - rewrite field if it already exists. Without this flag
runtime error will be raised if the field alread exists
-out, --out-file - output COCO annotation file

metrics_eval.py

Evaluates AP and mAP metrics for detection results.

-ann, --annotations-file - json file with COCO gt (shoud contain images paths and categories)
-det, --detections-file - json file with detection results in COCO format (should contain only
detection results without images paths and categories)
-area, --area [default 0**2 1e5**2] - remove boxes with area beyond this range
-shape, --shape [default None None] - used in combination with '-area': before computing box area,
image containing that box is scaled keeping aspect ratio so that
this image is fitted into the (width, height) box specified
in this parameter. The box on the image is scaled with the image
and after that box area is computed

remove_empty_images.py

Removes images that contain no labels from COCO annotation file.

-json, --json-file - json file with COCO annotations
-out, --out-file - output COCO annotation file

replace_classes.py

Merges, removes, adds and renames categories in COCO annotation file (see usage example after parameters description).

-json, --json-file - json file with COCO annotations
-new-cats, --new-categories-names - new categories names
-old-cat-name-to-new, --old-category-name-to-new - how to convert old category names to new ones.
See example below. If special name convert_all_categories
(or conv_all_cats) is specified, then'-new-cats' should
contain only one category and all old categories
are converted into that new one.
-out, --out-file - output COCO annotation file

For example, we have annotation file annotations.json with categories person, car and van, and we want to convert person to pedestrian, car and van to vehicle. To do this we can use:

python replace_classes.py
-json annotations.json
-new-cats pedestrian vehicle
-old-cat-name-to-new 'person->pedestrian car->vehicle van->vehicle'
-out new_annotations.json

split_coco.py

Splits COCO annotation file into two files. Before splitting images are shuffled.

-json, --json-file - json file with COCO annotations
-train, --train-out-file - output COCO annotation file for training
-test, --test-out-file - output COCO annotation file for testing
-sr, --split-rate [default 0.8] - share of images in output training file

unite_coco.py

Merges multiple COCO annotation files into one. Categories with the same name are merged into one. Images with the same field 'file_name' are merged.

-jsons, --json-files - multiple json files with COCO annotations
-out, --out-file - output COCO annotation file

unite_datasets.py

Merges multiple COCO annotation files into one and copies (or makes hard links) images into one directory. Categories with the same name are merged into one. If there are images with the same name, one of them is renamed.

-jsons, --json-files - multiple json files with COCO annotations
-img-flds, --images-folders - multiple paths to images folders foreach filein'-jsons' parameter
-out, --out-file - output COCO annotation file
-out-img-fld, --out-images-folder - output folder for images for merged dataset
-ml, --make-links [optional] - make hard links for images instead of copying them
-co, --copy-ok [optional] - used in combination with '-ml': if could not make hard link
for the image, thendo not raise runtime error and simply copy that image

About

No description, website, or topics provided.

Resources

Stars

7 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages