Elmnotate
Elmnotate is an electron app written in elm for image annotation. It can capture any number of text labels with or without an associated geometry per image.
Usage
Scenario 1 : Image Classification
Drag and drop a text file containing URLs for your images onto the drop zone in the app. Define the labels for your image dataset. For each image, type the value into the text field for the label and click the "next" button to advance to the next image. When all the images are labeled, click the "Download" button to generate a JSON file containing the data.
Scenario 2 : Object Detection
Drag and drop a JSON file containing URLs and any existing labels or shapes onto the drop zone in the app. Define rectangles (defined by two points) or quads (defined by four points) for your image dataset. For each image, select the appropriate shape and then click on the image to add points to the shape. Points can be dragged into place for fine-tuning.
Output
After all the images are annotated (or your fingers are tired), click the "Download" button, and Elmnotate will generate a JSON file which is formatted as a list of objects shaped like:
{
"url": "https://url/to/image",
"shapes": [{
"label": "eye",
"quad": [734, 655, 891, 667, 846, 734, 692, 725]
}],
"labels": {
"species": "dog"
}
}
Installing Dependencies
For the Javascript dependencies, run:
npm install
Elmnotate requires elm, elm-github-install (to install native packages from github), and electron. Install each of these per their instructions, then run:
elm install
Developing
npm run watch
then make changes to the code, and the app will recompile and reload.
Packaging
To build a native app for your platform, run:
npm run elm:make
npm run package
To cross-compile, there are also platform-specific scripts defined for
package-mac
, package-win
, package-linux
.
Contributing
Pull requests welcome! For large changes, please open an issue beforehand to discuss.