Documentation

Tutorials

Step-by-step guides covering every major workflow in F-Annote - from your first project to deploying a TensorRT engine.

🗂️

Creating your first project

2 min

Video walkthrough

A full video guide for this tutorial is on the way.

Coming soon
  1. 1

    Launch F-Annote

    Run F-Annote.exe from the folder you downloaded. The animated splash screen loads your hardware info and opens the main window.

  2. 2

    Click "New Project"

    Hit the "New Project" button in the left sidebar. The 3-step project wizard opens.

  3. 3

    Step 1 - Name your project

    Enter a project name. Only letters, numbers, underscores, and hyphens are allowed - no spaces. Example: "cs2_detection" or "car-detector".

  4. 4

    Step 2 - Define your classes

    Add the object classes you want to detect, e.g. "Car", "Person", "Truck". You can add more classes later from inside the annotator. You need at least one class to continue.

  5. 5

    Step 3 - Training settings

    Choose a base YOLO model (yolov8n is fastest, yolov8x is most accurate), image size (640 is the standard), and your compute device. If you have an NVIDIA GPU it will appear in the list - select it.

  6. 6

    Your project is ready

    Click Finish. F-Annote creates the project folder structure and opens it automatically. Add your images from the overview panel on the main screen, or click "Open Annotator" to start.

💡 Tips

Project files live inside the F-Annote folder - back up the whole projects/ subfolder.

You can open a project on another machine by copying the project folder and using File → Open Project.

✏️

Annotating images

5 min

Video walkthrough

A full video guide for this tutorial is on the way.

Coming soon
  1. 1

    Open the Annotator

    With a project open, click "Open Annotator" in the tools panel. The annotator window opens with your images loaded in the thumbnail strip at the bottom.

  2. 2

    Add more images by drag & drop

    Need to add images while you work? Just drag image files (or a whole folder) straight onto the annotator window and drop them. They are copied into your dataset, deduped by name, and appear in the thumbnail strip instantly - no need to go back to the main screen.

  3. 3

    Draw a bounding box

    Left-click and drag on the canvas to draw a box around an object. Release the mouse to confirm. The box is saved automatically if autosave is on.

  4. 4

    Select the right class

    The active class is shown in the class panel on the left. Press number keys 0–9 to instantly switch between classes. If you have a box selected, pressing a number key also changes that box's class immediately.

  5. 5

    Move and resize boxes

    Click a box to select it (it turns highlighted). Drag the box body to move it. Drag any of the 8 corner/edge handles to resize. Minimum box size is 8 pixels.

  6. 6

    Delete a box

    Select a box and press Delete or Backspace to remove it. Right-click a box to get a context menu with Delete and Change Class options.

  7. 7

    Navigate between images

    Click any thumbnail at the bottom, or use the Next / Previous buttons in the toolbar. You can also press the left and right arrow keys to step through images. Labels save automatically before moving.

  8. 8

    Filter unannotated images

    Click the "Unannotated" button in the toolbar. It turns amber when active and shows how many images still need labels, e.g. "5 left". The filter clears automatically when you annotate the last remaining image.

Keyboard shortcuts

0 – 9Switch active class (also changes selected box class)
Delete / BackspaceDelete selected box
Ctrl + ZUndo last action
Ctrl + SSave labels manually
← / →Previous / next image
AQuick auto-annotate current image
DTrash current image (recoverable with Ctrl+Z)
F / HomeFit image to window
Shift + ScrollZoom in / out
Middle-dragPan the canvas
EscapeDeselect current box / close overlay
/ or ?Toggle shortcut overlay

💡 Tips

Draw boxes tightly around objects - excess background hurts model accuracy.

Use Ctrl+Z freely; the undo stack holds up to 30 steps including trash/restore.

Right-click a box to change its class without redrawing it.

Auto-annotating with a YOLO model

3 min

Video walkthrough

A full video guide for this tutorial is on the way.

Coming soon
  1. 1

    Two modes - your model or a COCO pretrained model

    You do not need a trained model to start. F-Annote includes COCO pretrained base models (yolov8n, yolov8s, yolo11n, yolo11s) that can detect 80 common object categories out of the box. Click "Auto-Annotate" → "Configure" to choose between your project model and the COCO base model.

  2. 2

    Using a COCO base model

    Select "Base YOLO model (COCO pretrained)" in the settings dialog. Map each of your project classes to the matching COCO category - e.g. your "Car" class maps to COCO "car". Only detections matching your mapped classes are kept; everything else is ignored.

  3. 3

    Single-image auto-annotate

    In the Annotator, navigate to an image and press A or click "Auto-Annotate" in the toolbar. Detected boxes appear instantly on the canvas - review and fix any mistakes.

  4. 4

    Batch auto-annotate

    Click "Batch Annotate" to run inference on all images in your dataset at once. A progress dialog shows the current file. When done, a summary shows how many images were annotated and any that failed.

  5. 5

    Overwrite toggle

    In the batch settings, the Overwrite option controls whether already-labelled images are re-annotated. Turn it off to only annotate images that have no labels yet.

  6. 6

    Review and correct

    Auto-annotation is never perfect. Use the unannotated filter to find missed images, and manually fix wrong or missing boxes. The goal is to reduce manual work, not replace it entirely.

