【数据集管理API】-JavaAPI示例代码来了
756665228 发布于2018-12-06 10:47 浏览:3187 回复:5
3
收藏
最后编辑于2019-02-25

各位开发者们心心念念的API更新了。那么小帅丶 就来给实际操作一波

API形式管理数据集,提高训练数据管理效率,优化体验

针对需要上传大规模训练数据量的用户,拖拉拽式操作需要往往需要保持网页长时间运行状态,

API形式的管理数据集功能的上线,对训练数据集较大的用户来讲,大幅提高了管理数据(特别是上传数据)的便捷性和灵活性

能干嘛?

可以自主研发一套平台系统。这样客户|用户无需额外登录百度账户平台就可以进行数据集上传了。无需额外的打包压缩文件了。

怎么样?

目前API,提供还不是很完善。就目前提供的API使用来看。方便快捷简单。像大家之前遇到的浏览器问题啥的。API不会存在哦。

小帅丶亲测。创建数据集比浏览器还要快。

提建议

希望不仅仅是数据集API管理操作。开始训练、训练进度都能给出更好。方便用户自研相关应用并使用百度ED

 

接下来。就来代码吧。小帅丶文采一般般

  • 需要额外用到的jar&工具类 如果不用百度提供的HttpUtil 请确保自己写的方法 对参数有进行编码处理哦

	com.alibaba
	fastjson
	1.2.35
	
----------------------------------------------------------
HttpUtil
https://ai.baidu.com/file/544D677F5D4E4F17B4122FBD60DB82B3
Base64Util
https://ai.baidu.com/file/C8D81F3301E24D2892968F09AE1AD6E2
FileUtil
https://ai.baidu.com/file/658A35ABAB2D404FBF903F64D47C1F72
  • 示例代码:
import java.util.ArrayList;
import java.util.List;

import com.alibaba.fastjson.JSON;
import com.xs.easydl.DatasetAddRequestParam.Labels;
import com.xs.util.baidu.HttpUtil;

/**
 * 数据集管理API
 * @author 小帅丶
 *
 */
