<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Yobitel</title>
    <description>The latest articles on DEV Community by Yobitel (@yobitel).</description>
    <link>https://dev.to/yobitel</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F992796%2Fe5c8cc94-f562-4b44-8226-effce2addea8.jpg</url>
      <title>DEV Community: Yobitel</title>
      <link>https://dev.to/yobitel</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/yobitel"/>
    <language>en</language>
    <item>
      <title>How do you connect CVAT seamlessly to Amazon S3 storage?</title>
      <dc:creator>Yobitel</dc:creator>
      <pubDate>Thu, 30 Jul 2026 07:14:30 +0000</pubDate>
      <link>https://dev.to/yobitel/how-do-you-connect-cvat-seamlessly-to-amazon-s3-storage-4nd6</link>
      <guid>https://dev.to/yobitel/how-do-you-connect-cvat-seamlessly-to-amazon-s3-storage-4nd6</guid>
      <description>&lt;p&gt;&lt;strong&gt;Connecting CVAT to Amazon S3 requires 3 verified steps:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Creating an S3 bucket with Block Public Access enabled&lt;/li&gt;
&lt;li&gt;Creating an IAM user with AmazonS3ReadOnlyAccess or AmazonS3FullAccess permissions&lt;/li&gt;
&lt;li&gt;Registering the bucket in CVAT under Cloud Storage → + using your IAM Access Key ID and Secret Access Key&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;CVAT outputs finished annotation datasets back to S3 once it is linked, avoiding manual file transfers.&lt;/p&gt;

&lt;p&gt;Annotation tools require local access to media files, while production datasets are stored in object storage. Through CVAT's native Amazon S3 integration, annotators can access data directly from S3 buckets, eliminating the need for local copies, sync scripts, and storage overhead on the CVAT instance itself.&lt;/p&gt;

&lt;p&gt;What is CVAT and why use Amazon S3 with it?&lt;/p&gt;

&lt;p&gt;CVAT is an open-source platform for labelling image and video datasets used in computer vision and ML pipelines. Amazon S3 eliminates local storage bottlenecks by allowing distributed annotation teams to access shared datasets directly from the cloud. &lt;/p&gt;

&lt;p&gt;CVAT supports every major annotation type used in computer vision: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Bounding boxes&lt;/li&gt;
&lt;li&gt;Polygons&lt;/li&gt;
&lt;li&gt;Polylines&lt;/li&gt;
&lt;li&gt;Ellipses&lt;/li&gt;
&lt;li&gt;Cuboids&lt;/li&gt;
&lt;li&gt;Keypoints&lt;/li&gt;
&lt;li&gt;Tags&lt;/li&gt;
&lt;li&gt;Segmentation masks&lt;/li&gt;
&lt;li&gt;3D point cloud annotations&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It handles both image datasets and video files, and exports annotations in formats including&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;COCO&lt;/li&gt;
&lt;li&gt;Pascal VOC&lt;/li&gt;
&lt;li&gt;YOLO (Ultralytics and standard)&lt;/li&gt;
&lt;li&gt;CVAT XML&lt;/li&gt;
&lt;li&gt;Datumaro&lt;/li&gt;
&lt;li&gt;LabelMe&lt;/li&gt;
&lt;li&gt;KITTI&lt;/li&gt;
&lt;li&gt;Cityscapes and more.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For teams annotating at scale, storing raw media locally creates two fundamental problems. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Storage capacity - annotation projects regularly involve tens of thousands of images or hours of video. &lt;/li&gt;
&lt;li&gt;Collaboration - multiple annotators pulling from a shared local directory creates sync conflicts, bandwidth bottlenecks, and version control headaches.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Amazon S3 resolves both. A single bucket can store datasets of any size, S3 versioning protects source files from accidental modification, and CVAT's Cloud Storage module connects directly to S3 so annotators can access frames on demand without downloading anything locally. This integration is especially straightforward when CVAT runs as the &lt;strong&gt;&lt;a href="https://aws.amazon.com/marketplace/pp/prodview-ix6qaquyaj5w2" rel="noopener noreferrer"&gt;Yobitel Image &amp;amp; Video Annotation Platform built on CVAT&lt;/a&gt;&lt;/strong&gt;, deployed directly from AWS Marketplace. Co-locating the EC2 instance and S3 bucket in the same region reduces latency and data transfer costs from day one.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Create your Amazon S3 bucket&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Create an S3 bucket in the AWS console, specify the bucket name and region, and enable Block All Public Access. It uses IAM credentials for bucket access, which should remain disabled for security.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Log in to your AWS account and navigate to the Amazon S3 console.&lt;/li&gt;
&lt;li&gt;Click Create bucket. Enter a globally unique bucket name (e.g., &lt;strong&gt;cvat-annotation-data-yourorg&lt;/strong&gt;). Select the AWS region closest to your CVAT EC2 instance. Co-location is critical for performance.&lt;/li&gt;
&lt;li&gt;Under Block Public Access, enable Block all public access. CVAT authenticates with IAM credentials, so public access is not needed.&lt;/li&gt;
&lt;li&gt;Leave all other settings at their defaults and click Create bucket.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Place the S3 bucket in the same AWS region as your CVAT EC2 instance. Cross-region data transfer adds latency on every frame load and incurs data transfer costs, especially impactful for high-frame-count video annotation tasks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Upload your dataset to S3&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6v2d8g0m86q3hpw5zoui.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6v2d8g0m86q3hpw5zoui.png" alt="CVAT and Amazon S3 workflow for storing, annotating, and exporting datasets securely" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Upload your image or video dataset to the S3 bucket using the AWS console or AWS CLI. Organise files under a logical prefix. A &lt;strong&gt;manifest.jsonl&lt;/strong&gt; file is optional but recommended for cloud storage integrations. It improves task creation speed and enables caching mode.&lt;/p&gt;

&lt;p&gt;Organise files under a prefix that separates raw media from annotation outputs:&lt;/p&gt;

&lt;p&gt;cvat-annotation-data-yourorg/&lt;br&gt;
├── project-alpha/&lt;br&gt;
│   ├── raw/&lt;br&gt;
│   │   ├── image_001.jpg&lt;br&gt;
│   │   ├── image_002.jpg&lt;br&gt;
│   │   └── manifest.jsonl     ← is optional but recommended&lt;br&gt;
│   └── annotations/&lt;br&gt;
│       └── coco_export.zip&lt;/p&gt;

&lt;p&gt;Upload large datasets via the AWS CLI:&lt;br&gt;
&lt;code&gt;bash&lt;br&gt;
aws s3 cp /local/path/to/dataset/ s3://cvat-annotation-data-yourorg/project-alpha/raw/ --recursive&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
&lt;strong&gt;CVAT manifest file&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The &lt;strong&gt;manifest.jsonl&lt;/strong&gt; file is a dataset descriptor in JSONL format, one JSON object per line that CVAT uses when reading data from cloud storage. Manifest files are mainly used when working with cloud storage to reduce the amount of network traffic used and speed up the task creation process.&lt;/p&gt;

&lt;p&gt;For an image dataset, it looks like this:&lt;br&gt;
&lt;code&gt;json&lt;br&gt;
{"version": "1.0"}&lt;br&gt;
{"type": "images"}&lt;br&gt;
{"name": "image_001", "extension": ".jpg", "width": 1920, "height": 1080, "meta": {"related_images": []}, "checksum": "a1b2c3d4..."}&lt;br&gt;
{"name": "image_002", "extension": ".jpg", "width": 1920, "height": 1080, "meta": {"related_images": []}, "checksum": "b2c3d4e5..."}.&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
Note: The manifest tool generates an MD5 hash automatically, not entered manually.&lt;/p&gt;

&lt;p&gt;Generate the manifest automatically using the CVAT Docker utility:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;bash&lt;br&gt;
docker run -it --rm -u "$(id -u)":"$(id -g)" \&lt;br&gt;
  -v "${PWD}":"/local" \&lt;br&gt;
  --entrypoint python3 \&lt;br&gt;
  cvat/server \&lt;br&gt;
  utils/dataset_manifest/create.py --output-dir /local /local/&amp;lt;path/to/images&amp;gt;&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
Then upload the manifest to the same S3 prefix as your images:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;bash&lt;br&gt;
aws s3 cp manifest.jsonl s3://cvat-annotation-data-yourorg/project-alpha/raw/&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
If your IAM user has read-only access, upload the manifest via the S3 console browser (drag and drop) instead of the CLI, since the CLI write requires &lt;strong&gt;s3:PutObject&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Configure IAM access permissions&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;CVAT officially supports two AWS-managed IAM policies: &lt;br&gt;
&lt;strong&gt;AmazonS3ReadOnlyAccess&lt;/strong&gt; for read-only annotation workflows, and &lt;strong&gt;AmazonS3FullAcces&lt;/strong&gt;s for workflows that also export annotation outputs back to S3. Create a dedicated IAM user with programmatic access, attach the appropriate policy, and save the Access Key ID and Secret Access Key.&lt;/p&gt;

&lt;p&gt;Verified from the official CVAT docs at docs.cvat.ai:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Navigate to IAM in the AWS console and select Add users.&lt;/li&gt;
&lt;li&gt;Set a User name (e.g., &lt;strong&gt;cvat-s3-access&lt;/strong&gt;) and enable Access key – programmatic access.&lt;/li&gt;
&lt;li&gt;Click Next: Permissions, then select Create group and name the group (e.g., &lt;strong&gt;cvat-s3-group&lt;/strong&gt;).&lt;/li&gt;
&lt;li&gt;Search for and attach the appropriate policy: &lt;strong&gt;AmazonS3ReadOnlyAccess&lt;/strong&gt; for annotation-only workflows where CVAT only reads from S3, or &lt;strong&gt;AmazonS3FullAccess&lt;/strong&gt; for full pipelines where CVAT also exports annotation datasets back to the bucket.&lt;/li&gt;
&lt;li&gt;Complete user creation and save the Access Key ID and Secret Access Key — these are shown once only.&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Policy&lt;/th&gt;
&lt;th&gt;What It Grants&lt;/th&gt;
&lt;th&gt;Best For&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;AmazonS3ReadOnlyAccess&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;s3:Get*&lt;/code&gt;, &lt;code&gt;s3:List*&lt;/code&gt;, &lt;code&gt;s3:Describe*&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Read-only annotation workflows&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;AmazonS3FullAccess&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;All Amazon S3 actions&lt;/td&gt;
&lt;td&gt;Full annotation pipelines with export back to Amazon S3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Custom Least-Privilege&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Access limited to a specific S3 bucket ARN&lt;/td&gt;
&lt;td&gt;Production and multi-tenant environments&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;AWS managed policies grant access to all S3 buckets in the account. For production, create a custom policy scoped to your specific bucket: apply &lt;strong&gt;s3:ListBucket&lt;/strong&gt; at the bucket level (&lt;strong&gt;arn:aws:s3:::your-bucket-name&lt;/strong&gt;) and &lt;strong&gt;s3:GetObject&lt;/strong&gt;, &lt;strong&gt;s3:PutObject&lt;/strong&gt; at the object level (&lt;strong&gt;arn:aws:s3:::your-bucket-name/&lt;/strong&gt;*).&lt;/p&gt;