💡 Tips

Start with a small manually-annotated dataset → train → auto-annotate the rest → correct → retrain. This loop compounds fast.

Lower confidence (0.3–0.4) catches more objects but produces more false positives to clean up.

Use a .engine (TensorRT) model for batch annotation - it's 2–5× faster than .pt.

🧠

Training a YOLO model

5 min

Video walkthrough

A full video guide for this tutorial is on the way.

Coming soon
  1. 1

    Prepare your dataset

    Make sure all your images are annotated. The Overview panel in the main window shows annotated vs total counts per class. Aim for at least 50–100 images per class for a basic model.

  2. 2

    Split your dataset

    Click "Split Dataset" in the tools panel. Drag the train/val/test sliders (default 70/20/10). Click Split - F-Annote copies files into train/, val/, and test/ subfolders inside your dataset.

  3. 3

    Configure training

    In the main window, set your epochs (50 is a good starting point), batch size (16 for most GPUs, lower if you get out-of-memory errors), image size (640 is standard), and select your base model. Give your run a name in the Name field - this is the folder name saved under runs/ for that training session.

  4. 4

    Advanced settings (optional)

    Click "Advanced Training" to access 30+ hyperparameters across 5 tabs: Model, Optimizer, Loss, Augmentation, and Control. The defaults work well for most cases.

  5. 5

    Click "Train"

    Click "Start Training" - the training window opens showing a live loss chart, epoch and batch progress bars, and a scrolling log. Training runs in the background - you can watch the loss curve converge in real time.

  6. 6

    Training completes

    When done, a results dialog shows your final mAP50 score and the path to your trained .pt file. The model is automatically added to your project's models/ folder.

💡 Tips

Watch the validation loss - if it rises while training loss falls, your model is overfitting. Reduce epochs or add augmentation.

yolov8n trains fastest; use it for iteration. Switch to yolov8m or yolov8l for your final model.

Enable "Pre-build TensorRT engine" in Advanced → Control to automatically convert the model after training.

More data almost always beats more epochs. Aim for variety in backgrounds, lighting, and object sizes.

🚀

Building a TensorRT engine

6 min

Video walkthrough

A full video guide for this tutorial is on the way.

Coming soon
  1. 1

    What TensorRT does and when to use it

    TensorRT is NVIDIA's inference optimizer. Converting your trained .pt model into a .engine file compiles it specifically for your GPU, giving 2-5x faster detection. It is completely optional - .pt models run fine everywhere - but if you plan to do live detection or batch auto-annotate large datasets, an engine is well worth the few minutes to build.

  2. 2

    Step 1 - Confirm you have an NVIDIA GPU

    TensorRT only works on NVIDIA hardware. Open Task Manager (Ctrl+Shift+Esc), go to the Performance tab, and check the GPU entry says NVIDIA - e.g. RTX 3060, RTX 4070, GTX 1660. AMD and Intel GPUs cannot build or run engines, so on those you simply stay on the .pt model.

  3. 3

    Step 2 - Install the NVIDIA driver (the only download needed)

    F-Annote already ships with TensorRT and the CUDA libraries bundled inside the app - there is no pip install, no CUDA Toolkit, and no separate TensorRT SDK download. The one thing you do need is an up-to-date NVIDIA GPU driver, which includes the CUDA runtime. Go to nvidia.com/Download, pick your GPU, download the latest Game Ready or Studio driver, install it, and reboot. That is the entire setup.

  4. 4

    Step 3 - Verify CUDA is detected

    Open F-Annote and check the Device dropdown in the training panel (or the Settings window). Your card should appear as "cuda:0 (Your GPU Name)". If you only see "cpu", the driver is missing or outdated - repeat step 2. When you try to build without CUDA, F-Annote also shows a clear message telling you what is wrong.

  5. 5

    Step 4 - Build the engine

    On the main window, pick your trained .pt model in the model dropdown, then click "Build .engine". F-Annote compiles the model for your exact GPU - this usually takes 1-5 minutes depending on model size and hardware. The app stays responsive while it works and notifies you when the .engine is ready.

  6. 6

    Step 5 - Or auto-build right after training

    Want to skip the manual click? Open Advanced Training, go to the Control tab, and enable "Pre-build TensorRT acceleration". The engine is then built automatically the instant training finishes, so your fastest model is ready with no extra step.

  7. 7

    Step 6 - Use the engine

    Once built, the .engine file shows up in the model dropdown right next to the .pt. Select it anywhere you run inference - single or batch auto-annotate, or Test Detection - and enjoy the 2-5x speed-up over the .pt.

  8. 8

    Automatic cache and rebuilds

    F-Annote stores engine metadata (GPU name, image size, model timestamp). If you retrain the model or switch to a different GPU, that cache is invalidated and the engine rebuilds itself automatically the next time it is needed - you never accidentally run a stale engine.

