# 平台简介

# ByteBridge是什么

ByteBridge提供数据标注全包服务。您可以在dashboard中创建项目,上传数据,配置标注流程,我们负责人工标注。

实时管理所有项目;

提供透明的标准化报价,显著降低项目成本;

您可决定何时开始,何时终止项目,验收并自行下载标注好的数据。

# Bytebridge支持的数据服务

# 数据标注

图片:分类,2D框选,旋转框,多边形,旋转框, 关键点,折线,立方体(3D框选),OCR, 语义分割

语音:分类,情绪判断,文字转语音

视频:分类,事件,目标检测,目标追踪

文本:目标检测,翻译

# 数据采集

除了提供标准的数据标注服务,ByteBridge同时也提供数据采集服务,如果您有相关需求,请跟我们工作人员联系

# ByteBridge的产品优势

# 高精准度

复杂任务自动化拆解为微小工作单位,减小人工标注错误率,确保数据质量和准确度。所有数据经过机器学习算法和人工质检

# 高效获取数据

利用共识机制实时验证数据准确度,在标注过程中完成质检工作,确保短时间内获取大量精准数据

共识机制:把同一个任务分配给几个工作者,正确答案为大多数人得出的统一结果

# 灵活性

客户可在dashboard上直接制定标注规则

根据各个阶段AI模型训练测试验证的结果,客户可自行对标注数据属性,类型及数量进行调整

项目进度预览模块:用户可实时查看项目进度情况

项目预览模块:客户可实时查看已完成标注的结果

客户可通过API随时获取产出结果

# 价格透明

减少中间商环节,利用人工智能自动化技术优化工作流程,我们提供最具性价比的服务

除此之外,我们提供透明报价

# API

易于集成的API支持不间断的数据上传和交付服务

# 新手指南

# 如何开始?

目录

  1. 创建账号
  2. 创建项目
  3. 配置任务流
  4. 上传数据
  5. 检查您的项目并提交
  6. 试标结果确认
  7. 补传数据
  8. 付费并启动项目

# 创建账号

在使用ByteBridge服务前,您首先需要使用邮箱注册一个账号。注册一个账号 (opens new window)

drawing

# 创建项目

登录dashboard (opens new window)后,点击【Create Project】,

drawing

选择您的项目类型,采集项目很快上线。

drawing

# 上传数据

我们目前提供页面上传和API上传2种上传数据的方式。 页面上传: 您可以通过拖动和点击,上传您要标注的数据,文件格式需要符合页面上标注的要求。

另外您也可以通过 API上传数据

drawing

# 配置任务流

选择项目模版,也可以从空白【Start over】开始;

drawing

点击左下角的【Start building】,此时,您的项目就创建成功了,可以前往下一步,根据您实际的需求配置任务流了。

什么是任务流?

任务流是多个任务按某些逻辑关联起来的总称,用来描述某个项目下,每条数据被标注的完整流程;

一个任务流可以包含1-99个分支,每个分支需要一个完节点,当每条数据都按照任务流进行到完结点,项目完成;

您可以通过点击左侧任务类型,来添加新的任务。

drawing

您也可以通过拖拽来添加任务

drawing

选择添加的任务,可以编辑任务的具体信息

drawing

如果添加了错误的任务,可以删除;

drawing

当然了,您也可以通过拖拽和Ctrl+C/X/V,复制,剪切和移动已经编辑的任务。任务流配置完成后,需要在每个分支都配置一个完节点,每条数据都会按照您配置到流程标注,直到配置的完节点。

配置完节点后,点击保存【Save】,您的任务流就配置完成了。

drawing

# 检查您的项目并提交

在您上传数据, 配置完任务流,选择标注精度后,您可以点击页面内的【Submit】按钮,正式提交项目;项目提交后,我们的工作人员将核对您提交的信息,核对后您的项目将自动开始试标。

drawing

# 试标结果确认