public class EasyDLManagerAPISample {
//	数据集创建API 
	static final String DATASET_CREATE_API ="https://aip.baidubce.com/rpc/2.0/easydl/dataset/create";
//	数据集列表API 
	static final String DATASET_LIST_API ="https://aip.baidubce.com/rpc/2.0/easydl/dataset/list";
//	添加数据API
	static final String DATASET_ADD_API ="https://aip.baidubce.com/rpc/2.0/easydl/dataset/addentity";
//	数据集删除API
	static final String DATASET_DELETE_API ="https://aip.baidubce.com/rpc/2.0/easydl/dataset/delete";
//	分类(标签)列表API 
	static final String LABEL_LIST_API ="https://aip.baidubce.com/rpc/2.0/easydl/label/list";
//	分类(标签)删除API 
	static final String LABEL_DELETE_API ="https://aip.baidubce.com/rpc/2.0/easydl/label/delete";
	//测试使用的AccessToken  具体需要替换成自己的哦
	static final String ACCESS_TOKEN = "";
	/**
	 * 测试main方法
	 * @param args
	 * @throws Exception
	 */
	public static void main(String[] args) throws Exception {
		String OBJECT_DETECTION = "OBJECT_DETECTION";//物体检测
		String IMAGE_CLASSIFICATION = "IMAGE_CLASSIFICATION";//图像分类
		String TEXT_CLASSIFICATION = "TEXT_CLASSIFICATION";//文本分类
		String SOUND_CLASSIFICATION = "SOUND_CLASSIFICATION";//声音分类
		
//		String result = datasetList(ACCESS_TOKEN, TEXT_CLASSIFICATION);//获取数据集列表  
		//{"total_num":2,"results":[{"dataset_id":20598,"dataset_name":"apitest","type":"TEXT_CLASSIFICATION","status":"normal"},{"dataset_id":20567,"dataset_name":"textdemo","type":"TEXT_CLASSIFICATION","status":"normal"}],"log_id":1324820120}
//		String result = datasetCreate(ACCESS_TOKEN, TEXT_CLASSIFICATION,"campus");//数据集创建   
		//{"dataset_id":20598,"log_id":1276713049}
//		String result = labelList(ACCESS_TOKEN, TEXT_CLASSIFICATION,20567);//分类(标签)列表
		//{"total_num":4,"results":[{"label_id":"5c075681ea934f0001324ae3","label_name":"woman","entity_count":949},{"label_id":"5c075672ea934f0001324ae1","label_name":"sport","entity_count":1083},{"label_id":"5c07566815d32b0001a275bc","label_name":"publish","entity_count":760},{"label_id":"5c075663ea934f0001324adc","label_name":"campus","entity_count":247}],"log_id":3295199978}
/***************************文本分类示例参数拼接******************************/		
		/**
			{
		    "appendLabel": true, 
		    "dataset_id": 20598, 
		    "entity_content": "今天老师不在", 
		    "entity_name": "20181205.txt", 
		    "labels": [
		        {
		            "label_name": "campus"
		        }
		    ], 
		    "type": "TEXT_CLASSIFICATION"
			}
		 */
//		DatasetAddRequestParam addRequestParam = new DatasetAddRequestParam();
//		addRequestParam.setType(TEXT_CLASSIFICATION);
//		addRequestParam.setDataset_id(20598);
//		addRequestParam.setAppendLabel(true);
//		addRequestParam.setEntity_content("今天老师不在");
//		addRequestParam.setEntity_name("20181205.txt");
//		List labelsList = new ArrayList();
//		Labels labels = new Labels();
//		labels.setLabel_name("campus");
//		labelsList.add(labels);
//		addRequestParam.setLabels(labelsList);
/***************************物体检测示例参数拼接******************************/	
		/**
		{
		    "appendLabel": true, 
		    "dataset_id": 2803, 
		    "entity_content": "图片的base64 不需要urlencode", 
		    "entity_name": "whitefly127.jpg", 
		    "labels": [
		        {
		            "height": 103, 
		            "label_name": "whitefly", 
		            "left": 221, 
		            "top": 221, 
		            "width": 208
		        }
		    ], 
		    "type": "OBJECT_DETECTION"
		}
		 */
		DatasetAddRequestParam addRequestParam = new DatasetAddRequestParam();
		addRequestParam.setType(OBJECT_DETECTION);
		addRequestParam.setDataset_id(2803);
		addRequestParam.setAppendLabel(true);
		//读取本地图片文件  并转base64 不需要urlencode
		String imgPath = "G:/mnist_png/whitefly/whitefly127.jpg";
		String imgbase64 = Base64Util.encode(FileUtil.readFileByBytes(imgPath));
		addRequestParam.setEntity_content(imgbase64);
		addRequestParam.setEntity_name("whitefly127.jpg");
		List labelsList = new ArrayList();
		Labels labels = new Labels();
		labels.setLabel_name("whitefly");
		labelsList.add(labels);
		labels.setLeft(221);
		labels.setTop(221);
		labels.setWidth(208);
		labels.setHeight(103);
		addRequestParam.setLabels(labelsList);
		//添加数据 测试为文本分类数据添加 
//		String result = datasetAdd(ACCESS_TOKEN,addRequestParam);//添加数据
		
//		String result = datasetDel(ACCESS_TOKEN,TEXT_CLASSIFICATION,20642);//数据集删除
		//{"log_id":2595666927}
//		String result = labelDel(ACCESS_TOKEN,TEXT_CLASSIFICATION,20598,"campus");//分类(标签)删除
		//{"log_id":119766394}
//		System.out.println(result);
	}
	/**
	 * 分类(标签)删除
	 * @param accessToken 应用鉴权的token 
	 * @param type
	 *            数据集类型,可包括: IMAGE_CLASSIFICATION, OBJECT_DETECTION,
	 *            SOUND_CLASSIFICATION, TEXT_CLASSIFICATION
	 *            分别对应:图像分类、物体检测、声音分类、文本分类
	 * @param dataset_id 数据集ID
	 * @param label_name 标签/分类名称
	 * @return String
	 * @throws Exception
	 */
	public static String labelDel(String accessToken,String type,int dataset_id,String label_name) throws Exception{
		//接口地址
		String url = LABEL_DELETE_API;
		String access_token = accessToken;
		// JSON格式参数拼接
		String params = "{\"type\":\"" + type + "\",\"dataset_id\":"+dataset_id+",\"label_name\":\"" + label_name + "\"}";
		String result = HttpUtil.post(url,access_token, params);
		// 输出识别结果
		return result;
	}
	/**
	 * 数据集删除
	 * @param accessToken 应用鉴权的token 
	 * @param type
	 *            数据集类型,可包括: IMAGE_CLASSIFICATION, OBJECT_DETECTION,
	 *            SOUND_CLASSIFICATION, TEXT_CLASSIFICATION
	 *            分别对应:图像分类、物体检测、声音分类、文本分类
	 * @param dataset_id 数据集ID
	 * @return String
	 * @throws Exception
	 */
	public static String datasetDel(String accessToken,String type,int dataset_id) throws Exception{
		//接口地址
		String url = DATASET_DELETE_API;
		String access_token = accessToken;
		// JSON格式参数拼接
		String params = "{\"type\":\"" + type + "\",\"dataset_id\":"+dataset_id+"}";
		String result = HttpUtil.post(url,access_token, params);
		// 输出识别结果
		return result;
	}
	/**
	 * 添加数据
	 * @param accessToken 应用鉴权的token 
	 * @param addRequestParam 参数对象
	 * @return String
	 * @throws Exception
	 */
	public static String datasetAdd(String accessToken,DatasetAddRequestParam addRequestParam) throws Exception{
		//接口地址
		String url = DATASET_ADD_API;
		String access_token = accessToken;
		// JSON格式参数拼接
		String params = JSON.toJSONString(addRequestParam);
		String result = HttpUtil.post(url,access_token, params);
		// 输出识别结果
		return result;
	}
	
