Cloud Annotations项目:通过API上传图像和标注文件的完整指南

Cloud Annotations项目:通过API上传图像和标注文件的完整指南

cloud-annotations 🐝 A fast, easy and collaborative open source image annotation tool for teams and individuals. cloud-annotations 项目地址: https://gitcode.com/gh_mirrors/cl/cloud-annotations

项目概述

Cloud Annotations是一个基于云对象存储(COS)构建的标注工具,它允许用户通过简单的API接口上传图像和对应的标注数据。本文将详细介绍如何通过API与Cloud Annotations项目进行交互,包括标注文件的格式规范和各种上传方法。

标注文件结构解析

Cloud Annotations项目使用一个名为_annotations.json的特殊文件来存储所有标注元数据。这个文件必须位于存储桶的根目录下,其结构如下:

对象检测项目示例

{
  "version": "1.0",
  "type": "localization",
  "labels": ["猫", "狗"],
  "annotations": {
    "image1.jpg": [
      {
        "x": 0.7255949630314233,
        "x2": 0.9695875693160814,
        "y": 0.5820120073891626,
        "y2": 1,
        "label": "猫"
      },
      {
        "x": 0.8845598428835489,
        "x2": 1,
        "y": 0.1829972290640394,
        "y2": 0.966248460591133,
        "label": "狗"
      }
    ]
  }
}

关键字段说明

  1. version: 标注文件版本号,当前为"1.0"
  2. type: 标注类型,"localization"表示对象检测
  3. labels: 所有可能的类别标签数组
  4. annotations: 包含所有图像标注数据的对象

分类项目注意事项

对于图像分类项目,标注文件结构与上述类似,但不需要包含边界框坐标(x, x2, y, y2)信息。

通过cURL上传文件

第一步:获取访问令牌

使用IAM凭证获取access_token:

curl -X POST "https://iam.cloud.ibm.com/identity/token" \
  -d "response_type=cloud_iam" \
  -d "grant_type=urn:ibm:params:oauth:grant-type:apikey" \
  -d "apikey=你的API密钥"

第二步:上传文件到存储桶

curl -X PUT "https://s3.us.cloud-object-storage.appdomain.cloud/你的存储桶名称/目标文件名" \
  -H "Authorization: bearer 你的访问令牌" \
  -T "本地文件路径"

使用各种SDK上传文件

除了cURL,Cloud Annotations项目支持多种编程语言的SDK进行文件上传:

Python SDK示例

import ibm_boto3
from ibm_botocore.client import Config

cos = ibm_boto3.client(
    's3',
    ibm_api_key_id='你的API密钥',
    ibm_service_instance_id='服务实例ID',
    ibm_auth_endpoint='https://iam.cloud.ibm.com/identity/token',
    config=Config(signature_version='oauth'),
    endpoint_url='https://s3.us.cloud-object-storage.appdomain.cloud'
)

with open('本地文件路径', 'rb') as file_data:
    cos.upload_fileobj(
        Fileobj=file_data,
        Bucket='存储桶名称',
        Key='目标文件名'
    )

Node.js SDK示例

const AWS = require('ibm-cos-sdk');
const fs = require('fs');

const cos = new AWS.S3({
    endpoint: 'https://s3.us.cloud-object-storage.appdomain.cloud',
    apiKeyId: '你的API密钥',
    ibmAuthEndpoint: 'https://iam.cloud.ibm.com/identity/token',
    serviceInstanceId: '服务实例ID',
});

const fileStream = fs.createReadStream('本地文件路径');
const uploadParams = {
    Bucket: '存储桶名称', 
    Key: '目标文件名',
    Body: fileStream
};

cos.upload(uploadParams).promise()
    .then(data => console.log('上传成功:', data.Location))
    .catch(err => console.error('上传失败:', err));

最佳实践建议

  1. 批量上传优化:对于大量文件,建议使用SDK提供的批量上传功能,而非单个文件逐一上传
  2. 错误处理:实现完善的错误处理机制,特别是网络中断后的重试逻辑
  3. 进度监控:对于大文件上传,实现上传进度显示功能
  4. 元数据管理:在上传文件时,可以同时设置自定义元数据,便于后续检索
  5. 版本控制:考虑启用存储桶的版本控制功能,防止意外覆盖重要文件

常见问题解答

Q: 上传后为什么在界面看不到我的文件? A: 请检查以下几点:

  • 文件是否确实上传成功
  • 存储桶名称是否正确
  • 标注文件_annotations.json是否已正确更新
  • 是否有足够的权限访问该存储桶

Q: 标注坐标系统是如何定义的? A: Cloud Annotations使用相对坐标系统:

  • (0,0)表示图像左上角
  • (1,1)表示图像右下角
  • 所有坐标值应在0到1之间

Q: 可以上传哪些图像格式? A: 支持常见的图像格式如JPG、PNG、GIF等,建议使用JPG格式以获得较好的压缩率。

通过本文介绍的方法,您可以轻松地将图像和标注数据上传到Cloud Annotations项目中,为后续的机器学习模型训练做好准备。

cloud-annotations 🐝 A fast, easy and collaborative open source image annotation tool for teams and individuals. cloud-annotations 项目地址: https://gitcode.com/gh_mirrors/cl/cloud-annotations

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

洪淼征

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值