试标结束后,系统会自动发送邮件告知。确认试标结果准确无误,您可以点击页面内的「试标结果通过」,进行下一步;您也可以对当前标注结果进行相关批注,点击页面内的「提交全部问题」来告诉我们标注异议;您还可以直接点击页面内的「试标结果有问题」,进入编辑项目配置页面,重新配置任务流程或标注需求,点击页面内的「重新标注」来申请重新标注。(您对最终试标结果满意后,我们才会在正式项目启动之前向您收费)

# 补传数据

确认试标结果没有问题后,您可以补充需要标注的数据。

# 付费并启动项目

我们会以当前项目的试标数据的单图均价为基础,对整个项目进行费用预估(此费用不是精准报价),点击页面内「Confirm」后,我们会根据项目预估费用进行一次预扣费,扣费成功后,项目自动开始。

# 实时监控进度和管理项目

您的项目开始后,您可以在项目详情页实时查看项目的进度;项目的进度包括数据标注的进展情况,成本消耗和标注好的数据。您也可以在项目详情页随时暂停/启动项目。

image-20210204172042435

# 标注数据验收

您可以在数据验收页面,对某个标注结果或某一张图片进行实时验收。请您收到邮件通知后及时验收数据。若21天内不提出修改意见,视作数据已被验收。

# 邮件通知

当您的项目审核、扣款和完成时,您将收到对应的通知邮件。

# 私有云上传

# AWS S3上传数据集

  1. 登录AWS,进入控制台 aws1

  2. 创建账号 aws21 aws22 aws23

  3. 设置权限 aws3 注:建议请选择 AmazonS3FullAccess 或者 AmazonS3ReadOnlyAccess, 或者其他可读取存储桶的权限。

  4. 获取访问密钥ID 和私有访问密钥

aws4

  1. 上传数据时,选择AWS S3 aws5

  2. 填写存有待添加数据的存储分区名称(Bucket name) aws6

注:Private Cloud Address只需输入bucket name即可,不要带有任何前缀以及文件存储地址,当前仅支持获取bucket下全部文件。

  1. 填写访问密钥ID和私有访问密钥 aws7

  2. 选择存储桶所在区域代码 aws81

注:参照亚马逊全球区域列表,获取存储桶所在区域代码 aws82

  1. 提交添加数据

# 谷歌云上传数据集

  1. 登录谷歌云,进入控制台 gg1

  2. 创建服务账号 gg21 gg22

  3. 设置权限 gg3 注:请选择Storage Admin或Storage Object Viewer,或者其他可读取下载存储分区的权限。

  4. 生成keyFile文件 gg41 gg42 gg43 注:选择json,提交创建将自动下载json文件,请妥善保存。

  5. 上传数据时,选择谷歌云 gg5

  6. 填写存有待添加数据的存储分区名称(Bucket name) gg6

注:Storage partiton只需输入bucket name即可,不要带有任何前缀以及文件存储地址,当前仅支持获取bucket下全部文件。

  1. 填写key file信息 gg7

注:直接复制json文件全部内容,粘贴至此。

  1. 提交添加数据

# 数据导出

您在任何时候都可以导出已完成的数据,导出格式包括兼容labelme、voc、coco的json和xml;

image-20210204172101058

除了手动导出,您也可以通过API实时导出结果 (opens new window)

# 价格和付款说明

# 整体价格说明

ByteBridge提供透明、标准化的数据服务单价,我们根据输出数据需要完成的任务数收费,收费标准见官网单价表 (opens new window)。扣款的金额= ∑(输出数据需要完成的任务x任务单价);比如一条输出需要经过2个Image Classification任务+1个Bounding Box任务,则获得此条输出,您需要支付Image Classification单价x2+ Bounding Box单价x1的费用。

# 扣款方式

您在启动正式项目时,会根据预估项目费用进行一次预扣款,扣费金额会充值在账户余额内;随着项目进行,如果当前账户余额不能满足支付项目实际费用时,我们将会对您当前账户下所有在进行的项目进行综合评估后,从您的信用卡统一扣款到账户余额内,每次扣款的最小单位为$50。

# 退款政策

# 从账户余额退款