	/**
	 * 分类(标签)列表获取 所有参数
	 * @param accessToken 应用鉴权的token 
	 * @param type
	 *            数据集类型,可包括: IMAGE_CLASSIFICATION, OBJECT_DETECTION,
	 *            SOUND_CLASSIFICATION, TEXT_CLASSIFICATION
	 *            分别对应:图像分类、物体检测、声音分类、文本分类
	 * @param dataset_id 数据集ID
	 * @param start 起始序号,默认为0
	 * @param num 数量,默认20,最多100
	 * @return String
	 * @throws Exception
	 */
	public static String labelList(String accessToken,String type,int dataset_id,int start,int num) throws Exception{
		//接口地址
		String url = LABEL_LIST_API;
		String access_token = accessToken;
		// JSON格式参数拼接
		String params = "{\"type\":\"" + type + "\",\"dataset_id\":"+dataset_id+",\"start\":"+start+",\"num\":"+num+"}";
		String result = HttpUtil.post(url, access_token, params);
		// 输出识别结果
		return result;
	}
	/**
	 * 分类(标签)列表获取
	 * @param accessToken 应用鉴权的token 
	 * @param type
	 *            数据集类型,可包括: IMAGE_CLASSIFICATION, OBJECT_DETECTION,
	 *            SOUND_CLASSIFICATION, TEXT_CLASSIFICATION
	 *            分别对应:图像分类、物体检测、声音分类、文本分类
	 * @param dataset_id 数据集ID
	 * @return String
	 * @throws Exception
	 */
	public static String labelList(String accessToken,String type,int dataset_id) throws Exception{
		return labelList(accessToken, type, dataset_id, 0, 20);
	}
	/**
	 * 数据集创建
	 * @param accessToken 应用鉴权的token 
	 * @param type
	 *            数据集类型,可包括: IMAGE_CLASSIFICATION, OBJECT_DETECTION,
	 *            SOUND_CLASSIFICATION, TEXT_CLASSIFICATION
	 *            分别对应:图像分类、物体检测、声音分类、文本分类
	 * @param dataset_name 数据集名称,长度不超过20个utf-8字符
	 * @return String
	 * @throws Exception
	 */
	public static String datasetCreate(String accessToken,String type,String dataset_name) throws Exception{
		//接口地址
		String url = DATASET_CREATE_API;
		String access_token = accessToken;
		// JSON格式参数拼接
		String params = "{\"type\":\"" + type + "\",\"dataset_name\":\""+dataset_name+"\"}";
		String result = HttpUtil.post(url, access_token, params);
		// 输出识别结果
		return result;
	}
	/**
	 * 数据集列表获取 所有参数
	 * @param accessToken 应用鉴权的token 
	 * @param type
	 *            数据集类型,可包括: IMAGE_CLASSIFICATION, OBJECT_DETECTION,
	 *            SOUND_CLASSIFICATION, TEXT_CLASSIFICATION
	 *            分别对应:图像分类、物体检测、声音分类、文本分类
	 * @param start 起始序号,默认为0
	 * @param num 数量,默认20,最多100
	 * @return String
	 * @throws Exception
	 */
	public static String datasetList(String accessToken,String type,int start,int num) throws Exception{
		//接口地址
		String url = DATASET_LIST_API;
		String access_token = accessToken;
		// JSON格式参数拼接
		String params = "{\"type\":\"" + type + "\",\"start\":"+start+",\"num\":"+num+"}";
		String result = HttpUtil.post(url, access_token, params);
		// 输出识别结果
		return result;
	}
	/**
	 * 数据集列表获取 默认必填参数
	 * @param accessToken 应用鉴权的token 
	 * @param type
	 *            数据集类型,可包括: IMAGE_CLASSIFICATION, OBJECT_DETECTION,
	 *            SOUND_CLASSIFICATION, TEXT_CLASSIFICATION
	 *            分别对应:图像分类、物体检测、声音分类、文本分类
	 * @return String
	 * @throws Exception
	 */
	public static String datasetList(String accessToken,String type) throws Exception{
		return datasetList(accessToken, type, 0, 20);
	}
}

