This web application allows users to upload images, annotate them with bounding boxes and labels, and extract relevant metadata from the images. It is designed to assist data scientists and machine learning researchers in creating labeled datasets with metadata for training object detection, image classification, or other computer vision models.
- Users can upload images from their local machine or provide a URL to fetch the image.
- Image upload functionality is implemented using
Multer
for Node.js.
- Annotation functionality is provided using LabelImg.
- Install LabelImg using:
pip3 install labelImg
- Ensure you are using Anaconda command prompt:
conda install -c conda-forge labelimg labelimg
- Users can draw bounding boxes around objects in the image using an interactive canvas.
- Users can enter labels or classifications for the annotated objects.
- Annotations can be deleted or modified.
- Extract relevant metadata fields from uploaded images using
exifr
(JavaScript).- Extracted metadata includes:
- Image dimensions (width, height)
- File size
- Camera make and model
- Focal length
- GPS coordinates (if available)
- Date and time of capture
- Orientation
- Extracted metadata includes:
- Store annotations and extracted metadata in a MongoDB database.
- Implement an interface to view and manage all annotated images, their annotations, and associated metadata.
- Provide options to filter, search, and sort annotated images based on various criteria (e.g., label, date, user, metadata fields).
- Allow users to export the annotated data and associated metadata in a structured format (e.g., JSON, CSV) suitable for use in machine learning model training.
- The user uploads an image to the web application.
- The front-end extracts relevant metadata from the uploaded image using
exifr
. - The user annotates the image by drawing bounding boxes and providing labels.
- The front-end sends the image data, annotations, and extracted metadata to the back-end server.
- The back-end server saves the image data, annotations, and metadata in the MongoDB database.
- The user can view, manage, and export the annotated images along with their annotations and associated metadata.
- Node.js
- MongoDB
- Anaconda (for LabelImg)
-
Clone the repository:
git clone <repository_url> cd <repository_name>
-
Install dependencies:
npm install
-
Set up environment variables: Create a
.env
file in the root directory and add the following variables:MONGODB_URI=<your_mongodb_uri> PORT=5000
-
Start the backend server:
npm start
-
Navigate to the
client
directory:cd client
-
Install dependencies:
npm install
-
Start the frontend development server:
npm start
-
Install LabelImg:
pip3 install labelImg
-
If using Anaconda, install LabelImg via conda-forge:
conda install -c conda-forge labelimg
-
Run LabelImg:
labelimg
- Open your browser and navigate to
http://localhost:3000
. - Upload an image using the upload button.
- Annotate the image by drawing bounding boxes and providing labels.
- View and manage annotated images and their metadata in the management interface.
- Export annotations and metadata as needed.
Contributions are welcome! Please open an issue or submit a pull request for any improvements or bug fixes.
This project is licensed under the MIT License. See the LICENSE file for more details.
This README provides a clear and structured guide for setting up and using your web application, including specific instructions for installing and running LabelImg for annotation.