从您信用卡扣款但还未消耗的金额,会保留在您的账户余额中,您可以随时在此申请退款,退款将于3个工作日内,按原支付路径退回。

注1:您申请退款时,正在进行中的项目会自动暂停并扣除已完成数据的费用;

注2:我们赠送的金额是不能退款的。

# 已消耗的金额退款

已消耗的金额,无法直接申请退款; 如果您对数据的质量有异议,请联系我们,我们将在3个工作日内审核,如果审核发现数据无效,我们将在3个工作日内将对应金额退回您的账户余额,后续退款流程同从账户余额退款

# invoice说明

正常来说,ByteBridge将根据单个项目自动生成单独的发票;如果您有特殊的invoice需求,请跟我们工作人员联系

# 数据质检

# ByteBridge为您的数据质检

为确保数据的质量,您获得的每一份数据,都经过ByteBridge机器算法+人工的质检,整体数据有效性超过99%。

# 在过程中自行验收

同时,我们提供实时的可视化结果验收平台,您可以在项目进行中,随时查看任意一条数据的输出结果。 虽然我们提供了多种数据质检方式,但由于数据的多样性,我们仍然无法保证数据100%的有效,如果您对输出结果有异议,请及时跟我们工作人员联系,我们将第一时间为您处理。

# ByteBridge API

# API签名

# 获取API密钥并请求用户ID

ByteBridge使用用户Id和一个由API密钥签名的字符串来允许API的访问。您用于发送API请求的用户Id和API密匙是基于uuid生成的唯一字符串,您可以在dashboard (opens new window)上找到您的API密钥和用户Id,通过登录 (opens new window)注册 (opens new window)即可访问。

secret_key = "test_78pbttim3mykypuoswidgzor6fv1u2rj"
user_id = "U_10BF4B46DD4811EA93476C96CFDDE73D"

# API密钥签名请求

每次API请求需要提交自己的用户ID并使用API Secret key和请求体,时间戳等。为了使用MD5加密,并将加密的字符串放置在请求体中,我们将通过用户ID和签名字符串来验证请求是否有效。

以下是python处理的签名生成示例,可做参考:

import hashlib
import requests
import time
secret_key = "test_78pbttim3mykypuoswidgzor6fv1u2rj"
user_id = "U_10BF4B46DD4811EA93476C96CFDDE73D"

# sign string
def get_sig_str(headers, body):
    sign_str = '''userID=%s&Body=%s&SignType=md5&Timestamp=%s&secretKey=%s''' % (user_id, body, headers['Timestamp'],secret_key)
    return hashlib.md5(sign_str.encode()).hexdigest().upper()
  
def test_request():
    headers = {"Content-Type": "application/json", "Timestamp": str(int(time.time() * 1000)), "SignType": "md5",
               "RequestSign": ""}
    body = {
        "userId": "U_10BF4B46DD4811EA93476C96CFDDE73D",
        "params": {}
    }
    body = json.dumps(body)
    headers["RequestSign"] = get_sig_str(headers, body)
    res = requests.post(url, data=body, headers=headers)
    try:
        print(json.dumps(json.loads(res), indent=4))
    except:
        print(res.text)
test_request()

# 回调

# 错误

# API错误代码

