云服务器内容精选
-
Step5 推理 准备好待推理的图片,本小节以算法套件里内置的推理图片为例,原图片如下: 图1 待推理的图片 在Terminal中执行下述推理命令,其中--img_file的值为待推理图片的路径: python manage.py run --cfg algorithms/ivgPose/config/sample/config.py --pipeline infer --demo_type image_demo --load_from model_zoo/ivgPose/body/simplepose_resnet50_coco_256x192.pth.tar --img_path algorithms/ivgPose/algorithm/examples/images/body/human36m_s_01_act_02_subact_01_ca_01_000001.jpg --is_show 运行完毕后,在当前目录的export/exp_tmp下可以看到推理后的文件,打开后显示如下。 图2 推理后的文件
-
Step6 提交ModelArts训练作业 参考Step2,修改外壳的配置文件。 填写OBS桶信息 obs_bucket = 'obs://my_bucket/my_object' 按需修改runner里的Adapter参数。 adapter=dict( requirements=f'{work_dir}/algorithm/requirements.txt', framework_type='PyTorch', framework_version='PyTorch-1.4.0-python3.6', instance_type='modelarts.p3.large.public', pool_id=None, downloads=dict( src=[f'{obs_bucket}/{alg_cfg["data_root"]}', f'{obs_bucket}/{alg_cfg["pretrained"]}'], dst=[alg_cfg['data_root'], alg_cfg['pretrained']], ), uploads=dict( src=[run_dir], dst=[f'{obs_bucket}/{run_dir}'], ), ), 在Terminal中输入下述命令来提交ModelArts训练作业完成训练。 python manage.py run --launch_remote --cfg algorithms/ivgPose/config/sample/config.py --gpus 0 提交完训练作业后,可以在ModelArts控制台交互式界面看到当前训练作业的状态(如排队中、运行中等),可以在config.py配置的{run_dir}/{训练作业名称目录}下看到ModelArts上的训练日志。
-
Step1 上传数据集到开发环境中 按照不同算法定义的数据结构和格式准备好数据集。 若数据集在OBS桶里,在Terminal里可执行下述命令将OBS里的数据下载到Notebook环境中。 python manage.py copy --source obs://my_bucket/my_data_dir/ --dest /home/ma-user/work/my_data_dir 若数据集比较小且存放在PC上。 若使用的本地IDE是VS Code,可以通过拖放方式复制到VS Code连接的Notebook中。
-
Step2 修改配置文件 配置文件主要包括算法配置文件和算法参数文件,例如: 算法配置文件:./algorithms/ivgPose/config/sample/config.py 算法参数文件:./algorithms/ivgPose/config/sample/simplepose_resnet50_coco_256x192.py 根据需要修改训练相关参数,如数据集路径data_root、runner中的train_args参数以及train参数等。如下述代码所示。 config.py文件 train_args=dict( cfg=alg_cfg['cfg'], output_dir=run_dir, data_root=alg_cfg['data_root'], load_from=None, gpus=None, lr=None, max_epoch=5, samples_per_gpu=None, resume_from=None, pretrained=alg_cfg['pretrained'], train_data_root=None, val_data_root=None, ), simplepose_resnet50_coco_256x192.py文件 train = dict( save_period=-1, val_period=5, best_saver=dict(key_indicator='AP', rule='max'), ema=dict(type='ExpEMA') )
-
Step4 在开发环境中进行验证 在Terminal中执行下述测试命令,其中:--cfg为该预训练模型对应算法资产的配置文件路径,--load_from的值为待测试的模型路径,config.py为: python manage.py run --cfg algorithms/ivgPose/config/sample/config.py --pipeline evaluate --load_from ./model_zoo/ivgPose/body/simplepose_resnet50_coco_256x192.pth.tar 运行完毕后,在交互式输出界面或config.py配置的{run_dir}目录下的test.log可以看到验证过程的日志和结果。如下述信息所示: ivgpose-utils.py 133: Test: AP:0.735012 | AP .5:0.925143 | AP .75:0.813647 | AP (M):0.705874 | AP (L):0.778985 | AR:0.764798 | AR .5:0.933879 | AR .75:0.832966 | AR (M):0.732641 | AR (L):0.813304 | elapsed:00:28
-
Go语言 package demo import ( "bytes" "crypto" "crypto/rsa" "crypto/x509" "encoding/base64" "encoding/json" "encoding/pem" "fmt" "io/ioutil" ) type Message struct { Signature string `json:"signature"` Subject *string `json:"subject"` TopicUrn string `json:"topic_urn"` MessageId string `json:"message_id"` SignatureVersion string `json:"signature_version"` Type string `json:"type"` Message string `json:"message"` SubscribeUrl string `json:"subscribe_url"` UnsubscribeUrl string `json:"unsubscribe_url"` SigningCertUrl string `json:"signing_cert_url"` Timestamp string `json:"timestamp"` } func VerifyMessage(pemFile string, message string) bool { msg := Message{} err := json.Unmarshal([]byte(message), &msg) if err != nil { fmt.Println("Convert json to struct failed") return false } pemContent, err := ioutil.ReadFile(pemFile) if err != nil { fmt.Println("Read pem file failed") return false } certDerblock, _ := pem.Decode(pemContent) if certDerblock == nil { fmt.Println("Decode pem file failed") return false } cert, err := x509.ParseCertificate(certDerblock.Bytes) if err != nil { fmt.Println("Parse cert failed") return false } msgString := buildMessage(&msg) msgHash := crypto.SHA256.New() msgHash.Write([]byte(msgString)) msgHashSum := msgHash.Sum(nil) decodeSign, _ := base64.StdEncoding.DecodeString(msg.Signature) publicKey := cert.PublicKey.(*rsa.PublicKey) err = rsa.VerifyPKCS1v15(publicKey, crypto.SHA256, msgHashSum, decodeSign) if err != nil { fmt.Println("Verify failed") return false } else { fmt.Println("Verify success") return true } } func buildMessage(msg *Message) string { if msg.Type == "Notification" { return buildNotificationMessage(msg) } else if msg.Type == "SubscriptionConfirmation" || msg.Type == "UnsubscribeConfirmation" { return buildSubscriptionMessage(msg) } return "" } func buildNotificationMessage(msg *Message) string { buf := bytes.Buffer{} buf.WriteString("message\n" + msg.Message + "\n") buf.WriteString("message_id\n" + msg.MessageId + "\n") // msg中存在Subject字段不存在的场景,需要特殊处理 if msg.Subject != nil { buf.WriteString("subject\n" + *msg.Subject + "\n") } buf.WriteString("timestamp\n" + msg.Timestamp + "\n") buf.WriteString("topic_urn\n" + msg.TopicUrn + "\n") buf.WriteString("type\n" + msg.Type + "\n") return buf.String() } func buildSubscriptionMessage(msg *Message) string { buf := bytes.Buffer{} buf.WriteString("message\n" + msg.Message + "\n") buf.WriteString("message_id\n" + msg.MessageId + "\n") buf.WriteString("subscribe_url\n" + msg.SubscribeUrl + "\n") buf.WriteString("timestamp\n" + msg.Timestamp + "\n") buf.WriteString("topic_urn\n" + msg.TopicUrn + "\n") buf.WriteString("type\n" + msg.Type + "\n") return buf.String() } 该示例代码已在go 1.15版本上测试通过。
-
Step5 本地验证 在Terminal中执行下述测试命令,其中:--cfg为该预训练模型对应算法资产的配置文件路径,--load_from的值为待测试的模型路径。 python manage.py run --cfg algorithms/ivgPose/config/sample/config.py --pipeline evaluate --load_from ./model_zoo/ivgPose/body/simplepose_resnet50_coco_256x192.pth.tar 运行完毕后,在交互式输出界面或config.py配置的{run_dir}目录下的test.log可以看到验证过程的日志和结果。如下述信息所示: ivgpose-utils.py 133: Test: AP:0.735012 | AP .5:0.925143 | AP .75:0.813647 | AP (M):0.705874 | AP (L):0.778985 | AR:0.764798 | AR .5:0.933879 | AR .75:0.832966 | AR (M):0.732641 | AR (L):0.813304 | elapsed:00:28
-
Step4 修改配置文件 打开预训练模型对应算法资产的配置文件路径,如./algorithms/ivgPose/config/sample/config.py。按需进行验证相关参数的修改,如修改数据集路径data_root为下载的mini数据集路径./data/raw/coco2017_sample、指定验证阶段使用的验证数据集路径等。如下述代码所示。 alg_cfg = dict( cfg=f'{work_dir}/config/sample/{alg_name}.py', data_root='data/raw/coco2017_sample', load_from=f'model_zoo/{alg_type}/body/{alg_name}.pth.tar', pretrained=f'model_zoo/{alg_type}/backbone/resnet50_imagenet_224x224.pth', img_file=f'{work_dir}/algorithm/examples/images/body/coco_000000013729.jpg', bbox_file=f'{work_dir}/algorithm/examples/images/body/bboxes.json' ) evaluate_args=dict( cfg=alg_cfg['cfg'], output_dir=run_dir, data_root=alg_cfg['data_root'], load_from=alg_cfg['load_from'], gpus=None, samples_per_gpu=None, ),
更多精彩内容
CDN加速
GaussDB
文字转换成语音
免费的服务器
如何创建网站
域名网站购买
私有云桌面
云主机哪个好
域名怎么备案
手机云电脑
SSL证书申请
云点播服务器
免费OCR是什么
电脑云桌面
域名备案怎么弄
语音转文字
文字图片识别
云桌面是什么
网址安全检测
网站建设搭建
国外CDN加速
SSL免费证书申请
短信批量发送
图片OCR识别
云数据库MySQL
个人域名购买
录音转文字
扫描图片识别文字
OCR图片识别
行驶证识别
虚拟电话号码
电话呼叫中心软件
怎么制作一个网站
Email注册网站
华为VNC
图像文字识别
企业网站制作
个人网站搭建
华为云计算
免费租用云托管
云桌面云服务器
ocr文字识别免费版
HTTPS证书申请
图片文字识别转换
国外域名注册商
使用免费虚拟主机
云电脑主机多少钱
鲲鹏云手机
短信验证码平台
OCR图片文字识别
SSL证书是什么
申请企业邮箱步骤
免费的企业用邮箱
云免流搭建教程
域名价格