• [技术干货] 【快速入门4】OBS快速入门使用
    快速入门求解器以开放API(Application Programming Interface,应用程序编程接口)的方式提供给用户,用户通过调用API获取问题求解结果,为用户提供稳定、高效的智能决策优化能力。【快速入门】系列帖子提供了调用“求解器服务”的样例,帮助您快速体验并熟悉使用本服务,具体内容如下:快速入门1:开通服务。快速入门2:使用postman调用Rest API。快速入门3:使用python 脚本调用Rest API。快速入门4:OBS快速入门使用。如何使用OBS华为云对象存储服务(Object Storage Service,OBS),是一个基于对象的海量存储服务,为客户提供海量、安全、高可靠、低成本的数据存储能力。OBS是一项面向Internet访问的服务,提供了基于HTTP/HTTPS协议的Web服务接口,用户可以随时随地连接到Internet的电脑上,通过OBS管理控制台或各种OBS工具访问和管理存储在OBS中的数据。此外,OBS支持SDK和OBS API接口,可使用户方便管理自己存储在OBS上的数据,以及开发多种类型的上层业务应用。在这里介绍快速通过OBS控制台创建桶以及文件上传的方法,更多OBS使用请参考华为云对象存储服务。1. 登录OBS控制台登录华为云控制台。在控制台首页服务列表中选择“存储 > 对象存储服务”,进入OBS控制台。2. 创建桶    a. 在OBS控制台页面右上角单击“创建桶”。    b. 选择“区域”、“存储类别”,并输入“桶名称”。单击“立即创建”。3. 查看桶的基本信息单击桶名称,进入桶概览页面后,查看桶名称和Endpoint,或直接复制两者拼接成的访问域名。4. 创建文件夹(可选)并上传模型文件    a. 单击“对象 > 新建文件夹”    b. 在“对象”页面,单击“上传对象”,根据存储类别选择待上传模型文件后,单击“上传”。
  • [问题求助] 【SIS产品】【录音文件识别功能】能不能支持OBS地址,除了URL之外
    如果用OBS地址,会保错,要用URL才行,单OBS分享为URL有点繁琐呀~直接支持OBS地址多好呢.......
  • [问题求助] 【OBS产品】【分享功能】OBS能不能方便的批量分享URL?
    比如我有10个这样的文件,就要做10次这样的点击“分享”,这样比较繁琐啊能不能方便的批量分享URL?
  • [问题求助] obs查询对象列表排序问题
    请问obs查询对象列表支持按创建时间倒序查询吗?
  • [资产园地] ECS-50(声音分类)数据集
    描述ECS-50 声音分类数据集1.数据简介ESC-50数据集是2000个环境录音的标签集合,适合环境声音分类的基准方法。数据集由5秒长的记录组成,分为50个语义类(每个类有40个示例)分为5个大类别2.适用的算法声音分类:https://marketplace.huaweicloud.com/markets/aihub/modelhub/detail/?id=6889bd98-b49d-4953-8c2f-15b6b9320a403.使用方法a、下载本数据集至您的OBS桶中b、在ModelArts“数据管理-数据集”创建声音分类数据集(注意:数据集输入位置、数据集输出位置选择2个空的OBS路径)c、在数据集详细页面右上角“导入”,导入方式选择“对象存储服务(OBS)目录”,目录位置选择上述下载路径d、待导入完成后,单击页面右上角“发布”e、订阅声音分类算法,选择上述发布的声音分类数据集进行训练
  • [资产园地] 中文语句情感分类(manifest)
    描述中文语句情感分类(manifest)1.数据简介数据集分为训练语料,验证语料,来区分语句情感2.适用的算法中文文本分类-Bert:https://marketplace.huaweicloud.com/markets/aihub/modelhub/detail/?id=bce58703-4a50-451f-a262-eff9aa8d640c3.使用方法a、下载本数据集至您的OBS桶中b、在ModelArts“数据管理-数据集”创建文本分类数据集(注意:数据集输入位置、数据集输出位置选择2个空的OBS路径)c、在数据集详细页面右上角“导入”,导入方式选择“对象存储服务(OBS)目录”,目录位置选择上述下载路径d、待导入完成后,单击页面右上角“发布”,数据按照0.8:0.2比例切分e、订阅文本分类算法,选择上述发布的文本分类数据集进行训练
  • [资产园地] 文本分类数据集--外卖评论
    描述文本分类数据集–外卖评论1、数据简介本数据集为外卖评论数据集,包含约4000条正向评论、8000条负向评论。数据集文本对象和标注分别存放在如下不同文件中:comment.txtcomment_result.txt2、适用的算法本数据集可用于如下AI Gallery中文文本分类算法进行训练中文文本分类-Bert:https://marketplace.huaweicloud.com/markets/aihub/modelhub/detail/?id=bce58703-4a50-451f-a262-eff9aa8d640c3、使用方法a、下载本数据集至您的OBS桶中b、在ModelArts“数据管理-数据集”创建文本分类数据集(注意:数据集输入位置、数据集输出位置选择2个空的OBS路径)c、在数据集详细页面右上角“导入”,导入方式选择“对象存储服务(OBS)目录”,目录位置选择上述下载路径,模式选择“文本和标注分离”d、待导入完成后,会显示11987条数据已标注,单击页面右上角“发布”,数据按照0.8:0.2比例切分e、订阅文本分类算法,选择上述发布的文本分类数据集进行训练
  • [技术干货] 创建了一个notebook后,怎么将work文件夹下的内容移动到其他notebook
    创建了一个notebook后,希望能将work文件夹下的内容移动到其他notebook上,怎么办?这时候我们可以使用moxing模块https://support.huaweicloud.com/moxing-devg-modelarts/modelarts_11_0005.html,将文件夹直接上传或者打包后上传到OBS,再用moxing从OBS下载到我们需要转移的notebook即可。
  • [技术干货] FunctionGraph实现 CDN日志转存OBS_demo-python版本
    # 1.服务说明FunctionGraph服务:基于事件驱动的函数托管计算服务。通过函数工作流,只需编写业务函数代码并设置运行的条件,无需配置和管理服务器等基础设施,函数以弹性、免运维、高可靠的方式运行。# 2.方案说明## 2.1 需求及痛点需求:实现CDN日志实时转存到OBS痛点:当前CDN日志模块不支持转储能力,需要客户代码实现该能力## 2.2 方案设计!(https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202201/04/190656nmqzbbpz40kig5nh.png)**方案说明:**- 定时触发器,固定频率启动函数- 函数请求CDN日志接口,获取日志下载链接- 函数请求下载链接,将下载的日志上传到OBS固定目录下。## 2.3 服务创建### 2.3.1 确认CDN日志记录状态- 在华为云控制台查看CDN日志记录是否正常,如图可知日志会有5个小时的延迟。!(https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202201/04/190856zdcjtkqyewrsooic.png)### 2.3.2 FunctionGraph新建函数- 登录华为云控制台,进入“管理与部署>统一身份认证服务”,选择“委托”页签,点击创建“委托”。!(https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202201/04/1910153nhdrqvk74q82hb6.png)- 下一步,进入委托配置权限界面。作用范围:全局服务;权限选择:OBS OperateAccess 、CDN LogsReadOnlyAccess。点击确认!(https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202201/04/191040k87llhvgseqdu1nq.png)- 华为云控制台,选择“计算>函数工作流”,进入函数工作流界面,点击右上角“创建函数”,输入图片中的信息,点击创建函数!(https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202201/04/191149gbn7qkrqhwpjo0n2.png)- 创建后,进入代码编辑界面,将 Demo代码 的代码内容复制到在线IDE!(https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202201/04/191259oqvkcaat58youzoz.png)- 点击配置按钮,配置“环境变量”!(https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202201/04/191323qvv1ehjiw76dxrtq.png)**注:**url :https://cdn.myhuaweicloud.com/v1.0/cdn/logs(CDN日志查询的url)。domain_name :xxx.com(需要转存日志的CDN加速域名)。obsAddress :xxx.com(用于存日志的OBS桶域名)。destBucket :******(用于存日志的OBS桶文件夹名称)。- 在函数配置界面选择“触发器”,点击右侧“创建触发器”,配置内容如下,点击确定。(实例代码中日志转储的日志为最新生成的近一小时日志)!(https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202201/04/191415icec47stds0swpz1.png)- 在函数配置界面,单击右上角“请选择测试事件”下拉框,选择“配置测试事件”,配置内容如下,点击保存即可。!(https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202201/04/191451yyfy3yoellu8yno6.png)- 在函数配置界面,单击右上角“请选择测试事件”下拉框,选择“配置测试事件”,配置内容如下,点击保存即可。!(https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202201/04/191514h51v3b1wmoyhfcx0.png)- 点击函数的保存按钮即可,函数配置成功。# 3.FunctionGraph适用说明该FunctionGraph函数工作流适用于CDN日志转储OBS,转储规则为增量转储,可通过配置触发器以及修改代码实现定时增量转储固定周期的CDN日志。# 4.Demo代码```python# -*- coding:utf-8 -*-import requestsimport datetimeimport timeimport osimport sysimport jsonfrom com.obs.client.obs_client import ObsClientfrom urllib.parse import urlparseif sys.version_info.major == 2 or not sys.version > '3': import httplibelse: import http.client as httplibcurrent_file_path = os.path.dirname(os.path.realpath(__file__))sys.path.append(current_file_path)TEMP_ROOT_PATH = "/tmp/" # OBS文件下载后的存储路径region = 'china' # 默认值,用于FunctionGraph连接OBS使用secure = True # 默认值,用于FunctionGraph连接OBS使用signature = 'v4' # 默认值,用于FunctionGraph连接OBS使用port = 443 # 默认值,用于FunctionGraph连接OBS使用path_style = True # 默认值,用于FunctionGraph连接OBS使用def handler(event, context): #引用context的logger方法 logger = context.getLogger() #CDN日志记录查询接口的起始时间,转换成时间戳;当前为近6个小时的日志记录 timer = (datetime.datetime.now()-datetime.timedelta(hours=6)).strftime("%Y-%m-%d %H") timeStamp = int(time.mktime(time.strptime(timer,"%Y-%m-%d %H"))*1000) #配置日志转储的起始时间点,转换成时间戳 timeStr = (datetime.datetime.now()-datetime.timedelta(hours=6)).strftime("%Y-%m-%d %H") timeStrStamp = int(time.mktime(time.strptime(timeStr,"%Y-%m-%d %H"))*1000) #配置日志转储的终止时间点,转换成时间戳 timeEnd = (datetime.datetime.now()-datetime.timedelta(hours=5)).strftime("%Y-%m-%d %H") timeSEndStamp= int(time.mktime(time.strptime(timeEnd,"%Y-%m-%d %H"))*1000) #CDN日志记录查询接口参数字段,显示数量为 pageSize* pageNumber pageSize = 5000 pageNumber = 1 #https请求加上verify=False忽略SSL验证后会出现警告,使用以下代码忽略警告 requests.packages.urllib3.disable_warnings() #queryDate 日志的产日日期,用于日志存储路径使用 queryDate = (datetime.datetime.now()-datetime.timedelta(hours=6)).strftime("%Y-%m-%d") #使用start函数 start(context, queryDate, timeStamp, pageSize, pageNumber,timeStrStamp,timeSEndStamp)#定义start函数,进行日志记录查询def start(context, queryDate, timeStamp, pageSize, pageNumber,timeStrStamp,timeSEndStamp): #引用context的logger方法 logger = context.getLogger() #引用context的中用户参数(新建函数后配置的参数),引用url,domain_name logUrl = context.getUserData('url') domainName = context.getUserData('domain_name') #request的请求参数 params = {'query_date': timeStamp, 'domain_name': domainName, 'page_size': pageSize, 'page_number': pageNumber, 'enterprise_project_id':'ALL'} #request的请求头 headers = {'Content-Type': 'application/json;charset=UTF-8', 'X-Auth-Token': context.getToken()} #发起日志记录接口的请求, res = requests.get(logUrl, params=params, headers=headers, verify=False) # 请求状态码判断,若非200,打印响应信息 if res.status_code != 200: logger.info("query log urls: " + res.url + ", error: " + res.text) return ("query log urls: " + res.url + ", error: " + res.text) #创建res.text的python对象 resJson = json.loads(res.text) #打印res.text的内容 logger.info(res.text) #将响应信息中的total的值赋予total total = resJson['total'] #定义变量i ,用于循环计数 i = 0 #从resjson logs值中循环取值 for val in resJson['logs']: i += 1 #打印 val中的link的值 logger.info(val["link"]) #val中的start_time的值赋予start_time start_time = val["start_time"] #取时间段内日志记录 if int(start_time) >= timeStrStamp and int(start_time) < timeSEndStamp: # link分为6个部分,协议、位置、路径、参数、查询、片段。 url = urlparse(val["link"]) # 将url 中的请求地址根据“:”进行分片 netlocs = url.netloc.split(":") # 创建连接 conn = httplib.HTTPConnection(netlocs[0], int(netlocs[1])) conn.request('GET', url.path + "?" + url.query) # CDN日志,OBS的存储路径 objName = os.path.join(val["domain_name"], queryDate, val["name"]) #使用 put_content_to_obs函数 put_content_to_obs(context, objName, conn.getresponse()) else: continue # 判断转储的日志量与total对比;不满足则重新执行start函数 if i > total: start(context, queryDate, timeStamp, pageSize, pageNumber + 1,timeStrStamp,timeSEndStamp)#定义put_content_to_obs函数,上传日志到OBSdef put_content_to_obs(context, objName, content): #引用context中的方法获取ak,sk ak = context.getAccessKey() sk = context.getSecretKey() #引用context中的用户定义变量obsAddress,destBucket obsAddress = context.getUserData('obsAddress') destBucket = context.getUserData('destBucket') #创建OBS上传实例 TestObs = ObsClient(access_key_id=ak, secret_access_key=sk, is_secure=secure, server=obsAddress, signature=signature, path_style=path_style, region=region, ssl_verify=False, port=port, max_retry_count=5, timeout=20) #上传日志 resp = TestObs.putContent(destBucket, objName, content=content) #判断执行结果 if resp.status < 300: print('requestId:', resp.requestId) else: print('errorCode:', resp.errorCode) print('errorMessage:', resp.errorMessage)```# 5.Demo代码说明## 5.1 注释说明```python#CDN日志记录查询接口的起始时间,转换成时间戳;当前为近6个小时的日志记录 timer = (datetime.datetime.now()-datetime.timedelta(hours=6)).strftime("%Y-%m-%d %H") timeStamp = int(time.mktime(time.strptime(timer,"%Y-%m-%d %H"))*1000) #配置日志转储的起始时间点,转换成时间戳 timeStr = (datetime.datetime.now()-datetime.timedelta(hours=6)).strftime("%Y-%m-%d %H") timeStrStamp = int(time.mktime(time.strptime(timeStr,"%Y-%m-%d %H"))*1000) #配置日志转储的终止时间点,转换成时间戳 timeEnd = (datetime.datetime.now()-datetime.timedelta(hours=5)).strftime("%Y-%m-%d %H") timeSEndStamp= int(time.mktime(time.strptime(timeEnd,"%Y-%m-%d %H"))*1000)```**示例说明:**假设代码执行时间为 2021-12-30 20:30日志记录查询接口的查询时间为 timestamp=2021-12-30 14:00 至 2021-12-30 20:30由于CDN的日志生成时间延迟6小时,则 2021-12-30 14:00 至 2021-12-30 20:30 的时间内只有2021-12-30 14:00 的日志文件生成。由于设置触发器每小时触发一次,即可每小时上传一次最新生成的日志,实现增量上传。## 5.2 Context说明| 方法名 | 方法说明 ||:---|:---|| getRequestID() | 获取请求ID。 || getRemainingTimeInMilliSeconds () | 获取函数剩余运行时间。 || getAccessKey() | 获取用户委托的AccessKey(有效期24小时),使用该方法需要给函数配置委托。 || getSecretKey() | 获取用户委托的SecretKey(有效期24小时),使用该方法需要给函数配置委托。 || getUserData(string key) | 通过key获取用户通过环境变量传入的值。 || getFunctionName() | 获取函数名称。 || getRunningTimeInSeconds () | 获取函数超时时间。 || getVersion() | 获取函数的版本。 || getMemorySize() | 分配的内存。 || getCPUNumber() | 获取函数占用的CPU资源,单位为millicore(1 core=1000 millicores)。取值与MemorySize成比例,默认是128M内存占0.1个核(100 millicores),函数占用的CPU为基础CPU:200 millicores,再加上内存按比例占用的CPU,计算方法:内存/128 * 100 + 200。 || getProjectID() | 获取projectID。 || getPackage() | 获取函数组。 || getToken() | 获取用户委托的token(有效期24小时),使用该方法需要给函数配置委托。 || getLogger() | 获取context提供的logger方法,返回一个日志输出类,通过使用其info方法按“时间-请求ID-输出内容”的格式输出日志。如调用info方法输出日志:logg = context.getLogger() logg.info("hello") |# 6.实测结果- FunctionGraph函数界面,点击测试按钮。查看执行结果以及转储到OBS中的日志。**a.FunctionGraph 函数界面**!(https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202201/04/193158yasrqum1u2ybm92z.png)**b.OBS界面查看日志**!(https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202201/04/193225v7gkfzyz942wdpfi.png)
  • [问题求助] AICC8.15 OBS自动外呼
    【问题来源】    星网    【问题简要】OBS自动外呼开发字段相关问题【问题类别】   OBS【AICC解决方案版本】   AICC8.15【期望解决时间】尽快【问题现象描述】obs自动外呼数据库接口,取外呼任务接口,其中TRANSFERWITHDETECTTYPE和AsrFlag这两个参数有什么用?会触发什么效果?如果可以,请举例说明一下。
  • [问题求助] 【AppCube】【REST功能】请求OBS桶资源时401报错
    【功能模块】连接器OBS模块连接器Rest模块【操作步骤&问题现象】1、REST服务获取OBS桶的内容时候出现401错误,浏览器单独使用API是可以获得文件的,REST请求http://www.baidu.com时正常,REST不知道哪里没有配置好。【截图信息】【日志信息】(可选,上传日志内容或者附件)2022-01-07 13:53:25.934|3-170446532|bingo|###### trace-on ok2022-01-07 13:53:25.935|3-170446532|bingo|###### End route /u-route/baas/om/v1.0/trace2022-01-07 13:53:30.314|3-170447622|bingo|###### Begin route /u-route/baas/sys/v1.0/restaction/tofine1__obsLikFils1/test2022-01-07 13:53:30.378|3-170447622|bingo|###### Begin restaction tofine1__obsLikFils1,{"url":"https://appcube.cn-north-4.huaweicloud.com/u-route/baas/sys/v1.1/connectors/obs/tofine1__obsLik/viewobject?object=myFile/myfile1.txt","method":"GET","parameters":{},"tenantID":"0000000000msrJDKCtyS"}2022-01-07 13:53:30.538|3-170447622|bingo|###### End restaction tofine1__obsLikFils12022-01-07 13:53:30.539|3-170447622|bingo|###### End route /u-route/baas/sys/v1.0/restaction/tofine1__obsLikFils1/test2022-01-07 13:53:35.812|3-170449040|bingo|###### Begin route /u-route/baas/om/v1.0/trace
  • [资产园地] 物体检测-CenterNet-Hourglass
    描述CenterNet-Hourglass (物体检测/Pytorch)1. 概述此模型是对Objects as Points 中提出的CenterNet进行结果复现(原论文Table 2 最后一行)。本模型是以Hourglass网络架构作为backbone,以ExtremNet 作为预训练模型,在COCO数据集上进行50epochs的训练后得到的。本项目是基于原论文的官方代码进行针对ModelArts平台的修改来实现ModelArts上的训练与部署。目标检测的主要benchmark 为COCO数据集,相关指标为mAP,详细说明请参考:https://cocodataset.org本模型的其他信息如下表所示:项目说明参考论文Objects as Points使用框架Pytorch-1.4.0训练模型BackboneHourglass训练集COCO train2017训练总epoch数50训练batch_size160 (20*8, 每卡20 batch size)训练硬件及耗时8 * v100,24小时测试集COCO val2017 & test2017推理硬件及速度CPU,20s/pic训练输入图像尺寸训练输入 3x512x512推理输入推理输入图像尺寸支持任意尺寸,推荐大于512x512的图片输入原论文准确率mAP=42.1, 使用flip test本算法准确率mAP=42.7, 使用flip test2. 训练2.1. 算法基本信息任务类型:目标检测支持的框架引擎:PyTorch-1.4.0-python3.6算法输入:存储在OBS上的数据集,必须按照COCO数据集的格式进行存储|-- data`-- |-- coco `-- |-- annotations | |-- instances_train2017.json | |-- instances_val2017.json | |-- person_keypoints_train2017.json | |-- person_keypoints_val2017.json | |-- image_info_test-dev2017.json |---|-- train2017 |---|-- val2017 `---|-- test2017将数据打包tar -cvf coco.tar ./coco将 coco.tar 上传至OBS。预训练模型ExtremeNet算法输出:用于Pytorch推理的pth模型,CPU推理速度:20s/pic代码结构src/├── pre-trained_weights│ └── ExtremeNet_500000.pth├── trained_model # for deployment│ ├── coco_classes.py│ ├── config.json│ ├── customize_service.py│ ├── epoch_50_mAP_42.7.pth│ ├── _init_paths.py│ └── lib├── train.py # training script├── evaluation.py # evaluation script├── _init_paths.py├── coco_eval.py├── lib # related codebase│ ├── datasets ...│ ├── detectors ...│ ├── external ...│ ├── logger.py│ ├── models ...│ ├── opts.py│ ├── trains ...│ └── utils ...├── coco # coco dir├── infer_results # inference results COCO test-dev submit format│ ├── detections_test-dev2017_ctdet-flip-test_results.zip│ └── detections_test-dev2017_ctdet-multi-scale_results.zip└── training_logs # training logs ├── jobf9a05f30-job-trainjob-ctdet.0-0-0-det-0_default-stdout.log ├── logs_2020-11-12-22-19 ... └── opt.txt2.2. 训练参数说明名称默认值类型是否必填是否可修改描述batch_size12int否是模型训练时总的batch_size,当多卡训练时,batch_size要能整除#GPUmaster_batch12int否是模型训练时负责维护模型master copy的GPU上的batch_size,如无特殊需求可设置master_batch = batch_size / #GPUload_weightsrc/trained_model/epoch_50_mAP_42.7.pthstring是是预训练的CenterNet模型的pth文件路径gpus0string否是GPU 编号,如果选择多卡,则需要按照“0,1,2,3”的格式填写num_epoch50int否是训练所需的epoch数量lr2.5e-4float否是训练时的learning ratelr_step40string否是learning rate 在指定epoch时变为原来的0.1evalFalsestring否是是否启动Evaluation模式,具体使用见2.4节推荐运行参数:--exp_id=coco_hg --arch=hourglass --batch_size=160 --master_batch=20 --lr=2.5e-4 --load_model=/ExtremeNet_500000.pth --gpus=0,1,2,3,4,5,6,7 --num_epoch=50 --lr_step=40特别说明:load_weight参数有以下两种取值:固定的默认路径,默认加载本算法源码目录中的trained_model/epoch_50_mAP_42.7.pth继续训练,加载成功会打印日志;可变的OBS路径,用户可指定OBS上的一个模型文件路径,然后本算法会加载该模型继续训练,加载成功会打印日志。注意,OBS路径的模型在输入时load_weight应为s3://bucket_name/xxx/xxx.ptheval参数有以下两种取值:(1)False,本算法执行模型训练过程;(2)True,本算法加载load_weight参数指定的模型,然后执行模型评估过程。具体评估见2.4节。2.3. 训练输出文件CenterNet_output/V0008/├── logs_2020-11-12-22-19│ ├── events.out.tfevents.1605190788.job3b595134-job-trainjob-centernet-0│ ├── log.txt│ └── opt.txt├── checkpoints| ├── model_40.pth| ├── model_best.pth| └── epoch_50_mAP_42.7.pth├── model| ├── customize_service.py| ├── config.json| ├── model_last.pth| └── ...└── opt.txttfevents 文件可由tensorboard打开查看训练曲线。2.4. 模型评估可利用train.py 或 evaluation.py 参数对模型进行指标验证,此时需将原始默认参数删除,并配置以下相关参数:名称默认值类型描述load_weightsrc/trained_model/epoch_50_mAP_42.7.pthstring需要指定训练得到的pth 文件的路径gpus0stringGPU 编号,如果选择多卡,则需要按照“0,1,2,3”的格式填写keep_resFalsestringflag 参数,用来判断是否要保留原始分辨率进行推理flip_testFalsestringdetection中是否使用反转测试,以提高精度test_scales‘’string多尺度模型推断,可以有更高的精度,但也相对更加耗时。多尺度参数输入示例:0.5,0.75,1,1.25,1.5trainvalFalsestring用于选择所用的推理数据集,默认为val集,若设True则为test集。evalTruestring若使用train.py 脚本,需将其设置为True才可进行模型评估,否者进行模型训练推荐运行参数:--exp_id coco_hg --arch hourglass --keep_res True --resume True --gpus 0 --load_model /model_last.pth --flip_test True # optional--test_scales 0.5,0.75,1,1.25,1.5 # optional--trainval True # optional输出文件:CenterNet_output_val/V0008/├── logs_2020-11-12-22-19├── results.json├── map.txt # 如果以coco形式存储数据└── opt.txtresults.json为COCO的评价格式的推理输出。Evaluation 数据data_url格式目前支持三种形式:coco.tar 文件所在dir。此时推理数据文件结构与2.1一致coco 文件夹。将测试数据以coco2017的格式存放在obs里,格式必须严格如下:|-- data`-- |-- coco `-- |-- annotations | |-- instances_val2017.json `---|-- val2017当数据为coco原始数据时,无需做任何改变,在任务配置时,将data_url指向此处的data文件夹即可。当数据为自定义数据时,用户需要手动按照coco数据的格式将图片放在data/coco/val2017的路径里,并将groundtruth的信息在data/coco/annotations/instances_val2017.json文件中进行改写(不能修改json文件名),之后将data_url指向此处的data文件夹即可。图片文件夹。此时data路径下直接存放待推理的图片。将data_url指向此处的data文件夹即可,此时不会生成评估指标。图片推理结果的格式: 以coco推理结果的形式保存在results.json文件中。3. GPU/CPU推理完成训练后,在创建模型的选项中选择,“从训练中选择”的方式实现实现模型导入即可。之后选择立即创建即可得到可部署模型。可部署模型也已经发布在ModelHub注意:推理配置文件model/config.json中的runtime字段为pytorch1.4-python3.7,表示该模型可同时在CPU或GPU运行。4. 案例指导本算法的详细使用方法,请查看《ModelArts AI Gallery算法CenterNet使用指导》。交付交付方式华为云ModelArts交付区域华北-北京一、华北-北京四、华东-上海一、华南-广州、亚太-**
  • [资产园地] 目标检测-TSD
    描述TSD(目标检测/Pytorch)1. 概述此模型基于Revisiting the Sibling Head in Object Detector中提出的模型结构实现,该算法会载入在COCO上的预训练模型,在用户数据集上做迁移学习。我们提供了训练代码和可用于训练的模型,用于实际场景的微调训练。训练后生成的模型可直接在ModelArts平台部署成在线服务。目标检测的评估手段一般使用AP指标,详细说明请参考原论文。本算法的其他信息如下表所示:项目说明参考论文Revisiting the Sibling Head in Object Detector使用框架Pytorch-1.4.0训练集COCO2017中的训练集训练总epoch数35训练batch_size使用8张V100训练,每张卡TRAIN_BATCH_SIZE = 2,相当于总batch_size为16训练硬件及耗时8*V100,约100小时测试集COCO2017中的test_dev推理硬件及速度V100,1.9s/pic原论文准确率AP=49.4本算法准确率AP=49.42. 训练2.1. 算法基本信息任务类型:目标检测支持的框架引擎:PyTorch-1.4.0-python3.6算法输入:存储在OBS上的数据集,必须按照COCO数据集的格式进行存储,详情请查看下文第4节案例指导COCO预训练模型,在COCO test_dev上的AP是49.4算法输出:用于Pytorch推理的pth模型代码结构|-src # 算法源码根目录 |-pre-trained_weights # ImageNet上的预训练参数文件 |-trained_model # 已训练好的、可复现论文精度的模型 |-model |-config.json |-customize_service.py |-epoch_35_mAP_49.4_tsd1.pth # 训练好的模型 |-... |-train.py # 算法启动文件 |-evaluation.py # 模型评估脚本 |-...2.2. 训练参数说明名称默认值类型是否必填是否可修改描述gpu_num1int否是使用GPU的数目,默认是1块GPUimgs_per_gpu2int否是每块GPU能同时处理的图像数目lr0.02float否是训练的学习率epoch1int否是训练多少代lr_step24,33str否是在训练至多少代时进行进行学习率衰减deterministic1int否是算法是否是确定性的,即是否设定种子validate1int否是训练时是否进行在验证集上检验multi_train1int否是在训练时是否采用多尺度图像增强multi_test0int否是在验证和测试时是否采用多尺度图像增强test_ann_fileannotations/image_info_test-dev2017.jsonstr否是测试时采用的图像标注json文件。支持输入本算法源码目录的相对路径;也支持输入可变的OBS路径,用户可指定OBS上的一个模型文件路径。test_img_prefixtest2017str否是测试时图像所在的文件夹目录format_only0int否是是否只输出预测结果文件,不输出准确率等指标。当测试没有ground truth时,必须把format_only设为1load_weight—str否是是否加载已训练好的模型权重eval0int否是是否进行测试。1表示测试;0表示训练具体介绍一下load_weight参数:默认情况:默认加载已训练好的模型,即源码目录中的trained_model/model/ epoch_35_mAP_49.4_tsd1.pth,加载成功会打印日志。格式规范:支持输入本算法源码目录的相对路径;也支持输入可变的OBS路径,用户可指定OBS上的一个模型文件路径。使用方法:在训练阶段,可以加载ImageNet预训练Resnet101权重来train from scratch(需要把load_weight参数删除掉),也可以指定加载的模型路径,在此基础上继续训练;若为eval阶段,参数为空时默认加载本算法训练好的weight,不为空时加载用户指定weight进行测试。其他说明:算法加载模型成功后会打印日志。2.3. 训练输出文件训练完成后的输出文件如下:|- model |- model.pth # 训练好的模型文件 |- config.json |- customize_service.py |- ... # 部署所需的其他文件|- xxxx.log|- xxxx.log.json如果设置eval为True,输出文件如下:|- test_res |- test_result.pkl # 预测结果的.pkl文件 |- tsd_test_results.bbox.json # 预测结果的.json文件3. GPU/CPU推理元模型来源 选择 从训练中选择,选择训练作业及版本。注意:推理配置文件model/config.json中的runtime字段为pytorch1.4-python3.6,表示该模型可同时在CPU或GPU运行。4. 案例指导本算法的详细使用方法,请查看《ModelArts AI Gallery算法TSD使用指导》。交付交付方式华为云ModelArts交付区域华北-北京一、华北-北京四、华东-上海一、华南-广州、亚太-**
  • [其他] OBS迁移服务好慢呀
    9:39提交的任务成功对象列表里显示:10:20处理的约40分钟了
  • [其他] 使用OBS自己的跨区域复制功能
    前面说到  OMS 存储对象迁移,太慢了,磨叽,等不得,还是试试OBS内自己的复制功能,配置一下,这次是要复制已有的对象,所以选同步历史对象还有创建一个委托权限等了十几分钟委托也出不来,得,我还是手工下载上传吧
总条数:748 到第
上滑加载中