Error Code Error Message Remarks
0 success request success
1 unknown error error for network or that error unknow
2 Parameter missing or invalid Missing or incorrect parameter for request
3 Json parsing failed Parse request header or body abnormal
4 Api request url is invalid Wrong request url used
5 Permission error, interface does not provide external access Cannot request api Interface, Usually request by invalid api url
6 API request user does not exist wrong request user you used
7 Project creation failed, please check the parameter configuration Project creation failed due to abnormal parameters
8 The project does not exist The created project cannot be queried, and the query parameters are incorrect
9 Project update failed,Please check for the project configurarion Cannot update the project due to wrong request parameters
10 Failed to submit the resource link, please check whether the resource link is too long The resource address is invalid or the resource link exceeds the length limit
10 The project has not uploaded files and cannot be opened, please upload files first Before starting the project, you need to upload resources
11 The project has not uploaded files and cannot be opened, please upload files first The project needs to upload resources first
12 Please bind credit card information in dashboard first The project is opened, you need to bind the credit card, and then open the credit card
13 The project is under review The project has been opened and submitted for review, no need to open it again
14 The project is already in progress, no need to start The project has been started and submitted for review, no need to repeatedly call to start
15 The project has been completed and can no longer be started The project has ended, you cannot open the same project
16 There is unsettled credit in this account There are outstanding items, no new items can be opened
17 There is credit under settlement, please try again later You have an item in payment, please open the current item later
18 Checking for the project status, hold on for a second You need to check whether you have any arrears information before the project starts, please start later
19 The project failed to start, please check the project configuration The configuration of the project to be opened is abnormal
20 The project has been paused The project may be suspended by the system for other reasons, or you have manually suspended
21 Project pause failed, please check the parameter configuration and try again later Pause failed, check whether the Api call is correct
22 The project can not be deleted now The item cannot be deleted in its current state (may be already in progress)
23 Failed to delete in the current state of the project The item failed to be deleted in the current state
24 Invalid resource information,Please check resource The resources uploaded by the project are invalid and cannot be distributed as tasks
25 The current project status does not allow to upload resources After the project passes the review, no more resources can be uploaded
26 Project information query failed, please check whether the retrieved parameters match Project information query failed, check the retrieval information and try again
27 api key signature verification failed The signature of the api request (signed with secret key) is invalid
28 Projects that have been opened for delivery review cannot be modified When the project opening operation personnel review, the project cannot be modified, please modify before the project is opened

# 项目

# 项目创建

发布url

url = 'http://api.bytebridge.io:20000/api/v1/projects'

主体参数

用户ID:

"您的dashboard用户ID"

项目名称:

要确保所创建的项目的名称不能重复,因为您需要使用它来检索您的项目。

类型:

请确保您通过API请求创建的任务类型属于以下几种,否则会报告错误,任务创建将失败。

Type name Remarks
image_classification Categorize pictures according to their content
text_classification Categorize text information according to the content of the text
image_rectangle_frame_select Use a quadrilateral to frame the objects specified in the figure
image_stroke Stroke the objects indicated in the picture

指示:

为创建的项目发表评论。

问题:

当创建的是一个分类任务,您需要以问题的形式提供类别属性,比如图片中的动物是猫还是狗。

标注的目标:

当创建的是一个框选任务,您需要说明所框选的目标。

任务类型:

Project type Task Type Remarks
image_classification , text_classification single_choice When the project category is classified, the parameter must be selected (single_choice, multiple_choice)When the item category is frame selection, the parameter must be selected ("rectangle_frame_select","free_point","stroke","cube_circle")
image_classification , text_classification multiple_choice --------
image_rectangle_frame_select , image_stroke rectangle_frame_select ---------
image_rectangle_frame_select , image_stroke free_point ---------
image_rectangle_frame_select , image_stroke stroke ---------
image_rectangle_frame_select , image_stroke cube_circle ---------

选项:

选项(项目类型为分类任务时,参数为必填项)

样本

请求

import requests
import json
import hashlib
import time
url = 'http://api.bytebridge.io:20000/api/v1/projects/'
secret_key = "test_78pbttim3mykypuoswidgzor6fv1u2rj"
user_id = "U_10BF4B46DD4811EA93476C96CFDDE73D"

def get_sig_str(headers, body):
    sign_str = '''userID=%s&Body=%s&SignType=md5&Timestamp=%s&secretKey=%s''' % (user_id, body, headers['Timestamp'],secret_key)
    return hashlib.md5(sign_str.encode()).hexdigest().upper()

