zoukankan      html  css  js  c++  java
  • 华为OBS上传,与modelart添加标签--python

    本人因工作需要所以使用华为ModelArt做初步的图片识别(本章讲到的内容只是数据的收集与打标签)

    首先需要把本地的图片压缩与归类(这部有netcore完成)

    python:

    第一步:把压缩过的图片上传到对应的华为OBS:

    这需要使用到华为的【modelarts.session】

     1 import time
     2 # 本地图片导入obs
     3 from modelartsapis import ModelArtsApis
     4 import os
     5 from modelarts.session import Session
     6 strtype=''
     7 session = Session(access_key='access_key', secret_key='secret_key', project_id='项目ID', region_name='服务器区域名称')
     8 filelist = os.listdir('d:/' + strtype + '/')
     9 for item in filelist:
    10     session.obs.upload_file(src_local_file='本地文件路径’, dst_obs_dir='obs上面的文件夹路径')

    上传成功后,需要把这些新上传的图片打上对应分类的标签。

    以下内容请参考:https://support.huaweicloud.com/api-modelarts/modelarts_03_0004.html

    第二步:因为需要创作ModelArt数据集对应的功能,需要获取token:

    1  def gettokens(self):
    2         # 获取华为云认证token
    3         params = '{"auth":{"identity":{"methods":["password"],"password":{"user":{"name":"华为云的昵称","password":"账号密码","domain":{"name":"账号"}}}},"scope":{"project":{"id":"项目ID"}}}}'
    4         r = requests.post('https://iam.cn-north-4.myhuaweicloud.com/v3/auth/tokens', data=params)
    5         print(r.text)
    6         tokens = r.headers.get('X-Subject-Token')
    7         print(tokens)
    8         headers = {'X-auth-Token': tokens, 'Content-Type': 'application/json'}
    9         return headers

    第三步:拿到token后就需要同步到数据集,把刚刚上传上来的图片,同步到数据集中(记住这里HEAd里面需要带上刚刚获取到的token)

    https://support.huaweicloud.com/api-modelarts/SyncDataSource.html

    1  def asyncsamples(self, headers):
    2         # 同步数据集
    3         print("同步数据集")
    4         samples = requests.post('https://modelarts.cn-north-4.myhuaweicloud.com/v2/{project_id}/datasets/{dataset_id}/sync-data', headers=headers)
    5         print(samples.status_code)

    第四步:获取刚刚同步上来未标注的样本,并且给他们打上对应的标签(标注)

    https://support.huaweicloud.com/api-modelarts/modelarts_03_0402.html

     1     def getnonesamplelist(self, headers,types):
     2         # 查询未标注样本
     3         print("查询未标注样本")
     4         samples1 = requests.get(
     5             'https://modelarts.cn-north-4.myhuaweicloud.com/v2/{project_id}/datasets/{dataset_id}/data-annotations/samples?sample_state=__NONE__&limit=100',
     6             headers=headers)
     7         json2 = json.loads(samples1.text)
     8         if json2['sample_count'] == 0:
     9             return
    10         json3 = json2['samples']
    11         str1 = '{"samples" : ['
    12         str2 = ''
    13         for aa in json3:
    14             str2 += ',{ "sample_id" : "' + aa['sample_id'] + '", "labels" : [{ "name" : "' + types + '" }]}'
    15         str1 += str2[1:] + ']}'
    16         return str1

    最后一步:更新刚刚标注的样本

    1     def updatesamples(self, str1, headers):
    2         print("批量更新样本标签")
    3         samples2 = requests.put('https://modelarts.cn-north-4.myhuaweicloud.com/v2/{project_id}/datasets/{dataset_id}/data-annotations/samples', headers=headers, data=str1)
    4         # print(samples2.status_code)
    5         return samples2.text
  • 相关阅读:
    WebMatrix简介与预览
    使用NuGet增加常见包引用
    用Jquery实现的一个Table的帮助js
    使用AspNetPager进行存储过程分页
    Android之旅AppWidget
    SQL积累
    【问题记录】Asp.net WebApplication和WebSite中用户控件的使用区别
    ActionScript 3.0工厂模式实例
    ActionScript 3.0 实现单态模式
    装饰器模式小结
  • 原文地址:https://www.cnblogs.com/huodetiantang/p/15151820.html
Copyright © 2011-2022 走看看