额外需要的JavaBean:

并不一定是必须的哦。只是方便大家拼接参数而写。字段含义请看  http://ai.baidu.com/docs#/EasyDL_DATA_API/0e4e34d9

import java.util.List;
//set/get方法省略
public class DatasetAddRequestParam {
	private String type;
	private int dataset_id;
	private boolean appendLabel;
	private String entity_content;
	private String entity_name;
	private List labels;

	public static class Labels{
		private String label_name;
		private Integer left;
		private Integer top;
		private Integer width;
		private Integer height;
	}
}

the end

收藏
点赞
3
个赞
共5条回复 最后由756665228回复于2019-02-25 18:11
#6756665228回复于2019-02-25 18:11:58
#5 淡淡点墨回复
base64上传多个图片怎么处理

应该是需要自己写循环了。接口貌似不支持一次多张图片上传。接口次数不够可以找群管 AI技术支持沟通调额的。

1
#5淡淡点墨回复于2019-02-25 17:49:17

base64上传多个图片怎么处理

0
#4goJhou回复于2018-12-13 10:13:48
#2 荒墨丶迷失回复
要是UNIT也能API形式管理数据集就很OK了

有的。很早就出了

0
#3756665228回复于2018-12-12 19:58:53
#2 荒墨丶迷失回复
要是UNIT也能API形式管理数据集就很OK了

我怎么记得貌似有呢

1
#2荒墨丶迷失回复于2018-12-12 17:11:50

要是UNIT也能API形式管理数据集就很OK了

1
TOP
切换版块