def create_project():
    headers = {"Content-Type": "application/json", "Timestamp": str(int(time.time() * 1000)), "SignType": 'md5',
               "RequestSign": ''}
    body = {
        "userId": user_id,
        "params": {
            "projectName": "api test project",  
            "type": "image_classification", 
            'instruction': 'demo for test', 
            'question': 'Is the creature in the picture a cat or a dog', 
            "taskType": "single_choice",
            'options': [{'value': 'cat'}, {'value': 'dog'}, {'value': 'unknown'}]
        }
    }
    body = json.dumps(body)
    headers["RequestSign"] = get_sig_str(headers, body)
    res = requests.post(url, data=body, headers=headers)
    try:
        print(json.dumps(json.loads(res), indent=4))
    except:
        print(res.text)
create_project()

响应

{
	"code": 0,
	"successMsg": "success",
	"timestamp": 1597388950604,
	"userId": "U_10BF4B46DD4811EA93476C96CFDDE73D",
	"data": {
		"projectId": "p272_TJMngfdY",
		"type": "image_classification",
		"name": "demo for api test project",
		"taskType": "single_choice",
		"instruction": "demo for test",
		"qiestion": "Is the creature in the picture a cat or a dog",
		"extra": {
			"options": [{
				"value": "cat"
			}, {
				"value": "dog"
			}, {
				"value": "unknown"
			}]
		},
		"created": 1597388950
	}
}

# 项目更新

发布url

url = 'http://api.bytebridge.io:20000/api/v1/projects/setProject'

主体参数

用户ID:

"您的dashboard用户ID"

项目Id:

成功创建项目后,您可以获取该项目的唯一的Id,并可以使用这个Id进行项目操作。

项目名称,类型,指示,问题,标注的目标,任务类型,选项:

创建项目后,如果项目未开启,您可重新设置项目信息。项目一旦被开启,则无法对项目配置进行更改。

样本

请求

import requests
import json
import hashlib
import time

url = "http://api.bytebridge.io:20000/api/v1/projects/setProject"
secret_key = "test_78pbttim3mykypuoswidgzor6fv1u2rj"
user_id = "U_10BF4B46DD4811EA93476C96CFDDE73D"


def get_sig_str(headers, body):
    sign_str = '''userID=%s&Body=%s&SignType=md5&Timestamp=%s&secretKey=%s''' % (
    user_id, body, headers['Timestamp'], secret_key)
    return hashlib.md5(sign_str.encode()).hexdigest().upper()


def update_project():
    headers = {"Content-Type": "application/json", "Timestamp": str(int(time.time() * 1000)), "SignType": 'md5',"RequestSign": ''}
    body = {
        "userId": "U_10BF4B46DD4811EA93476C96CFDDE73D",
        "params": {
            "projectId": "p272_TJMngfdY",
            "projectName": "first change for demo",
            "type": "image_classification",
            'instruction': 'change it for demo ok?',
            'question': 'dog or pig in picture',
            "taskType": "single_choice",
            'options': [{'value': 'dog'}, {'value': 'pig'}, {'value': 'unknown'}]
        }
    }
    body = json.dumps(body)
    headers["RequestSign"] = get_sig_str(headers, body)
    res = requests.post(url, data=body, headers=headers)

    try:
        print(json.dumps(json.loads(res), indent=4))
    except:
        print(res.text)

update_project()

响应

{
	"code": 0,
	"successMsg": "success",
	"timestamp": 1597393803152,
	"userId": "U_10BF4B46DD4811EA93476C96CFDDE73D",
	"data": {
		"projectId": "p272_TJMngfdY",
		"type": "image_classification",
		"name": "first change for demo",
		"taskType": "single_choice",
		"instruction": "change it for demo ok?",
		"qiestion": "dog or pig in picture",
		"extra": {
			"options": [{
				"value": "dog"
			}, {
				"value": "pig"
			}, {
				"value": "unknown"
			}]
		},
		"created": 1597393803,
		"projectStatus": 0
	}
}

# 项目检索

发布url

url = 'http://api.bytebridge.io:20000/api/v1/projects/retrieveProject'

主体参数

用户Id:

"您的dashboard用户ID"

项目Id:

成功创建项目后,您可以获取该项目的唯一的Id,您可以使用这个Id进行项目操作。

开始时间,结束时间:

您可以查询一定时间内的项目信息和进度。 若未输入任何参数,项目状态默认从开始到当前。