💡 Tips

If Build .engine fails with a CUDA error, it is almost always an outdated NVIDIA driver - update it first before anything else.

Engines are GPU-specific: a .engine built on an RTX 3080 will not run on a different GPU model. Rebuild after changing hardware.

Half-precision (FP16) is on by default and gives the biggest speed boost on modern NVIDIA GPUs.

Keep both files - the .pt is portable and retrainable, the .engine is fast but locked to one GPU.

📦

Exporting your dataset

2 min

Video walkthrough

A full video guide for this tutorial is on the way.

Coming soon
  1. 1

    Open the Export dialog

    Click "Export Dataset" in the tools panel. The export dialog opens.

  2. 2

    Choose a format

    Select one of the four formats: YOLO ZIP (for training elsewhere), COCO JSON (detectron2, MMDetection), Pascal VOC XML (legacy pipelines), or flat CSV (custom scripts and analysis).

  3. 3

    Choose output location

    Pick where to save the export. By default it goes to your project's exports/ folder. You can change this to any location.

  4. 4

    Export

    Click Export. A progress bar shows file-by-file progress. When done, a toast notification confirms success and shows the output path.

Format reference

YOLO ZIPTraining in any YOLO-compatible framework. Includes images/, labels/, and classes.txt.
COCO JSONDetectron2, MMDetection, and tools that expect the COCO bbox format [x, y, w, h].
Pascal VOC XMLLegacy annotation pipelines. One .xml file per image.
Flat CSVData analysis, custom training scripts. Columns: filename, x1, y1, x2, y2, class_name.

💡 Tips

YOLO ZIP includes all images - even unannotated ones - so you can use them for negative training samples.

Malformed label lines are skipped with a warning to stderr - your export still completes.

🎥

Collecting screenshots for your dataset

3 min

Video walkthrough

A full video guide for this tutorial is on the way.

Coming soon
  1. 1

    Click "Capture Screen" in the tools panel

    This opens the screen capture tool - its purpose is to grab screenshots and add them directly to your project's dataset, not to run live detection. It is the fastest way to build a dataset from something visible on your screen.

  2. 2

    Choose what to capture

    Click "Select area" to draw a region on your screen with a crosshair snipping tool. Or click "Select window" to pick from a dropdown list of all currently running applications - e.g. your game, browser, or any other window.

  3. 3

    Capture screenshots

    Once a source is selected, press the capture button (or use the P global hotkey - it works even while your game or target app is in focus). Each press saves a screenshot directly into your project's images folder.

  4. 4

    Add them to the project and annotate

    Open the Annotator after capturing - your new screenshots are already in the image strip. Annotate them normally, then retrain to improve your model on real target data.

💡 Tips

P is a global hotkey - you don't need to alt-tab back to F-Annote to capture. Keep playing and press P when a good frame appears.

Capture varied frames - different positions, lighting, distances. Variety beats quantity.

Aim for 50–100 captures per scenario before retraining.

🎯

Test Detection - running inference

3 min

Video walkthrough

A full video guide for this tutorial is on the way.

Coming soon
  1. 1

    Click "Detect" in the tools panel

    The Test Detection dialog opens. This is where you run your trained model on real images or a live feed to verify it is working correctly - separate from the screen capture tool.

  2. 2

    Choose Screenshot or Live mode

    Switch between the two tabs at the top. "Screenshot" mode runs inference on a single image capture. "Live" mode runs continuous real-time inference on a camera, screen area, or window feed.

  3. 3

    Select a source

    In Screenshot mode choose File, Camera, Area, or Window. In Live mode the same sources are available for continuous capture. "Window" drops a list of all running applications you can target.

  4. 4

    Pick a model

    Choose any .pt or .engine model from your project, or select one of the built-in COCO base models (yolov8n, yolov8s, etc.) to detect common objects without training. The label button next to the model shows "All" or the number of active class filters.

  5. 5

    Filter classes (optional)

    Next to the model dropdown is a button that says "All" by default. Click it to open the Detection Class Filter - a searchable list of all classes. Uncheck any classes you want to hide, use "None" to deselect all, or "All" to reset. Only checked classes will appear in results. The filter resets automatically if you switch models.

  6. 6

    Run detection

    Click "Detect". Bounding boxes with class labels and confidence scores appear over the image or live feed. Adjust the confidence slider to control how sensitive the detection is.

💡 Tips

Use Test Detection to sanity-check your model after training before putting it to use.

COCO base models are great for testing on common objects without any training at all.

A .engine model runs faster in Live mode - recommended for smooth real-time inference.