&lt;p&gt;CVAT also supports anonymous access to publicly accessible S3 buckets. For production data or proprietary data, authenticated IAM access should be used when the data is sensitive. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Register the S3 bucket in CVAT&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In CVAT, navigate to Cloud Storage from the top menu, click the + button, select AWS S3 as the provider, and fill in the bucket name, region, and IAM credentials. After clicking Submit, CVAT validates the connection. A green status confirms successful authentication.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Log in to your CVAT instance. In the top navigation menu, select Cloud Storage.&lt;/li&gt;
&lt;li&gt;Click the + button in the upper-right area of the Cloud Storage page.&lt;/li&gt;
&lt;li&gt;Fill in the form:&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;CVAT Field&lt;/th&gt;
&lt;th&gt;What to Enter&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Display Name&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Any descriptive name for the storage connection&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Provider&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;AWS S3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Bucket Name&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Enter the exact S3 bucket name (case-sensitive)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Region&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;AWS Region where the bucket is located (for example, &lt;code&gt;eu-west-2&lt;/code&gt;)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Access Key ID&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;IAM user's Access Key ID&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Secret Access Key&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;IAM user's Secret Access Key&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Prefix (Optional)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Folder path inside the bucket, such as &lt;code&gt;project-alpha/raw/&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Manifest Path (Optional)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Path to the &lt;code&gt;manifest.jsonl&lt;/code&gt; file within the bucket&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;ol&gt;
&lt;li&gt;Click Submit. CVAT attempts to authenticate and list the bucket contents.&lt;/li&gt;
&lt;li&gt;Check the connection status. A green status confirms successful authentication. A red status requires troubleshooting.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The most common cause of a red status is a region mismatch between what was entered in the CVAT form and the bucket's actual region. Other causes include incorrect credentials with trailing whitespace, a typo in the bucket name, or a missing s3:ListBucket permission on a custom policy.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Create annotation tasks using S3 as the data source&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When creating a new CVAT task, switch the data source from Local files to Cloud storage, select the registered S3 bucket, specify a dataset prefix or filename pattern, and complete the task configuration. Annotators stream media directly from S3 during the annotation session. Full deployment steps for the AMI, including instance sizing and first login, are covered in the &lt;strong&gt;&lt;a href="https://www.yobitel.com/single-post/yobitel-cvat-image-video-annotation-solutions" rel="noopener noreferrer"&gt;Yobitel CVAT user manual&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Click Create Task from the CVAT Tasks page.&lt;/li&gt;
&lt;li&gt;Enter a task name and configure annotation labels.&lt;/li&gt;
&lt;li&gt;Under Select files, switch from My computer to Cloud storage.&lt;/li&gt;
&lt;li&gt;Select the registered S3 bucket from the dropdown. Browse contents or use the filename pattern field (e.g., project-alpha/raw/*.jpg) to filter files.&lt;/li&gt;
&lt;li&gt;Select the files or directory to annotate, configure overlap and segment size, then click Submit &amp;amp; Open.&lt;/li&gt;
&lt;li&gt;On task completion, use Actions → Export dataset to write annotation files back to S3 or download locally.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;CVAT supports glob-style filename patterns when selecting cloud storage files. Use patterns like &lt;em&gt;.jpg, batch_01/&lt;/em&gt;.png, or *&lt;em&gt;/frames/&lt;/em&gt;.jpeg to target specific file sets without browsing the full directory tree.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Troubleshooting common CVAT S3 errors:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Common Issues and Fixes&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Error&lt;/th&gt;
&lt;th&gt;Likely Cause&lt;/th&gt;
&lt;th&gt;Recommended Fix&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Red connection status&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Region mismatch, incorrect credentials, or missing &lt;code&gt;ListBucket&lt;/code&gt; permission&lt;/td&gt;
&lt;td&gt;Verify the AWS Region, confirm the IAM credentials, and check the IAM policy.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Invalid &lt;code&gt;manifest.jsonl&lt;/code&gt; file structure&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Required fields such as &lt;code&gt;name&lt;/code&gt; or file extension are missing&lt;/td&gt;
&lt;td&gt;Regenerate the manifest using the CVAT Docker utility.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Task creation fails: "No media data found"&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;The filename pattern does not match any uploaded files&lt;/td&gt;
&lt;td&gt;Verify the prefix path and confirm the files exist in the specified S3 location.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Slow frame loading&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Cross-Region latency or missing manifest/caching&lt;/td&gt;
&lt;td&gt;Deploy EC2 and S3 in the same AWS Region and use a &lt;code&gt;manifest.jsonl&lt;/code&gt; file.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Access denied on export&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;IAM user has read-only permissions&lt;/td&gt;
&lt;td&gt;Grant &lt;code&gt;s3:PutObject&lt;/code&gt; permission or use &lt;strong&gt;AmazonS3FullAccess&lt;/strong&gt; if appropriate.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Architecture value at scale&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;S3 integration decouples dataset storage from compute capacity, which has practical consequences for how annotation infrastructure scales. The running instance can be resized, replaced, or replicated without interrupting access to annotation data. Buckets feeding active tasks can simultaneously serve model training pipelines, data versioning systems, and QA review workflows, eliminating redundant copies across the machine learning stack.&lt;/p&gt;

&lt;p&gt;For teams managing multi-annotator projects, parallel task assignments, or continuous active learning pipelines on AWS, centralising datasets in S3 is what makes CVAT a production-viable annotation platform rather than a single-user tool. Teams evaluating a managed deployment path can explore &lt;strong&gt;&lt;a href="https://www.yobitel.com/" rel="noopener noreferrer"&gt;Yobitel's&lt;/a&gt;&lt;/strong&gt; AWS Marketplace solutions as a starting point. For the full EC2 launch and login walkthrough, see &lt;strong&gt;&lt;a href="https://yobitel.medium.com/how-to-annotate-datasets-through-aws-using-cvat-4b5e9bb14304" rel="noopener noreferrer"&gt;how to annotate datasets through AWS using CVAT&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>opensource</category>
      <category>machinelearning</category>
      <category>aws</category>
    </item>
    <item>
      <title>ERPNext on AWS Replaces 5 Business Tools With One Unified Platform</title>
      <dc:creator>Yobitel</dc:creator>
      <pubDate>Wed, 29 Jul 2026 10:11:16 +0000</pubDate>
      <link>https://dev.to/yobitel/erpnext-on-aws-replaces-5-business-tools-with-one-unified-platform-41o7</link>
      <guid>https://dev.to/yobitel/erpnext-on-aws-replaces-5-business-tools-with-one-unified-platform-41o7</guid>
      <description>&lt;p&gt;ERPNext on AWS replaces five business subscriptions, accounting, inventory, HR and payroll, CRM, and procurement, with one open source ERP running in &lt;strong&gt;your own AWS account&lt;/strong&gt;. &lt;a href="https://aws.amazon.com/marketplace/pp/prodview-bycayk2s7r2ak" rel="noopener noreferrer"&gt;Yobitel's prebuilt AMI&lt;/a&gt; (Amazon Machine Image, a ready-to-launch server image with everything installed) brings it live in &lt;strong&gt;under 15 minutes&lt;/strong&gt;, with &lt;strong&gt;no per-seat licensing&lt;/strong&gt; and no vendor lock-in.&lt;/p&gt;

&lt;p&gt;A typical growing business runs those five functions on five disconnected tools: QuickBooks for accounting, Cin7 or a spreadsheet for inventory, Gusto for payroll, HubSpot for the sales pipeline, and an email chain for purchase approvals. Five logins, five separate databases, five monthly invoices.&lt;/p&gt;

&lt;p&gt;Disconnection creates daily rework. Finance invoices customers without seeing current stock levels. Payroll totals are retyped into the accounting system every month. A closed deal travels from the CRM to the order system by hand, and purchase records live in inboxes instead of ledgers.&lt;/p&gt;

&lt;p&gt;ERPNext removes the rework by running all five functions on one shared dataset. Below is a tool-by-tool breakdown of what it replaces, how each module connects to the others, and what changes for your business when five systems become one.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Faloswywmh0yvn8f2koqy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Faloswywmh0yvn8f2koqy.png" alt="ERPNext on AWS replacing five business tools including accounting, inventory, HR, CRM and procurement with one unified ERP platform" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. ERPNext Accounting Connects Finance to Live Operations&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What businesses currently use:&lt;/strong&gt; QuickBooks, Xero, FreshBooks, or Sage for invoicing, expense tracking, bank reconciliation, and financial reporting.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What ERPNext replaces it with:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;General ledger entries are created automatically when Sales Orders are fulfilled, and Purchase Orders are received&lt;/li&gt;
&lt;li&gt;Accounts receivable updates when a sales invoice is raised, accounts payable when a purchase invoice is matched&lt;/li&gt;
&lt;li&gt;Expense claims from HR flow directly into the financial records&lt;/li&gt;
&lt;li&gt;Multi-currency invoicing handles international customers without manual conversion&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Financial reports such as profit and loss, balance sheet, cash flow statement, and accounts ageing are generated from live data rather than an export manually updated at the end of the week.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;What you gain&lt;/strong&gt;: Finance stops being a department that receives information from other departments and becomes a live view of everything happening across the business, automatically.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;2. ERPNext Inventory Tracks Stock From Real Transactions&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What businesses currently use:&lt;/strong&gt; Cin7, inFlow, Fishbowl, or spreadsheets for stock tracking, warehouse management, and reorder alerts.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What ERPNext replaces it with:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Every goods receipt from a supplier updates stock levels immediately&lt;/li&gt;
&lt;li&gt;Every delivery against a Sales Order reduces stock in the same instant&lt;/li&gt;
&lt;li&gt;Transfers between warehouses are logged with full audit trails&lt;/li&gt;
&lt;li&gt;Reorder levels trigger alerts before stock runs out rather than after&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When a Purchase Order is received, inventory and accounts payable update simultaneously. When a Sales Order is fulfilled, inventory reduces, and the sales invoice is raised without a separate step in a separate system. Stock figures stay accurate because every number comes from an actual transaction, never from a manual entry made after the fact.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;What you gain:&lt;/strong&gt; Inventory accuracy no longer depends on someone remembering a spreadsheet. Every stock movement connects directly to the financial and sales records that caused it.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3jfs161ikhmywvbcstim.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3jfs161ikhmywvbcstim.png" alt="Diagram comparing five disconnected business software subscriptions with a single ERPNext system running on one shared dataset" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. ERPNext HR Posts Payroll Straight Into Accounting&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What businesses currently use:&lt;/strong&gt; BambooHR, Gusto, Sage HR, or a combination of HR software and a separate payroll processor for employee records, leave management, and monthly payroll runs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What ERPNext replaces it with:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Employee records, department structures, leave policies, and attendance live in one place&lt;/li&gt;
&lt;li&gt;Salary structures are configured once and applied to each payroll run&lt;/li&gt;
&lt;li&gt;Salary components, deductions, and tax rules are configurable per jurisdiction&lt;/li&gt;
&lt;li&gt;Country-specific localisation modules cover regions including India, the UK, the US, and the UAE&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When payroll is processed, payroll costs are posted directly to the accounting records, and the expense appears in the profit and loss without a manual journal entry. Leave approvals move through approval workflows you set up inside the application (no coding required), and attendance records feed payroll calculations without any export between systems.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;What you gain:&lt;/strong&gt; HR and finance stop running as two separate administrative processes reconciled each month. One connected system removes that entire month-end reconciliation exercise.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;4. ERPNext CRM Connects Sales Directly to Fulfilment&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What businesses currently use:&lt;/strong&gt; HubSpot, Salesforce, Zoho CRM, or Pipedrive for lead tracking, opportunity management, customer records, and sales pipeline visibility.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What ERPNext replaces it with:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Leads are created and qualified, opportunities move through pipeline stages&lt;/li&gt;
&lt;li&gt;Customer records capture the full history of every interaction&lt;/li&gt;
&lt;li&gt;Calls, meetings, and pending tasks are logged against each contact&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When a deal closes, the transition from CRM to operations happens inside the same system. A Sales Order is raised directly from the opportunity, delivery is scheduled, and the invoice is generated. At no point does a salesperson hand information to an operations team working in a different tool. Closed deals and fulfilled orders live in the same record.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;What you gain:&lt;/strong&gt; That gap between sales and operations, where orders get lost, miscommunicated, or delayed, closes completely. A closed deal moves to fulfilment automatically inside the same system the salesperson was already using.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fc1slkijxxy56e4o2mw9g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fc1slkijxxy56e4o2mw9g.png" alt="Three step ERPNext deployment on AWS Marketplace from subscription to launching the Yobitel prebuilt AMI to the login page in under 15 minutes" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. ERPNext Purchasing Traces Every Order to Payment&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What businesses currently use:&lt;/strong&gt; Procurify, manual purchase orders in spreadsheets, or email-based approval chains for supplier management, purchase orders, and goods receipt.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What ERPNext replaces it with:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Supplier records hold full contact and payment term details&lt;/li&gt;
&lt;li&gt;Purchase Orders are raised, routed through approval workflows inside the application, and sent directly from the system&lt;/li&gt;
&lt;li&gt;Goods receipts are recorded against the Purchase Order on arrival&lt;/li&gt;
&lt;li&gt;Matching the purchase invoice to the receipt and the order posts it to accounts payable automatically&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Every purchase is traceable from the original order through to payment, with no manual matching between a spreadsheet, an email chain, and an accounting entry.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;What you gain:&lt;/strong&gt; Procurement becomes a controlled, auditable process instead of an ad hoc collection of emails and typed spreadsheet rows. Supplier spend stays visible in real time, and accounts payable stays current without a month-end catch-up.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;One Shared Dataset Across All Five Modules&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fhok4rc0r12jjhy90wh06.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fhok4rc0r12jjhy90wh06.png" alt="ERPNext workflow showing a sales order flowing automatically through inventory, invoicing, accounting and purchasing modules without manual handoffs" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Each module on its own saves manual work. All five together deliver something no standalone tool can: a single source of truth across the entire business.&lt;/p&gt;

&lt;p&gt;A salesperson closes a deal. A Sales Order is created. Warehouse staff receive the picking list, stock is reserved, delivery is confirmed, and the invoice posts to accounts receivable. Stock levels reduce, and if replenishment is needed, a reorder alert triggers the Purchasing module. At the end of the month, warehouse attendance recorded in HR flows into that period's payroll run, and payroll costs land in the same profit and loss as the sales revenue, all without a human carrying information between systems.&lt;/p&gt;

&lt;p&gt;Finance sees the same numbers that operations sees. Sales sees the same customer history accounts as. Month-end reconciliation between five exports from five tools disappears because one system produces one set of data.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;No Per Seat Licensing on AWS&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F45cgbf6jq22edxwz853s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F45cgbf6jq22edxwz853s.png" alt="No Per Seat Licensing on AWS" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Conventional business software charges per seat: fifty users pay five times what ten users pay, and each added module raises the bill again. Customising the software to match your process means a vendor negotiation and a paid implementation partner.&lt;/p&gt;

&lt;p&gt;ERPNext on AWS works differently. Yobitel's listings carry no separate per-user software fee. You pay for the AWS infrastructure running the platform, an EC2 instance in your own account billed by the hour, plus any software charges stated upfront on the Marketplace listing itself. A typical small team instance, such as a t3.large, runs in the range of USD 60 to 70 per month, often less than a single per-seat subscription it replaces. &lt;strong&gt;Adding ten users adds no software cost&lt;/strong&gt;. Adding a new department adds no software cost. Customising a module needs a developer, not a vendor approval, and everyday changes like approval chains and workflows are set up inside the app without any code.&lt;/p&gt;

&lt;p&gt;Your data sits in your own AWS VPC. No vendor holds your business data on shared infrastructure, and no annual contract renewal stands between you and your own records.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Migrating From Your Existing Tools&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Moving off five systems sounds harder than it is. ERPNext includes a built-in &lt;strong&gt;Data Import tool&lt;/strong&gt; that accepts CSV and Excel files for every core record type, so exports from QuickBooks, Zoho, HubSpot, or a spreadsheet map directly into the new system:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Chart of accounts and opening balances&lt;/li&gt;
&lt;li&gt;Customers and suppliers&lt;/li&gt;
&lt;li&gt;Items and opening stock&lt;/li&gt;
&lt;li&gt;Employee records&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Opening balances bring your ledger across cleanly, and a phased cutover (accounting first, then inventory, then CRM) keeps the business running throughout. &lt;a href="https://yobitel.com/" rel="noopener noreferrer"&gt;Yobitel&lt;/a&gt; also provides migration assistance for teams that want the transition handled from start to finish.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Live in Under 15 Minutes, Ready on First Boot&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Running ERPNext through &lt;strong&gt;Yobitel's prebuilt AMI&lt;/strong&gt; skips everything &lt;strong&gt;self hosting normally demands:&lt;/strong&gt; server provisioning, dependency setup, database configuration, and service management. Every module arrives installed, all services running, with a login page waiting in your browser on first boot. No installation, no server setup, no command line. Remaining configuration is purely your own business setup: company details, users, and the approval workflows described above, all done inside the application.&lt;/p&gt;

&lt;p&gt;Scaling is equally direct. Moving to a larger EC2 instance as your team and transaction volumes grow takes minutes: stop the instance, change the instance type, restart. No data migration, no application reconfiguration. Backups run through EBS snapshot automation using AWS Data Lifecycle Manager, giving point-in-time recovery without manual procedures, and storage expands from the AWS console as data grows.&lt;/p&gt;

&lt;p&gt;Teams preferring containers can choose ERPNext Container Solutions instead, deploying via Docker or CloudFormation into existing container infrastructure. Both options launch from AWS Marketplace into your own AWS account, with charges appearing on your regular AWS invoice and no separate vendor contract.&lt;/p&gt;

&lt;p&gt;If reaching your own numbers takes five logins and a spreadsheet to stitch it all together, your stack is running you. ERPNext on AWS puts accounting, inventory, HR, CRM, and procurement on one shared dataset inside your own AWS account, with no per seat pricing and no vendor lock in. Trying it costs 15 minutes: one system, one dataset, and one business that finally agrees with itself. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Frequently Asked Questions&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What does ERPNext on AWS replace?&lt;/strong&gt; ERPNext on AWS replaces standalone accounting software (QuickBooks, Xero), inventory tools (Cin7, inFlow), HR and payroll systems (BambooHR, Gusto), CRM software (HubSpot, Salesforce, Zoho), and procurement tools (Procurify) with one unified system running in your own AWS account.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How long does ERPNext take to deploy on AWS?&lt;/strong&gt; Under 15 minutes using Yobitel's prebuilt AMI on AWS Marketplace. Subscription takes under 60 seconds, and the fully configured system is live in your browser on first boot.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Does ERPNext on AWS charge per user?&lt;/strong&gt; No. Yobitel's ERPNext listings carry no per-seat software licensing. You pay for the AWS EC2 infrastructure in your own account, billed hourly, so adding users or departments adds no software cost.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can I migrate data from QuickBooks or my current CRM into ERPNext?&lt;/strong&gt; Yes. ERPNext's Data Import tool accepts CSV and Excel exports for accounts, customers, suppliers, items, stock, and employees, and Yobitel offers assisted migration for complete transitions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Where is my business data stored?&lt;/strong&gt; Inside your own AWS VPC, in your own AWS account. No third party vendor holds your data on shared infrastructure.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Get Started&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;ERPNext on AWS is available now through the &lt;a href="https://aws.amazon.com/marketplace/seller-profile?id=5ac1a1e2-3686-4310-ba24-520bd32259a5" rel="noopener noreferrer"&gt;&lt;strong&gt;Yobitel seller profile&lt;/strong&gt;&lt;/a&gt; on AWS Marketplace. Search for &lt;strong&gt;&lt;a href="https://aws.amazon.com/marketplace/pp/prodview-bycayk2s7r2ak" rel="noopener noreferrer"&gt;Yobitel ERP Suite built on ERPNext&lt;/a&gt;&lt;/strong&gt; for the direct EC2 launch path, or &lt;strong&gt;&lt;a href="https://aws.amazon.com/marketplace/pp/prodview-lzhby475aeqpy" rel="noopener noreferrer"&gt;ERPNext Container Solutions&lt;/a&gt;&lt;/strong&gt; for Docker and CloudFormation deployment. Subscription takes under 60 seconds, and the system is live within 15 minutes of launch.&lt;/p&gt;

&lt;p&gt;For questions about which modules suit your business, migration from existing tools, or post deployment support, contact Yobitel at &lt;strong&gt;&lt;a href="mailto:support@yobitel.com"&gt;support@yobitel.com&lt;/a&gt;&lt;/strong&gt; or visit &lt;strong&gt;&lt;a href="https://yobitel.com/" rel="noopener noreferrer"&gt;yobitel.com&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Yobitel Communications is a cloud native application and managed services provider headquartered in London, UK, and an AWS Consulting Partner. &lt;/p&gt;

</description>
      <category>aws</category>
      <category>opensource</category>
      <category>devops</category>
      <category>cloud</category>
    </item>
    <item>
      <title>How to Use the InferenceBench Leaderboard to Pick the Right AI Model</title>
      <dc:creator>Yobitel</dc:creator>
      <pubDate>Mon, 20 Jul 2026 08:47:47 +0000</pubDate>
      <link>https://dev.to/yobitel/how-to-use-the-inferencebench-leaderboard-to-pick-the-right-ai-model-4dee</link>
      <guid>https://dev.to/yobitel/how-to-use-the-inferencebench-leaderboard-to-pick-the-right-ai-model-4dee</guid>
      <description>&lt;p&gt;300+ AI models. 60 GPUs. 19 providers. Daily pricing updates. Verified benchmark scores. Provider availability is probed every 24 hours.&lt;/p&gt;

&lt;p&gt;That is what the &lt;a href="https://inferencebench.io/leaderboard/" rel="noopener noreferrer"&gt;&lt;strong&gt;InferenceBench Leaderboard&lt;/strong&gt;&lt;/a&gt; tracks. The question is not whether the data is there - it is whether you are reading it correctly.&lt;/p&gt;

&lt;p&gt;Quality score alone tells you what a model is capable of in controlled conditions. It does not tell you what it costs at your volume, how fast it runs on your workload, whether it has provider redundancy, or whether it fits your task category. That is what the leaderboard is actually built to answer - if you know which columns to look at and in what order.&lt;/p&gt;

&lt;p&gt;This guide walks through every column, every filter, and every badge – with real leaderboard data - so you leave with a model decision built on evidence, not assumption.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Quick Answer&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Filter the InferenceBench Leaderboard by task category first (Chat, Code, Math, Reasoning, Vision, or Embedding), then sort by Value score rather than Quality score. The Value score combines quality, cost, and throughput into a single number - making it the fastest path to the right model for most workloads. Check the Providers column before committing – models with fewer than 3 active providers carry operational risk. Use the ROI → link on any row to validate economics at your actual volume before shortlisting.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Why Quality Score Is Not the Right Starting Column
&lt;/h3&gt;

&lt;p&gt;The leaderboard defaults to sorting by a composite Value score, not by Quality. This is intentional.&lt;/p&gt;

&lt;p&gt;Quality score measures benchmark performance - MMLU for general reasoning, HumanEval for code generation, GSM8K for mathematical reasoning. These benchmarks are useful for comparing models on standardised tasks. They are not useful for predicting whether a model will handle your specific workload better than a cheaper alternative.&lt;/p&gt;

&lt;p&gt;A model with a quality score of 87 costs $2.50 per million input tokens and $10.00 per million output tokens. A model with a quality score of 70 costs $0.20 per million tokens for both input and output. For summarisation, classification, and structured extraction - the majority of production AI workloads - the output quality difference between these two scores is rarely perceptible to end users.&lt;/p&gt;

&lt;p&gt;The column that answers the right question is &lt;strong&gt;Value&lt;/strong&gt;, which combines quality, cost, and throughput. Start there, not at Quality.&lt;/p&gt;

&lt;h4&gt;
  
  
  Step 1 - Filter by Task Category Before Looking at Any Model
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fdvm16y10mz0kf84rzdnf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fdvm16y10mz0kf84rzdnf.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The leaderboard tabs are the first decision point. The top model in the Overall tab is almost never the top model in every category tab.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tab&lt;/th&gt;
&lt;th&gt;Best for&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;🏆 Overall&lt;/td&gt;
&lt;td&gt;Starting point – composite value across all tasks&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;💬 Chat&lt;/td&gt;
&lt;td&gt;Chatbots, assistants, summarization, general queries&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;💻 Code&lt;/td&gt;
&lt;td&gt;Code generation, debugging, review, completion&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🔢 Math&lt;/td&gt;
&lt;td&gt;Financial models, scientific computing, numerical reasoning&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🧠 Reasoning&lt;/td&gt;
&lt;td&gt;Complex agents, multi-step analysis, decision support&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;👁 Vision&lt;/td&gt;
&lt;td&gt;Image understanding, visual QA, document processing&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;📊 Embedding&lt;/td&gt;
&lt;td&gt;RAG pipelines, semantic search, vector retrieval&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🤏 Small (&amp;lt;15B)&lt;/td&gt;
&lt;td&gt;Edge deployment, cost-sensitive, high-volume pipelines&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🩣 Large (70B+)&lt;/td&gt;
&lt;td&gt;Maximum quality, frontier tasks, complex reasoning&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;⭐ Best Value&lt;/td&gt;
&lt;td&gt;Optimal quality-per-dollar across the full catalog&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Select the tab that matches your primary workload before reading a single model name or price. The rankings shift significantly between tabs. A model leading on Code may not appear in the top 10 on Reasoning.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;💡 &lt;strong&gt;If your workload uses embeddings&lt;/strong&gt;, the Embedding tab is a completely separate evaluation. Embedding models are architecturally different from chat models – never evaluate them in the same tab or compare their prices directly.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h4&gt;
  
  
  Step 2 - Read Every Column in the Right Order
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1cbo3xt08m4luu0qundj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1cbo3xt08m4luu0qundj.png" alt=" " width="800" height="445"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here is what each column tells you and the order in which to read them:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Value - read this first&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The composite ranking score combining quality, cost, and throughput. Higher is better. This is InferenceBench's primary sort metric and the fastest path to identifying strong candidates.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Current top Value scores on the leaderboard:&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Model&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;th&gt;Why&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Qwen 2.5 1.5B&lt;/td&gt;
&lt;td&gt;1862.0&lt;/td&gt;
&lt;td&gt;Extremely low cost at $0.027~/M&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Llama 3.2 3B&lt;/td&gt;
&lt;td&gt;916.7&lt;/td&gt;
&lt;td&gt;$0.060/M at 154 tok/s – Pareto badge&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Llama 3.2 1B&lt;/td&gt;
&lt;td&gt;1266.7&lt;/td&gt;
&lt;td&gt;$0.030/M, 33 tok/s, 5 providers&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Qwen 2.5 3B&lt;/td&gt;
&lt;td&gt;580.0&lt;/td&gt;
&lt;td&gt;$0.100/M, 49 tok/s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Qwen 2.5 7B&lt;/td&gt;
&lt;td&gt;350.0&lt;/td&gt;
&lt;td&gt;$0.200/M, 70 quality, Most Popular&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Qwen 3 8B&lt;/td&gt;
&lt;td&gt;350.0&lt;/td&gt;
&lt;td&gt;$0.200/M, 49 tok/s, 12.7× reasoning&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Quality ✓ - read this second&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The composite benchmark score verified by InferenceBench. The ✓ symbol means a source URL and date are attached. A dash (not available) means no verified score exists – InferenceBench does not estimate. It shows a gap rather than a guess.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What the score combines:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;MMLU&lt;/strong&gt; - general knowledge across 57 subjects&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;HumanEval&lt;/strong&gt; - code generation accuracy&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;GSM8K&lt;/strong&gt; - mathematical reasoning&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Current verified quality scores on the top 12 rows: 70 (Qwen 2.5 7B), 70 (Qwen 3 8B), 58 (Qwen 2.5 3B), 57 (Qwen 3 4B), 55 (Llama 3.2 3B), 74 (Qwen 3 32B), 38 (Llama 3.2 1B), 63 (Llama 3 8B), 82 (HelpSteer2 Llama 3.1 70B).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Input $/M and Output $/M – read these together&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The cost per million tokens for input and output separately. Output tokens are almost always more expensive than input - sometimes by 4x or more.&lt;/p&gt;

&lt;p&gt;The ~ symbol means the figure is modelled rather than confirmed from the provider's pricing page. Prices older than 7 days are flagged yellow. Prices older than 30 days revert to not available.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;⚠️ &lt;strong&gt;For RAG workloads:&lt;/strong&gt; Output tokens dominate your bill, not input tokens. A model with cheap input but expensive output can be significantly more expensive in practice than its input price suggests. Always check both columns together.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Speed (tok/s) - throughput after generation starts&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Tokens per second once the model begins responding. The * symbol indicates a modelled estimate.&lt;/p&gt;

&lt;p&gt;Speed matters differently depending on your workload:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Batch processing:&lt;/strong&gt; higher tok/s directly reduces pipeline time and cost&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Real-time chat:&lt;/strong&gt; TTFT (time to first token) matters more than throughput – the leaderboard shows throughput, not TTFT&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Embedding:&lt;/strong&gt; speed is largely irrelevant – cost per embedding call matters more&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Tokens/$ - the inversion of cost&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;How many tokens you receive per dollar spent. Llama 3.2 3B at 2,562.50 M tokens per dollar versus a frontier model at roughly 100M tokens per dollar makes the economic gap instantly visible without doing any math.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Context - the upper limit on your prompt length&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The maximum input context window. 128K is standard for most current models. 32K is more limited – check this column if your workload involves long documents, multi-turn conversations, or large code files.&lt;/p&gt;

&lt;p&gt;Qwen 2.5 3B and Qwen 2.5 1.5B both have 32K context – a meaningful constraint if your workload involves long documents. Qwen 2.5 7B, Qwen 3 8B, and the Llama 3.x family all support 128K.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Providers ✓ - the column most developers ignore&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The number of active providers currently serving this model – verified through daily live probes. A provider only appears in this count if it passed a live request within the last 7 days.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Provider count&lt;/th&gt;
&lt;th&gt;What it means&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Single point of failure – operational risk&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2–3&lt;/td&gt;
&lt;td&gt;Basic redundancy – acceptable for non-critical workloads&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4–7&lt;/td&gt;
&lt;td&gt;Good resilience – recommended for production&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;10+&lt;/td&gt;
&lt;td&gt;Maximum resilience – Llama 3.1 8B holds this position&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Qwen 2.5 3B has 1 active provider. This means one rate limit change, one pricing update, one outage, or one deprecation notice affects your entire service. The leaderboard surfaces this so you can factor it into your decision before it becomes a production incident.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Reasoning × - the multiplier that affects your actual cost&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The reasoning token multiplier for models with extended chain-of-thought capability.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Model&lt;/th&gt;
&lt;th&gt;Reasoning multiplier&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Qwen 3 8B&lt;/td&gt;
&lt;td&gt;✓ 12.7×&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Qwen 3 4B&lt;/td&gt;
&lt;td&gt;✓ 3.7×&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Qwen 3 32B&lt;/td&gt;
&lt;td&gt;✓ 11.5×&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Qwen 3 8B at $0.200/M output tokens with a 12.7× reasoning multiplier effectively costs $2.54/M tokens in reasoning mode – comparable to a frontier model. The base price and the reasoning-mode price are not the same number.&lt;/p&gt;

&lt;p&gt;Always verify provider-specific reasoning token pricing before enabling this mode. Some providers charge a surcharge on top of the base output rate.&lt;/p&gt;

&lt;h4&gt;
  
  
  Step 3 - Read the Badges
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6e4tpcbn416qk2eiircb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6e4tpcbn416qk2eiircb.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Four badges appear on the leaderboard. Each answers a specific question without requiring column analysis:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🏆 Most Popular&lt;/strong&gt; - The model most selected by InferenceBench users. Currently: &lt;strong&gt;Qwen 2.5 7B&lt;/strong&gt;. Reflects real developer usage – not marketing spend.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;⭐ Best Value&lt;/strong&gt; - Highest composite Value score in the category. Changes as pricing and provider availability shift daily.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;👑 Best Quality&lt;/strong&gt; - Highest verified quality score in the category. Use this when task complexity genuinely requires maximum capability – complex reasoning, nuanced analysis, frontier agent workflows.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;💰 Cheapest&lt;/strong&gt; - Lowest cost per million tokens in the category. Currently: &lt;strong&gt;Qwen 2.5 1.5B&lt;/strong&gt; at approximately $0.027~/M.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pareto Q×C×S&lt;/strong&gt; - A special badge for models simultaneously optimal on Quality, Cost, and Speed - no other model beats it on all three dimensions at once. Currently held by &lt;strong&gt;Llama 3.2 3B&lt;/strong&gt; (quality 55, $0.060/M, 154 tok/s) and &lt;strong&gt;Llama 3.2 1B&lt;/strong&gt; (quality 38, $0.030/M, 33 tok/s).&lt;/p&gt;

&lt;h4&gt;
  
  
  Step 4 - Apply the Sidebar Filters
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fv6dwq439y6umntgi0mvt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fv6dwq439y6umntgi0mvt.png" alt=" " width="800" height="338"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The sidebar filters narrow the field before you evaluate individual models:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Family&lt;/strong&gt; - Filter by model family: Qwen, Llama, Mistral, DeepSeek, Claude, OpenAI, Gemma, and 70+ others. Use this when you have already decided on a model family and want to compare versions within it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Architecture&lt;/strong&gt; - Dense, MoE (Mixture of Experts), or Hybrid. MoE models like DeepSeek R1 activate only a fraction of their parameters per inference - affecting cost and speed differently from dense models of the same parameter count.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Size&lt;/strong&gt; - Parameter range: &amp;lt;7B, 7–13B, 13–70B, 70B+. Use this to constrain evaluation to models that fit your infrastructure tier or budget ceiling.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;API&lt;/strong&gt; - Has API or No API. If your workload requires an API-accessible model rather than a self-hosted deployment, enable this filter to remove models only available as downloadable weights.&lt;/p&gt;

&lt;h4&gt;
  
  
  Step 5 - Use the ROI Calculator Before Shortlisting
&lt;/h4&gt;

&lt;p&gt;Every row on the leaderboard has a &lt;strong&gt;ROI →&lt;/strong&gt; link that opens the &lt;a href="https://inferencebench.io/calculator/" rel="noopener noreferrer"&gt;&lt;strong&gt;InferenceBench ROI calculator&lt;/strong&gt;&lt;/a&gt; pre-loaded with that model's data.&lt;/p&gt;

&lt;p&gt;The calculator answers three questions that the leaderboard columns cannot:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What does this model actually cost at my volume?&lt;/strong&gt; Enter your projected monthly token count. The calculator returns your real monthly bill across all API pricing options for that model.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;When does self-hosting become cheaper than the API?&lt;/strong&gt; The calculator models GPU CapEx, power consumption, cooling overhead, amortisation period, and networking to find your exact break-even point between API and self-hosted inference.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Which provider is cheapest for this model?&lt;/strong&gt; Where multiple providers serve the same model at different rates, the calculator surfaces the cost difference – a gap that can be 20% or more for the same model weights served on different infrastructure.&lt;/p&gt;

&lt;p&gt;Run the ROI calculation from the leaderboard before shortlisting any model. A model that ranks well on Value may not be the cheapest option at your specific volume or may have a better-priced provider you have not considered&lt;/p&gt;

&lt;h4&gt;
  
  
  Step 6 - Validate in the InferenceBench Playground
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fd13hldb4x9lmtcr1eaul.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fd13hldb4x9lmtcr1eaul.png" alt=" " width="800" height="470"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The leaderboard tells you which models look best on verified benchmarks. The &lt;a href="https://inferencebench.io/playground/" rel="noopener noreferrer"&gt;&lt;strong&gt;InferenceBench Playground&lt;/strong&gt;&lt;/a&gt; tells you which model performs best on your actual prompts.&lt;/p&gt;

&lt;p&gt;The Playground has three sections - Chat, Compare, and Providers — and the right way to use them is in a specific order.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Connect Providers first&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Go to the Providers tab at &lt;a href="http://inferencebench.io/playground/providers/" rel="noopener noreferrer"&gt;inferencebench.io/playground/providers/&lt;/a&gt;. This is where you connect the provider accounts that power the Chat feature.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;"Connect your free LLM accounts. Sign up takes 30 seconds. We orchestrate the rest."&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Without connected providers, you get access to small models at 5 messages per hour. With connected providers - Groq, Mistral, Cerebras, OpenAI, Anthropic, and others - the full frontier model catalogue becomes available. InferenceBench routes your prompts through your accounts. Costs go to your provider, not to InferenceBench.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Test in Chat - the main Playground feature&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The Chat interface at &lt;a href="http://inferencebench.io/playground/" rel="noopener noreferrer"&gt;inferencebench.io/playground/&lt;/a&gt; is the core of the Playground. Select any model your connected providers can serve, pick a mode — Chat, Code, Image, or Vision - and test with your actual prompts.&lt;/p&gt;

&lt;p&gt;The routing indicator in the input bar shows which provider is handling each request - for example, "via Groq" - so you always know exactly where your request is going and where the cost is being charged.&lt;/p&gt;

&lt;p&gt;This is where you validate your leaderboard shortlist against real workload prompts before making any production commitment. Not generic test prompts. Your actual domain-specific queries - the ones your application will send in production.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Compare in the Model Arena — the second Playground feature&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Once you have tested individual models in Chat and identified 2 to 3 strong candidates, the Compare tab at &lt;a href="http://inferencebench.io/playground/compare/" rel="noopener noreferrer"&gt;inferencebench.io/playground/compare/&lt;/a&gt; runs a blind side-by-side test.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;"Vote which model wrote a better answer. Your votes train our public ranking."&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The Arena sends your prompt to two random models simultaneously. Both responses appear side by side with no labels, no model names, and no pricing visible. You read both and vote for the better output. Only after you vote do the model identities reveal.&lt;/p&gt;

&lt;p&gt;This removes the confirmation bias that affects manual model evaluation. When you know which model you are reading, you read the expensive or well-known model more charitably. Hiding the identities forces evaluation on output quality alone — and the results frequently differ from what the price difference would suggest.&lt;/p&gt;

&lt;p&gt;Every vote also contributes to the public community ranking visible at the bottom of the Compare page.&lt;/p&gt;

&lt;h3&gt;
  
  
  Worked Example - Picking a Model for a Document Summarisation Pipeline
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Scenario:&lt;/strong&gt; High-volume document summarization. 10 million tokens per month. Latency under 3 seconds acceptable. Primary constraint: cost efficiency. Minimum: 3 active providers for redundancy.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1 - Filter:&lt;/strong&gt; Click the Chat tab. Summarization is an instruction-following task.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2 - Sidebar filters:&lt;/strong&gt; Size under 15B, Has API enabled.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3 - Sort by Value, read top candidates:&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Model&lt;/th&gt;
&lt;th&gt;Quality&lt;/th&gt;
&lt;th&gt;Input $/M&lt;/th&gt;
&lt;th&gt;Speed&lt;/th&gt;
&lt;th&gt;Providers&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Llama 3.2 3B&lt;/td&gt;
&lt;td&gt;55&lt;/td&gt;
&lt;td&gt;$0.060&lt;/td&gt;
&lt;td&gt;154 tok/s&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;916.7&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Qwen 2.5 7B&lt;/td&gt;
&lt;td&gt;70&lt;/td&gt;
&lt;td&gt;$0.200&lt;/td&gt;
&lt;td&gt;27 tok/s&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;350.0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Qwen 3 8B&lt;/td&gt;
&lt;td&gt;70&lt;/td&gt;
&lt;td&gt;$0.200&lt;/td&gt;
&lt;td&gt;49 tok/s&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;350.0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Llama 3.1 8B&lt;/td&gt;
&lt;td&gt;Not verified&lt;/td&gt;
&lt;td&gt;$0.180&lt;/td&gt;
&lt;td&gt;35 tok/s&lt;/td&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;322.2&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Step 4 - Apply constraints:&lt;/strong&gt; All four meet the 3-provider minimum. All meet the latency requirement. No eliminations yet.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 5 - ROI at 10M tokens per month:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Llama 3.2 3B:&amp;nbsp; $0.060 x 10M = $600/month&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Qwen 2.5 7B: &amp;nbsp; $0.200 x 10M = $2,000/month&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Annual gap:&amp;nbsp; &amp;nbsp; $1,400 x 12&amp;nbsp; = $16,800/year&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Step 6 - Connect providers and test in Playground Chat:&lt;/strong&gt; Run your actual summarization prompts through Llama 3.2 3B and Qwen 2.5 7B in Chat mode. Assess output quality directly on real document samples.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 7 - Compare in Model Arena:&lt;/strong&gt; Run 10 to 15 Arena sessions with real summarization prompts. Vote on output quality with identities hidden. If Llama 3.2 3B wins consistently, it is the production choice at $16,800 less per year.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Decision:&lt;/strong&gt; Llama 3.2 3B pending Arena validation. Fallback: Qwen 2.5 7B for quality-sensitive documents.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Bottom Line&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The InferenceBench Leaderboard has one job: help you pick the right AI model for your specific workload – not the most famous one, not the highest-scoring one, and not the one your team defaulted to six months ago.&lt;/p&gt;

&lt;p&gt;Filter by task category. Read Value before Quality. Check the Providers column. Run the ROI calculation. Test shortlisted candidates in the Arena with your actual prompts.&lt;/p&gt;

&lt;p&gt;That workflow takes under an hour. It replaces days of manual evaluation with verified data at every step.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://inferencebench.io/leaderboard/" rel="noopener noreferrer"&gt;&lt;strong&gt;Open the InferenceBench Leaderboard →&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://inferencebench.io/calculator/" rel="noopener noreferrer"&gt;&lt;strong&gt;Run the ROI Calculator →&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://inferencebench.io/playground/compare/" rel="noopener noreferrer"&gt;&lt;strong&gt;Test candidates in the Model Arena →&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;All leaderboard data sourced from &lt;a href="http://inferencebench.io" rel="noopener noreferrer"&gt;inferencebench.io&lt;/a&gt; as of June 2026. Pricing and provider availability update daily – verify current figures before production decisions. InferenceBench is not affiliated with any model developer, GPU vendor, or cloud provider.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>machinelearning</category>
      <category>testing</category>
      <category>aimodels</category>
    </item>
    <item>
      <title>CVAT AMI from Yobitel - How do annotation types work on AWS?</title>
      <dc:creator>Yobitel</dc:creator>
      <pubDate>Wed, 01 Jul 2026 11:22:32 +0000</pubDate>
      <link>https://dev.to/yobitel/cvat-ami-from-yobitel-how-do-annotation-types-work-on-aws-45l8</link>
      <guid>https://dev.to/yobitel/cvat-ami-from-yobitel-how-do-annotation-types-work-on-aws-45l8</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjspfto0o9xpzbo6hmazi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjspfto0o9xpzbo6hmazi.png" alt=" " width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;CVAT AMI runs on your own EC2 infrastructure in AWS. There are no managed annotation platforms, like&amp;nbsp;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;No per-seat pricing&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;No data egress to a third-party cloud&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;No dependency on external availability&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The AMI packages CVAT with all required services, which makes deployment a single-step process from the AWS Marketplace.&lt;/p&gt;

&lt;p&gt;Once the instance is running, the annotation environment gives teams full control over data, workflows, and export pipelines. The quality of the output depends entirely on choosing the right annotation type for the task.&amp;nbsp;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://aws.amazon.com/marketplace/pp/prodview-ix6qaquyaj5w2" rel="noopener noreferrer"&gt;Yobitel’s CVAT AMI on AWS&lt;/a&gt; supports 9 distinct annotation types. Various types are associated with specific geometry, storage formats, and export schemas, which must align with what downstream models expect.&lt;/p&gt;

&lt;p&gt;Selecting the wrong type does not produce suboptimal data. It produces structurally incorrect data. A detection model trained on polygons converted to bounding boxes loses boundary precision at inference. A segmentation model trained on bounding box crops receives background pixels as part of the object region. A tracking model trained without persistent object IDs cannot learn identity continuity across frames. These are not quality issues that post-processing can fix. They are architectural mismatches between the annotation geometry and the model input contract.&lt;/p&gt;

&lt;p&gt;The 9 annotation types map across four layers of the annotation decision:&amp;nbsp;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Object geometry (rectangular, contoured, linear, point, volumetric)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Model task (detection, segmentation, pose estimation, tracking, classification)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Output format (YOLO, COCO, Cityscapes, MOT, KITTI)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Infrastructure requirement (CPU, GPU, high-IOPS storage)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It covers all the types and the EC2 instance specifications that support each type at a production scale.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Bounding box&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fp0o8nls15cr82zi6261l.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fp0o8nls15cr82zi6261l.png" alt="Bounding box annotation in CVAT AMI" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;CVAT stores bounding boxes as 4 pixel coordinates:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;xtl&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;ytl&lt;/strong&gt;&amp;nbsp;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;xbr&lt;/strong&gt; top-left per cent&amp;nbsp;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;ybr&lt;/strong&gt; bottom-right corner&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Every box carries a label, an optional attribute set, and a confidence flag when auto-annotation is active. It is the fastest annotation type and the most widely supported across detection frameworks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;When to use it&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Bounding boxes apply when the target model is an object detector such as YOLO, Faster R-CNN, or SSD. They work for objects that are upright, non-overlapping, and fill most of the rectangle. Object fill ratio is the key threshold. When the ratio of object pixels to total box pixels drops below approximately 40 per cent, the rectangle captures too much background context, which degrades localisation accuracy during training. At that threshold, a polygon or mask produces better training data.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Recommended EC2 instance&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Workload&lt;/th&gt;
&lt;th&gt;Instance&lt;/th&gt;
&lt;th&gt;Notes&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Small tasks, up to 5,000 images&lt;/td&gt;
&lt;td&gt;t3.medium&lt;/td&gt;
&lt;td&gt;CPU-only, no AI-assist&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Standard production tasks&lt;/td&gt;
&lt;td&gt;c5.xlarge&lt;/td&gt;
&lt;td&gt;4 vCPU, enough for manual bounding boxes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AI-assisted auto-annotation&lt;/td&gt;
&lt;td&gt;g4dn.xlarge&lt;/td&gt;
&lt;td&gt;Required for Nuclio-based YOLO auto-detect&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Real pipeline&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Product detection systems label items on warehouse conveyors with bounding boxes. The model confirms whether a SKU is present in a frame region. YOLO v8 trained on these annotations runs inference in the 40 to 50ms range per frame. Fill ratio stays above 60 per cent across most captures because SKUs are upright and belt-separated.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step by step in CVAT&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Step&lt;/th&gt;
&lt;th&gt;Action&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1. Open task&lt;/td&gt;
&lt;td&gt;Navigate to http://:8080. Go to Projects, Create Task, upload images or enter an S3 path.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2. Configure S3&lt;/td&gt;
&lt;td&gt;The IAM role requires s3:GetObject, s3:ListBucket, and s3:HeadObject. Missing HeadObject fails file enumeration.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3. Draw&lt;/td&gt;
&lt;td&gt;Press N. Click-drag across the object to define the rectangle.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4. Label&lt;/td&gt;
&lt;td&gt;Release the mouse. CVAT prompts for a label from the predefined label set.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5. Adjust&lt;/td&gt;
&lt;td&gt;Hover a box edge for the resize handle and drag. Hold Alt and drag to reposition without resizing.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6. Export&lt;/td&gt;
&lt;td&gt;Actions, Export Dataset. YOLO 1.1 for detection pipelines. COCO 1.0 for JSON-format annotations.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Polygon&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fed6pouwut92a7gdlh57w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fed6pouwut92a7gdlh57w.png" alt="Polygon annotation in CVAT AMI" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Polygon geometry has no fixed shape. CVAT stores polygons as ordered vertex arrays, where the shape closes automatically when the final point connects to the first. Each vertex is a pixel coordinate. The contour conforms to concave boundaries, irregular silhouettes, and partially occluded objects.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;When to use it&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Polygon annotation is correct for instance segmentation training. Mask R-CNN, SegFormer, and SAM fine-tuning all require per-cent boundary masks. Concave silhouettes, overhead vehicles, garments, and agricultural plants are hard to describe with rectangles. Polygons are also necessary when objects of the same class touch or overlap, because each polygon instance carries its own ID regardless of spatial proximity.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Polygon vs bounding box&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Detection models (YOLO, Faster R-CNN) only need class and location. Bounding boxes suffice. Segmentation models like Mask R-CNN and SegFormer require precise boundary geometry. Polygons are necessary. When the fill ratio drops below 40 per cent, a polygon also produces better detection data because it eliminates the background context that the rectangle would include.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Recommended EC2 instance&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Workload&lt;/th&gt;
&lt;th&gt;Instance&lt;/th&gt;
&lt;th&gt;Notes&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Manual polygon tracing&lt;/td&gt;
&lt;td&gt;c5.xlarge&lt;/td&gt;
&lt;td&gt;Adequate for up to 20 concurrent annotators&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Intelligent scissors (edge-snap)&lt;/td&gt;
&lt;td&gt;c5.xlarge&lt;/td&gt;
&lt;td&gt;CPU-only mode, no GPU needed&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AI-assisted interactive segmentation&lt;/td&gt;
&lt;td&gt;g4dn.xlarge&lt;/td&gt;
&lt;td&gt;SiamMask and MobileNet models via Nuclio require a GPU&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;High-density tasks, 20,000+ images&lt;/td&gt;
&lt;td&gt;c5.2xlarge&lt;/td&gt;
&lt;td&gt;Higher memory prevents canvas lag on large images&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Real pipeline&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Crop disease detection from drone imagery requires polygon precision. The boundary between diseased and healthy leaf tissue is part of the learning signal. Rectangles capture healthy tissue on all sides, making the boundary annotation misleading. Annotators trace polygon contours at 150 to 200 vertex points per diseased region.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step by step in CVAT&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Step&lt;/th&gt;
&lt;th&gt;Action&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1. Activate&lt;/td&gt;
&lt;td&gt;Polygons can be drawn from the left toolbar or by pressing N in the Draw Shape dropdown.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2. Place vertices&lt;/td&gt;
&lt;td&gt;Click each vertex around the object boundary. CVAT connects vertices in real time.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3. Close&lt;/td&gt;
&lt;td&gt;Double-click the final point, or press N again, to close the shape.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4. Edit&lt;/td&gt;
&lt;td&gt;Right-click the polygon to enter edit mode. Drag vertices, right-click a vertex to delete it, right-click a segment to insert a new point.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5. Intelligent scissors&lt;/td&gt;
&lt;td&gt;Activate the magnetic lasso icon for high-contrast boundaries. Edge detection snaps vertices, reducing click count by 30 to 60 per cent on clean images.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6. Export&lt;/td&gt;
&lt;td&gt;COCO 1.0 for segmentation models. LabelMe for per-instance JSON. Cityscapes 1.0 for pixel-indexed PNG masks.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Polyline&lt;/strong&gt;&amp;nbsp;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftxpnqqgpejb9f23ibfk9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftxpnqqgpejb9f23ibfk9.png" alt="Polyline annotation in CVAT AMI" width="624" height="416"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Polylines share the same ordered vertex array structure as polygons, but do not close. CVAT renders them as a series of strokes with configurable width. The geometry suits linear structures with no enclosed area: lane markings, road edges, cables, conveyor belt paths, blood vessels, structural cracks, and skeletal joint connections.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Recommended EC2 instance&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Workload&lt;/th&gt;
&lt;th&gt;Instance&lt;/th&gt;
&lt;th&gt;Notes&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Standard polyline annotation&lt;/td&gt;
&lt;td&gt;t3.medium or c5.xlarge&lt;/td&gt;
&lt;td&gt;CPU-only, low compute demand&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;High-volume video polylines&lt;/td&gt;
&lt;td&gt;c5.xlarge&lt;/td&gt;
&lt;td&gt;Frame scrubbing at scale benefits from more vCPU&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Real pipeline&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Lane detection systems for highway footage use polylines per lane boundary per frame. Each line carries task-level attributes: line type (solid, dashed, double) and colour (white, yellow). The detection model SCNN takes polyline coordinates as direct supervision targets rather than rasterised masks. Attribute metadata is necessary because the model distinguishes marking type, not just position.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step by step in CVAT&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Step&lt;/th&gt;
&lt;th&gt;Action&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1. Activate&lt;/td&gt;
&lt;td&gt;Select Polyline from the Draw Shape dropdown or press N with polyline mode active.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2. Place points&lt;/td&gt;
&lt;td&gt;Click each point along the linear feature. Unlike polygon mode, you do not close the shape.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3. Terminate&lt;/td&gt;
&lt;td&gt;Double-click the final point or press N.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4. Add attributes&lt;/td&gt;
&lt;td&gt;Open Label Constructor, add an attribute to the label, set type to select or text, and define the value options. Each polyline instance carries the attribute value labelling during annotation.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5. Export&lt;/td&gt;
&lt;td&gt;LabelMe or Datumaro format, both of which preserve custom attribute fields.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Point and skeleton labelled&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fhjqkasfgs6ju1p82gu56.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fhjqkasfgs6ju1p82gu56.png" alt="Point and skeleton keypoint annotation in CVAT AMI" width="624" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Point annotations carry no area geometry. CVAT stores each point as an (x, y, label) tuple representing a single pixel coordinate with an associated label. A skeleton groups related points under one object instance and encodes a connectivity graph between them. This structure maps directly to the COCO Keypoints format.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;When to use it&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Points apply to keypoint annotation tasks, pose estimation, facial landmark labelling, and centroid-based density estimation. For pose estimation, the model consumes keypoint coordinates and a skeleton graph. Each joint is labelled discretely, with a visibility flag indicating whether the joint is visible, occluded, or out of frame. v=0 for unlabeled, v=1 for occluded, v=2 for fully visible.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Recommended EC2 instance&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Workload&lt;/th&gt;
&lt;th&gt;Instance&lt;/th&gt;
&lt;th&gt;Notes&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Manual keypoint placement&lt;/td&gt;
&lt;td&gt;t3.medium or c5.xlarge&lt;/td&gt;
&lt;td&gt;Low compute per frame&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Video-based pose tracking&lt;/td&gt;
&lt;td&gt;c5.xlarge&lt;/td&gt;
&lt;td&gt;Multi-frame keyframe interpolation is CPU-bound&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Real pipeline&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Sports analytics datasets for basketball label 17 body keypoints per player, matching the COCO body schema: nose, eyes, ears, shoulders, elbows, wrists, hips, knees, and ankles. Each person instance carries a 17-byte int skeleton with visibility flags. The export uses COCO 1.0 Keypoints format, encoding each instance as [x1, y1, v1, x2, y2, v2, ...].&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step by step in CVAT&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Step&lt;/th&gt;
&lt;th&gt;Action&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1. Configure label&lt;/td&gt;
&lt;td&gt;In Label Constructor, define a label for the object class and configure a skeleton by adding each keypoint as a sublabel with its name.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2. Activate&lt;/td&gt;
&lt;td&gt;Press N with Points mode selected. Click to place each point.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3. Skeleton mode&lt;/td&gt;
&lt;td&gt;CVAT prompts for each joint in sequence and connects them per the defined graph.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4. Visibility flags&lt;/td&gt;
&lt;td&gt;Verify flags in the Objects panel. Set the occluded flag for hidden joints.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5. Export&lt;/td&gt;
&lt;td&gt;COCO 1.0 Keypoints format. Output JSON carries a keypoints array per instance and a skeleton connectivity field in the category definition.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Instance segmentation&lt;/strong&gt;&amp;nbsp;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgllv95hj7mwk2xcvsoqv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgllv95hj7mwk2xcvsoqv.png" alt=" " width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Instance segmentation provides each individual object with a unique mask. Two cars in the same image get two separate masks with separate instance IDs, even if they overlap. In CVAT, this is produced by drawing polygon or brush mask annotations where each drawn object gets its own unique Iis D in the Objects panel.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;When to use it&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Instance segmentation applies when the model needs to count, separate, or individually process objects of the same class, particularly when those objects overlap. Mask R-CNN and panoptic segmentation architectures require per-instance masks. If objects of the same class are always spatially separated and identification of individual objects is not required, semantic segmentation is sufficient and faster to produce.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Recommended EC2 instance&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Workload&lt;/th&gt;
&lt;th&gt;Instance&lt;/th&gt;
&lt;th&gt;Notes&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Manual PO, Lygon-based instance masks&lt;/td&gt;
&lt;td&gt;c5.xlarge&lt;/td&gt;
&lt;td&gt;CPU-only is adequate for polygon tracing&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Brush tool instance masks&lt;/td&gt;
&lt;td&gt;c5.xlarge&lt;/td&gt;
&lt;td&gt;Higher RAM helps with large image canvases&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AI-assisted interactive segmentation&lt;/td&gt;
&lt;td&gt;g4dn.xlarge&lt;/td&gt;
&lt;td&gt;SiamMask requireIDGPU via Nuclio&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RLE export of large polygon datasets&lt;/td&gt;
&lt;td&gt;c5.2xlarge or gp3 EBS at 3000 IOPS&lt;/td&gt;
&lt;td&gt;I/O intensive during packaging&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Real pipeline&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Robotic sorting separates items on a conveyor. Items stack and partially overlap. Without instance identity, overlapping objects of the same class merge into an undifferentiated region, and the robot arm cannot resolve a spatial target. Each bottle, can, and paper unit receives its own mask. A length of 1.0 is used with RLE encoding. Each annotation entry in the JSON carries a category_id for class and a unique ID for instance.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step by step in CVAT&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Step&lt;/th&gt;
&lt;th&gt;Action&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1. Draw per object&lt;/td&gt;
&lt;td&gt;Draw a polygon or use the Brush tool for each object individually. Each drawn annotation is a separate CVAT object with its own row in the Objects panel.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2. Verify IDs&lt;/td&gt;
&lt;td&gt;Confirm in the Objects panel that no two objects of the same class share an ID. Those row numbers are the instance ID.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3. Export setup&lt;/td&gt;
&lt;td&gt;Enable mask export in the COCO export settings. CVAT rasterises polygons and runs-length encodes them.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4. Export&lt;/td&gt;
&lt;td&gt;COCO 1.0 with RLE. The segmentation field per annotation contains {counts, size} when RLE is active.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Semantic segmentation&lt;/strong&gt;&amp;nbsp;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8pb54mqf9fufgjaeay6h.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8pb54mqf9fufgjaeay6h.png" alt="Semantic segmentation annotation in CVAT AMI" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Pixels in an image are labelled with a class. The output is a mask where each pixel value corresponds to a class index. There are no instance IDs. Three cars in the same frame all receive the same car class index, with no per-car distinction.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;When to use it&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Semantic segmentation fits scene parsing tasks where class distribution across the image is the objective. Autonomous driving scene parsing, satellite land cover classification, and medical tissue classification are the primary applications. DeepLab, PSPNet, and similar networks train on per-pixel class indices without needing to distinguish individual objects.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Recommended EC2 instance&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Workload&lt;/th&gt;
&lt;th&gt;Instance&lt;/th&gt;
&lt;th&gt;Notes&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Polygon-based semantic masks&lt;/td&gt;
&lt;td&gt;c5.xlarge&lt;/td&gt;
&lt;td&gt;Standard CPU workload&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Brush-based full-image painting&lt;/td&gt;
&lt;td&gt;c5.xlarge&lt;/td&gt;
&lt;td&gt;Adequate for 1024x1024 images&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Large image semantic annotation, 4K+&lt;/td&gt;
&lt;td&gt;c5.2xlarge&lt;/td&gt;
&lt;td&gt;Higher RAM prevents canvas rendering delays&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cityscapes export of 10,000+ images&lt;/td&gt;
&lt;td&gt;c5.2xlarge wit,h gp3 EBS at 3000 IOPS&lt;/td&gt;
&lt;td&gt;Export I/O intensive&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Real pipeline&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Satellite imagery land cover classification labels each pixel as forest, agricultural land, water, or urban surface. No per-parcel identity is needed. The export uses Cityscapes 1.0 format, producing a PNG mask where each pixel stores an integer class index. DeepLab v3+ trains directly on these masks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step by step in CVAT&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Step&lt;/th&gt;
&lt;th&gt;Action&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1. Configure colours&lt;/td&gt;
&lt;td&gt;Assign a distinct RGB colour per class in Label Constructor. This colour maps to the output mask encoding.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2. Paint&lt;/td&gt;
&lt;td&gt;Use the Brush tool for large, uniform regions. Use polygon mode for precise class boundaries.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3. Full coverage&lt;/td&gt;
&lt;td&gt;All pixels should be covered. Uncovered pixels export as background (class index 0) in Cityscapes format.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4. Export&lt;/td&gt;
&lt;td&gt;Cityscapes 1.0. Output includes labelIds_polygon.png (integer class index per pixel) and color.png (mapped RGB per pixel).&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5. Verify mapping&lt;/td&gt;
&lt;td&gt;Confirm the class-to-index order in your label configuration matches what the training script expects before export.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;What is the brush tool and when should it replace polygons?&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;The Brush tool in CVAT is a freehand painting tool that directly writes pixel-level masks. It produces the same underlying mask format as polygons through a different input mechanism: painting with a brush cursor rather than placing vertices.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;When to use it over polygons&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The Brush tool works better than polygon tracing for three cases: large amorphous regions without clear linear edges, areas where the boundary is too irregular for efficient vertex placement, and semantic segmentation tasks requiring full pixel coverage. For instance, segmentation of objects with hard edges, the polygon tool with Intelligent Scissors to temporarily activate erase, and precise boundaries. For manual polygon workflows, a c5.xlarge provides sufficient compute, while AI-assisted mask generation requires a g4dn.xlarge to support the GPU inference load.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step by step in CVAT&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Step&lt;/th&gt;
&lt;th&gt;Action&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1. Activate&lt;/td&gt;
&lt;td&gt;Select the Brush tool from the left toolbar (mask icon).&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2. Set size&lt;/td&gt;
&lt;td&gt;Adjust the brush size from the toolbar slider. Larger brushes cover areas faster. Smaller brushes handle boundary regions.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3. Paint&lt;/td&gt;
&lt;td&gt;Click and drag over the target object area.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4. Erase&lt;/td&gt;
&lt;td&gt;Switch to erase mode to correct boundary overshoot. Hold Shift while painting to activate erasing temporarily.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5. Convert&lt;/td&gt;
&lt;td&gt;Use the polygon approximation feature to convert a freehand mask to a vertex array for post-edit manipulation.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6. Export&lt;/td&gt;
&lt;td&gt;Cityscapes 1.0 for semantic masks. COCO 1.0 with mask export enabled for instance masks.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Cuboid&lt;/strong&gt;&amp;nbsp;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fylccgwje6pues4qwir3g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fylccgwje6pues4qwir3g.png" alt="Cuboid annotation in CVAT AMI" width="800" height="1200"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A cuboid is a 3D bounding box that encodes spatial depth alongside 2D position. CVAT renders cuboids as perspective-projected shapes on a 2D image plane, combining a front face rectangle with edge lines projecting to a rear face to represent spatial orientation and depth extent.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;When to use it&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Cuboids apply when the model needs spatial depth information: autonomous driving 3D detection, robotics scene reconstruction, and augmented reality object placement. Models such as PointPillars, SECOND, and CenterPoint trained on 3D bounding box data require cuboid annotations. LiDAR point cloud datasets paired with camera images are the primary use case.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Recommended EC2 instance&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Workload&lt;/th&gt;
&lt;th&gt;Instance&lt;/th&gt;
&lt;th&gt;Notes&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Manual cuboid annotation&lt;/td&gt;
&lt;td&gt;c5.xlarge&lt;/td&gt;
&lt;td&gt;CPU-only adequate&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;LiDAR point cloud annotation (CVAT 3D model)&lt;/td&gt;
&lt;td&gt;c5.2xlarge&lt;/td&gt;
&lt;td&gt;Higher RAM and vCPU handles point cloud rendering&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GPU-assisted 3D detection pre-annotation&lt;/td&gt;
&lt;td&gt;g4dn.xlarge&lt;/td&gt;
&lt;td&gt;Nuclio-based 3D model inference&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Real pipeline&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;An autonomous vehicle dataset labels vehicles, pedestrians, and cyclists with cuboids in dashcam images paired with LiDAR scans. Each cuboid encodes position (x, y, z), dimensions (width, height, depth), and rotation (yaw angle). The model predicts full 3D bounding boxes at inference.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step by step in CVAT&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Step&lt;/th&gt;
&lt;th&gt;Action&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1. Activate&lt;/td&gt;
&lt;td&gt;Select the Cuboid tool from the draw mode dropdown.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2. Draw the front face&lt;/td&gt;
&lt;td&gt;Click to define two points: top-left and bottom-right of the front face.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3. Adjust rear face&lt;/td&gt;
&lt;td&gt;CVAT renders the projected rear face automatically. Drag rear face handles to match depth, extent, and rotation.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4. Label&lt;/td&gt;
&lt;td&gt;Assign a label from the predefined label set.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5. Export&lt;/td&gt;
&lt;td&gt;KITTI format for standard 3D detection pipelines. Datumaro for full attribute preservation.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Ellipse&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fi1ry6tv2r27nurffpl9w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fi1ry6tv2r27nurffpl9w.png" alt="Ellipse annotation in CVAT AMI" width="624" height="416"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A centre point, a semi-major axis, and a semi-minor axis define an ellipse. CVAT stores ellipses as (cx, cy, rx, ry). It is more precise than a bounding box for circular or oval objects and faster to draw than a polygon tracing the same shape.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;When to use it&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Ellipses apply to objects with roughly circular or oval geometry where a bounding box over-captures background: cell detection in microscopy, wheel detection in vehicle imagery, ball detection in sports analytics, and eye or pupil detection in facial analysis pipelines. Manual ellipse annotation requires minimal compute, making a t3.medium or c5.xlarge sufficient for the workload.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Real pipeline&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A cell counting model for microscopy images uses ellipses to annotate individual cells. Each cell is approximately circular but varies slightly in aspect ratio. Bounding boxes over-capture surrounding cell fluid. Full polygon traces of circular boundaries add unnecessary annotation time. Ellipses match the shape with two clicks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step by step in CVAT&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Step&lt;/th&gt;
&lt;th&gt;Action&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1. Activate&lt;/td&gt;
&lt;td&gt;Select the Ellipse tool from the draw mode dropdown.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2. Draw&lt;/td&gt;
&lt;td&gt;Click-drag from the centre of the target object. CVAT draws the ellipse dynamically.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3. Adjust axes&lt;/td&gt;
&lt;td&gt;Drag the boundary handles to adjust the semi-major and semi-minor axes.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4. Rotate&lt;/td&gt;
&lt;td&gt;Drag the rotation handle to align the ellipse axis with angled objects.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5. Export&lt;/td&gt;
&lt;td&gt;COCO 1.0. The ellipse is converted to a polygon approximation with 12 to 20 vertices on export.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Tags in CVAT&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fr4ky600x3rns7htksezf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fr4ky600x3rns7htksezf.png" alt="Tag annotation in CVAT AMI" width="624" height="416"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Tags are image-level labels that classify an entire image without assigning any geometry. No bounding box, polygon, or mask is drawn. The tag applies to the full image and exports as a classification label.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;When to use tags&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Tags apply to image classification tasks (positive/negative, pass/fail), content moderation labelling, multi-label classification, and as supplementary metadata alongside geometry annotations. A task can carry both geometry annotations on individual objects and a tag on the overall image. Tag-only classification tasks are best handled on a t3.medium instance, as these workloads require minimal compute and involve no geometry rendering.&amp;nbsp;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Real pipeline&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A quality control pipeline labels part images as pass or fail before routing to a downstream classifier. Tags provide a single classification label per image. A second pipeline layer then applies bounding boxes to failed parts for defect localisation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step by step in CVAT&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Step&lt;/th&gt;
&lt;th&gt;Action&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1. Define labels&lt;/td&gt;
&lt;td&gt;In Label Constructor, define classification labels such as defect_present or no_defect.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2. Activate&lt;/td&gt;
&lt;td&gt;Press T in the annotation canvas to activate tag mode.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3. Assign&lt;/td&gt;
&lt;td&gt;Select the appropriate label from the dropdown. The tag appears in the Objects panel.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4. Note&lt;/td&gt;
&lt;td&gt;Tags are not visible as shapes on the canvas. They appear only in the Objects panel and export file.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5. Export&lt;/td&gt;
&lt;td&gt;CVAT for images 1.1 XML or Datumaro. COCO export does not carry image-level tags.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Video annotation types&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Flci659sbrdqfh2l5nvlt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Flci659sbrdqfh2l5nvlt.png" alt="Video annotation in CVAT AMI" width="624" height="416"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Video annotation in CVAT introduces a time axis. Two mechanisms make dense video labelling practical at scale.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Tracking&lt;/strong&gt; assigns a persistent ID to an object across its entire visible duration. An object entering at frame 1 and exiting at frame 300 carries the same track ID throughout. This is required for multi-object tracking models such as ByteTrack and DeepSORT, and for action recognition networks that need temporal object identity.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Interpolation&lt;/strong&gt; reduces annotation cost on tracks with predictable motion. An annotator sets keyframes at positions where the object changes meaningfully. CVAT linearly interpolates geometry between keyframes, auto-generating all intermediate frames.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Recommended EC2 instance&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Workload&lt;/th&gt;
&lt;th&gt;Instance&lt;/th&gt;
&lt;th&gt;Notes&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Standard video annotation, up to 30fps&lt;/td&gt;
&lt;td&gt;c5.xlarge&lt;/td&gt;
&lt;td&gt;CPU-bound interpolation, adequate for 1080p&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;High-frame-rate video, 60fps or 4K&lt;/td&gt;
&lt;td&gt;c5.2xlarge&lt;/td&gt;
&lt;td&gt;Higher vCPU and RAM prevent canvas lag&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AI-assisted tracking (SiamMask)&lt;/td&gt;
&lt;td&gt;g4dn.xlarge&lt;/td&gt;
&lt;td&gt;Nuclio-based tracking requires a GPU&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Large video export, 1,000+ annotated clips&lt;/td&gt;
&lt;td&gt;c5.2xlarge with gp3 EBS at 3000 IOPS&lt;/td&gt;
&lt;td&gt;Export I/O intensive for MOT CSV generation&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Real pipeline&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Quality control using 10-second clips at 30 fps uses keyframe interpolation. Setting keyframes at frame 1, frame 150 (rotation change), and frame 300 produces 300 annotated frames from 3 manual actions. CVAT fills the 297 intermediate frames.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step by step in CVAT&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Step&lt;/th&gt;
&lt;th&gt;Action&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1. Create a task&lt;/td&gt;
&lt;td&gt;Add a video or link to a hosted video. CVAT extracts frames at the specified frame rate during task creation.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2. First keyframe&lt;/td&gt;
&lt;td&gt;Navigate to the first frame where an object appears. Draw the annotation shape. The Objects panel registers this as the first keyframe of a track.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3. Next keyframe&lt;/td&gt;
&lt;td&gt;Jump forward on the frame slider to a position where the object has moved. Adjust the shape. CVAT marks this as the next keyframe automatically.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4. Interpolation&lt;/td&gt;
&lt;td&gt;Frames between the two keyframes fill via linear interpolation. No manual action required.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5. Review&lt;/td&gt;
&lt;td&gt;Press F to advance to the next keyframe. Press V to step frame by frame to inspect interpolated positions.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6. Correct&lt;/td&gt;
&lt;td&gt;Move to a frame where interpolation diverges. Adjust the shape. CVAT registers a correction keyframe.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7. Outside&lt;/td&gt;
&lt;td&gt;Right-click the track and set Outside status between keyframes to suppress interpolated frames where the object is not visible.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8. Export&lt;/td&gt;
&lt;td&gt;MOT 1.1 for tracking model training. CVAT for video XML for QA re-import.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;How do you choose between annotation types?&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Three questions resolve most cases:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Does the model need instance identity (can it distinguish two objects of the same class)?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Does the model need precise object boundaries beyond a rectangle?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Is the data temporal (video with object motion)?&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If all three answers are no, a bounding box is sufficient and produces the highest annotation throughput. Each yes answer escalates the geometry requirement toward a polygon, instance mask, or video track.&lt;/p&gt;

&lt;p&gt;For 3D tasks with depth information, cuboids replace bounding boxes. For circular objects where polygon tracing is inefficient, ellipses are faster. For pure classification without spatial localisation, tags are correct.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Export formats per annotation type&lt;/strong&gt;
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Annotation type&lt;/th&gt;
&lt;th&gt;Export format&lt;/th&gt;
&lt;th&gt;Format detail&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Bounding box&lt;/td&gt;
&lt;td&gt;YOLO 1.1&lt;/td&gt;
&lt;td&gt;One .txt per image with class cx cy w h normalised values&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Bounding box&lt;/td&gt;
&lt;td&gt;COCO 1.0&lt;/td&gt;
&lt;td&gt;JSON with bbox: [x, y, w, h] per annotation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Polygon&lt;/td&gt;
&lt;td&gt;COCO 1.0&lt;/td&gt;
&lt;td&gt;JSON with segmentation: [[x1,y1,...]] vertex arrays&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Polygon&lt;/td&gt;
&lt;td&gt;LabelMe&lt;/td&gt;
&lt;td&gt;Per-image JSON with vertex arrays per instance&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Semantic mask&lt;/td&gt;
&lt;td&gt;Cityscapes 1.0&lt;/td&gt;
&lt;td&gt;PNG mask where each pixel stores an integer class index&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Instance mask&lt;/td&gt;
&lt;td&gt;COCO 1.0 with RLE&lt;/td&gt;
&lt;td&gt;JSON with segmentation: {counts, size} run-length encoded&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Polyline&lt;/td&gt;
&lt;td&gt;LabelMe&lt;/td&gt;
&lt;td&gt;Per-image JSON preserving attribute values&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Keypoints&lt;/td&gt;
&lt;td&gt;COCO 1.0 Keypoints&lt;/td&gt;
&lt;td&gt;keypoints: [x,y,v,...] array per instance with skeleton graph&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Video track&lt;/td&gt;
&lt;td&gt;MOT 1.1&lt;/td&gt;
&lt;td&gt;CSV with frame, id, x, y, w, h, conf, -1, -1, -1 columns&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Video track&lt;/td&gt;
&lt;td&gt;CVAT for video XML&lt;/td&gt;
&lt;td&gt;Full keyframe and interpolation data&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cuboid&lt;/td&gt;
&lt;td&gt;KITTI&lt;/td&gt;
&lt;td&gt;Per-frame .txt with 3D box parameters&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ellipse&lt;/td&gt;
&lt;td&gt;COCO 1.0&lt;/td&gt;
&lt;td&gt;Converted to polygon approximation on export&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tag&lt;/td&gt;
&lt;td&gt;CVAT XML / Datumaro&lt;/td&gt;
&lt;td&gt;Image-level classification label&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Custom attributes&lt;/td&gt;
&lt;td&gt;Datumaro&lt;/td&gt;
&lt;td&gt;JSON with full attribute preservation per annotation&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;COCO 1.0 covers bounding boxes, polygons, RLE masks, and keypoints within one JSON schema. When a pipeline ingests multiple annotation types, a single COCO export avoids format divergence at the data loading layer. Any task that uses custom attribute fields requires Datumaro, the only format that preserves those fields in full.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://aws.amazon.com/marketplace/pp/prodview-ix6qaquyaj5w2" rel="noopener noreferrer"&gt;CVAT on AWS AMI&lt;/a&gt; covers the full annotation geometry spectrum from single-pixel point coordinates to 3D spatial cuboids. Each type produces a specific data format that maps to a defined model input contract. The selection process starts with what the training framework expects, works back to the annotation geometry that produces it, and then matches the EC2 instance type to the computational profile of that workload.&lt;/p&gt;

</description>
      <category>aws</category>
      <category>machinelearning</category>
      <category>ai</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Common spots for AWS EKS Fargate vs GCP Cloud Run vs Azure Container Instances in production.</title>
      <dc:creator>Yobitel</dc:creator>
      <pubDate>Sat, 24 Dec 2022 08:05:24 +0000</pubDate>
      <link>https://dev.to/yobitel/common-spots-for-aws-eks-fargate-vs-gcp-cloud-run-vs-azure-container-instances-in-production-4078</link>
      <guid>https://dev.to/yobitel/common-spots-for-aws-eks-fargate-vs-gcp-cloud-run-vs-azure-container-instances-in-production-4078</guid>
      <description>&lt;p&gt;Here are some common use cases for AWS EKS Fargate, GCP Cloud Run, and Azure Container Instances in production:&lt;/p&gt;

&lt;p&gt;**Microservices: **All three platforms are well-suited for running microservices in production, as they allow you to easily deploy and scale individual services without worrying about managing underlying infrastructure.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Serverless architectures:&lt;/strong&gt; AWS EKS Fargate, GCP Cloud Run, and Azure Container Instances all offer a fully managed, serverless platform for running containerized applications, making them a good fit for serverless architectures.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Continuous integration/delivery:&lt;/strong&gt; They all offer integration with popular CI/CD tools, making it easy to automate the build, test, and deployment of your containerized applications.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Event-driven computing:&lt;/strong&gt;All support event-driven computing, allowing you to run your containers in response to specific events or triggers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Batch processing:&lt;/strong&gt; All three platforms are well-suited for running batch processing jobs in production, as they allow you to easily scale up and down based on workload demand.&lt;/p&gt;

&lt;p&gt;But we can differentiate three of them for their own proprietary innovations,&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6xrfn0kmjyu2ezoldn7a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6xrfn0kmjyu2ezoldn7a.png" alt=" " width="662" height="768"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Overall, &lt;strong&gt;AWS EKS Fargate, GCP Cloud Run, and Azure Container Instances&lt;/strong&gt; are all viable options for running containerized applications in production, and the best choice will depend on your specific needs and preferences.&lt;/p&gt;

</description>
      <category>aws</category>
      <category>gcp</category>
      <category>azurefunctions</category>
      <category>mlops</category>
    </item>
  </channel>
</rss>