样本

请求

import requests
import json
import hashlib
import time

url = 'http://api.bytebridge.io:20000/api/v1/projects/retrieveProject'
secret_key = "test_78pbttim3mykypuoswidgzor6fv1u2rj"
user_id = "U_10BF4B46DD4811EA93476C96CFDDE73D"

def get_sig_str(headers, body):
    sign_str = '''userID=%s&Body=%s&SignType=md5&Timestamp=%s&secretKey=%s''' % (user_id, body, headers['Timestamp'],secret_key)
    return hashlib.md5(sign_str.encode()).hexdigest().upper()

def retrieve_project():
    headers = {"Content-Type": "application/json", "Timestamp": str(int(time.time() * 1000)), "SignType": 'md5', "RequestSign": ''}
    body = {
        "userId": "U_10BF4B46DD4811EA93476C96CFDDE73D",
        "params": {
            "projectId": "p272_TJMngfdY",
        }
    }
    body = json.dumps(body)

    headers["RequestSign"] = get_sig_str(headers, body)
    res = requests.post(url, data=body, headers=headers)

    try:
        print(json.dumps(json.loads(res), indent=4))
    except:
        print(res.text)
retrieve_project()

响应

{
	"code": 0,
	"successMsg": "success",
	"timestamp": 1597397826240,
	"userId": "U_10BF4B46DD4811EA93476C96CFDDE73D",
	"data": {
		"projectData": {
			"projectName": "first change for demo",
			"projectInstruction": "change it for demo ok?",
			"question": "dog or pig in picture",
			"projectType": "image_classification",
			"taskType": "single_choice",
			"projectItemQuantity": 11,
			"processingQuantity": 0,
			"projectStatus": "checking",
			"completedQuantity": 0,
			"noStartQuantity": 11,
			"successQuantity": 0,
			"failedQuantity": 0,
			"outputQuantity": 0,
			"amountSpent": 0.0,
			"options": [{
				"value": "dog"
			}, {
				"value": "pig"
			}, {
				"value": "unknown"
			}]
		},
		"extraInfo": {
			"downloadableResultNum": 0,
			"downloadResultURL": ""
		}
	}
}

# 资源上传

发布url

url = 'http://api.bytebridge.io:20000/api/v1/projects/submitResource'

主体参数

用户Id:

"您的dashboard用户ID"**

项目Id:

处理资源的项目Id

类型:

您可以通过此界面上传项目资源。可上传的资源类型如下。

Type name Remarks
image Picture type (jpg,jpeg,png,gif)
audio Audio in mp3 format
text type of text
graphic Picture contains text

样本

请求

import requests
import json
import hashlib
import time
url = 'http://api.bytebridge.io:20000/api/v1/projects/submitResource'
secret_key = "test_78pbttim3mykypuoswidgzor6fv1u2rj"
user_id = "U_10BF4B46DD4811EA93476C96CFDDE73D"

def get_sig_str(headers, body):
    sign_str = '''userID=%s&Body=%s&SignType=md5&Timestamp=%s&secretKey=%s''' % (user_id, body, headers['Timestamp'],secret_key)
    return hashlib.md5(sign_str.encode()).hexdigest().upper()

def submit_resource():
    headers = {"Content-Type": "application/json", "Timestamp": str(int(time.time() * 1000)), "SignType": 'md5',"RequestSign": ''}
    body = {
        "userId": "U_10BF4B46DD4811EA93476C96CFDDE73D",
        "params": {
            "projectId": "p273_j85WwxK7",
            "resourceType": "image",
            "resourceURLs": [
                "https://d301.paixin.com/thumbs/1092213/119132616/staff_1024.jpg",
                "https://d301.paixin.com/thumbs/1902695/106230432/staff_1024.jpg",
            ]
        }
    }
    body = json.dumps(body)
    headers["RequestSign"] = get_sig_str(headers, body)
    res = requests.post(url, data=body, headers=headers)
    try:
        print(json.dumps(json.loads(res), indent=4))
    except:
        print(res.text)
submit_resource()

响应

{
	"code": 0,
	"successMsg": "success",
	"timestamp": 1597656918164,
	"userId": "U_10BF4B46DD4811EA93476C96CFDDE73D",
	"data": {
		"projectId": "p273_j85WwxK7",
		"resourceType": "image",
		"resourceDta": ["https://d301.paixin.com/thumbs/1092213/119132616/staff_1024.jpg", "https://d301.paixin.com/thumbs/1902695/106230432/staff_1024.jpg"],
		"created": 1597656918
	}
}

# 项目状态

发布url

url = 'http://api.bytebridge.io:20000/api/v1/projects/submitResource'

主体参数

用户Id:

"您的dashboard用户ID"

样本

项目Id:

更改状态的项目Id。

类型:

您可以通过此界面更改项目状态,可更改的项目类型如下。

Type name Remarks
start Start a project
pause Pause a project by yourself
delete Delete a project by yourself

请求

import requests
import json
import hashlib
import time

url = 'http://api.bytebridge.io:20000/api/v1/projects/alterState'
secret_key = "test_78pbttim3mykypuoswidgzor6fv1u2rj"
user_id = "U_10BF4B46DD4811EA93476C96CFDDE73D"

def get_sig_str(headers, body):
    sign_str = '''userID=%s&Body=%s&SignType=md5&Timestamp=%s&secretKey=%s''' % (
    user_id, body, headers['Timestamp'], secret_key)
    return hashlib.md5(sign_str.encode()).hexdigest().upper()

def Alter_project():
    headers = {"Content-Type": "application/json", "Timestamp": str(int(time.time() * 1000)), "SignType": 'md5',
               "RequestSign": ''}
    body = {
        "userId": "U_10BF4B46DD4811EA93476C96CFDDE73D",
        "params": {
            "type": "start",
            "projectId": "p273_j85WwxK7",
        }
    }
    body = json.dumps(body)
    headers["RequestSign"] = get_sig_str(headers, body)
    res = requests.post(url, data=body, headers=headers)

    try:
        print(json.dumps(json.loads(res), indent=4))
    except:
        print(res.text)
        
Alter_project()

响应

# error
{
	"code": 13,
	"errorMsg": "The project is under review",
	"timestamp": 1597657529770,
	"userId": "U_10BF4B46DD4811EA93476C96CFDDE73D"
}
# success
{
	"code": 0,
	"successMsg": "success",
	"timestamp": 1597657621240,
	"userId": "U_10BF4B46DD4811EA93476C96CFDDE73D",
	"data": {
		"projectId": "p273_j85WwxK7",
		"alterType": "pause",
		"created": 1597657621
	}
}

# 项目结果

# FAQ

# 使用问题

# 谁会标注我的数据?

所有数据100%人工标注。标注结果经过机器和人工审核后最终交付。

# 我需要配备自己的标注团队吗?

不需要的,ByteBridge提供完整的数据服务,包括标注工具和人工。

# 我自己有标注员,可以只使用ByteBridge,用自己的标注员来标注吗?

是的,我们可以提供这种方式,如果您有此类需求,可以跟我们工作人员联系

# 什么是任务流?

任务流是多个任务按某些逻辑关联起来的总称,用来描述某个项目下,每条数据被标注的完整流程;

一个任务流可以包含1-99个分支,每个分支需要一个完节点,当每条数据都按照任务流进行到完结点,项目完成。

具体的配置方式见:配置任务流

# 我如何能了解数据导入,结果导出及标注过程已完成?

任何时间,您都可以在项目的详情页中查看实时进度。

另外,项目有任何状态的变化我们都会发邮件通知您。

# 我为什么不能删除项目?

某些情况下,由于项目正在进行或正在结算,此时您无法直接删除项目,请根据页面提示操作后再进行删除操作,如果遇到其他原因无法删除项目,请跟我们工作人员联系,我们将第一时间为您处理。

# 为什么项目需要被审核?审核需要等多久?

为了保证您的项目完成的质量,我们将在项目开始前,对您的配置和数据做一次人工的审核;

正常来说,审核时间小于1个工作日,如果您的项目超过1个工作日还没有审核结果,请跟我们工作人员联系,我们将第一时间为您处理。

# 项目开始后,为什么项目进程显示仍为零?

您的项目审核通过后,我们将对您的数据进行预处理,并为您找到最合适的标注员,这一般需要几分钟的时间,如果您的项目超过1小时仍然没有进度变化,请跟我们工作人员联系,我们将第一时间为您处理。

# 为什么我的项目审核被拒绝了?

您可以在邮件和项目详情页中,看到被拒绝的具体原因;

常见的拒绝原因包括:任务流逻辑错误、任务流文案错误、上传文件不符合标准、上传文件涉及敏感内容等。

# 我的项目需要进行多久?

项目需要处理的时间和您的数据量及任务流复杂度相关,一般来说,一个中等复杂度的包含10000张图片的图片标注项目,处理时间小于1个工作日。

# 是否提供采集服务?

除了提供标准的数据标注服务,我们也提供数据采集服务,如果您有相关需求,请跟我们工作人员联系

# 我可以复制或复用我配置好的任务流吗?

您可以通过点击[Clone Project]复用您配置好的任务流。

# 如何给已启动的项目添加更多数据?

平台支持给已经启动的项目添加数据,点击[Add Batch]即可添加更多数据。

# 请问你方有专业的项目经理吗,我们如何同你们的标注团队进行沟通呢?

项目经理会从项目初期开始跟进,另外在dashboard上您可以直接和项目经理沟通。如果操作中遇到任何问题,或者有其他特殊项目需求,您也可以跟我们工作人员联系

# 数据安全性

# 数据的安全性如何保障?

标注平台上所有使用的和存储的数据都是默认加密的, 在标注过程中,任务被自动化拆分,每个标注人员仅能查看部分数据;

未经您的许可,我们不会将您的数据泄露出去或用于任何其他目的

如果您删除了(标注好的)数据集,我们将在2个小时内从系统中删除您的所有数据副本;

我们设置了相关安全措施,旨在防止数据丢失、未经授权的访问等。

# 请问您们如何做到数据安全合规或者你们有获取哪些证书吗?

公司已获得数据处理方面ISO27001信息安全体系证书。

项⽬前期:公司与工作者签订授权与保密协议

相应法规:公司遵守欧盟GDPR个人隐私和数据保护条例,根据项⽬要求限制标注员所在地、操作规程及权限

分发过程:数据在分发中进行压缩预处理,确保原始数据不会流出

任务拆解分配过程:把复杂的任务自动化拆分成简单的⼩任务,通过平台分发给匹配用户,⽀持多人共同工作

采标过程:分散数据最终在服务器上通过程序合成完数据,标注流程中数据不会以完整形式泄露

存储过程:通过权限分配的方式把特定的客户数据隔离部署单独服务器(私有云方式), 或客户自己部署数据服务(私有化部署⽅式),任务可直接分发到客户端终端

# 你们会将我的数据进行存储或扩充并提供给第三方吗?

您的数据只会按需提供给标注员进行标注,我们不会将您的数据用于其他任何用途。

# 我上传的文件存储在哪里?为什么我会收到临时文件被清除的邮件?

您上传的文件将被临时存储在我们aws的服务器中。

当您的项目完成7天,或您的项目上传文件后长期未启动,我们将清除临时存储的文件,每次清除之前,都会有文件通知到您。

# 数据质量

# 质检工作包含在标注过程中吗?请问具体流程是什么?

我们交付的每一条数据,都100%经过AI算法和人工核对。

每个任务都由最专业的标注员标注,每类任务都有完整的核对算法检验;我们利用共识机制实时验证数据准确度,在标注过程中完成质检工作,确保数据精确性。

# 我的团队如何能参加验收?

另外我们还提供可视化的数据验收工具,您可以实时进行数据验收,如果您对数据有异议,在获得数据21x24小时内,可以申请对异议数据进行免费重新标注。