【Modelarts】如何将图片输入修改成Base64输入或URL输入
【摘要】 本教程将会以一个准备好得model部署目录结构的方式,来讲解如何修改修改推理脚本和config.json,来适配推理不同的输入(可能是图片文件、Base64、URL),根据不同情况对推理脚本和config.json文件的部分代码按照以下指导进行修改即可。
一.环境准备
目前已经准备好一个适配好推理部署服务的架构目录文件结构,如下图。
二.修改样例
1 输入图片
1.1 需要打开config.json,将api定义中的request修改成下图所示。表示图片输入。
...
"request": {
"data": {
"type": "object",
"properties": {
"images": {
"type": "file"
}
}
},
"Content-type": "multipart/form-data"
},
...
1.2 config.json中,dependencies中添加opencv-python的依赖。
1.3推理脚本(customize_service.py)部分,用opencv的方式的话需要添加第二步的依赖。
def _preprocess(self, data):
...
pre_data = {}
for k, v in data.items():
input_batch = []
for file_name, file_content in v.items():
img_array = cv2.imdecode(np.fromstring(file_content.read(), np.uint8), cv2.IMREAD_COLOR)
input_batch.append(img_array)
pre_data[file_name] = input_batch
return pre_data
...
如果使用PIL,则参考如下代码
def _preprocess(self, data):
...
pre_data = {}
for k, v in data.items():
input_batch = []
for file_name, file_content in v.items():
img_array = Image.open(file_content)
input_batch.append(img_array)
pre_data[file_name] = input_batch
return pre_data
...
2. 图片Base64输入
2.1config.json部分,将api定义中的request修改成下图所示。表示json输入。
...
"request": {
"Content-type": "application/json",
"data": {
"type": "object",
"properties": {
"images": {
"type": "string"
}
}
}
},
...
2.2 config.json中,dependencies中添加opencv-python的依赖。
2.3推理脚本(customize_service.py)部分
def _preprocess(self, data):
...
pre_data = {}
for k, v in data.items():
input_batch = []
for file_name, file_content in v.items():
base64_decode = base64.b64decode(file_content)
img_array = io.BytesIO(base64_decode)
img_array = cv2.imdecode(np.fromstring(img_array.read(), np.uint8), cv2.IMREAD_COLOR)
input_batch.append(img_array)
pre_data[k] = input_batch
return pre_data
...
如果是PIL,参考如下代码
def _preprocess(self, data):
...
pre_data = {}
for k, v in data.items():
input_batch = []
for file_name, file_content in v.items():
img_array = Image.open(io.BytesIO(base64.b64decode(file_content)))
input_batch.append(img_array)
pre_data[file_name] = input_batch
return pre_data
...
3)URL输入(确保URL的公网可下载的)
3.1config.json部分,将api定义中的request修改成下图所示。
...
"request": {
"Content-type": "application/json",
"data": {
"type": "object",
"properties": {
"images": {
"type": "string"
}
}
}
},
...
3.2 config.json中,dependencies中添加opencv-python的依赖。
3.3推理脚本(customize_service.py)部分
def _preprocess(self, data):
...
pre_data = {}
for k, v in data.items():
input_batch = []
for file_name, file_content in v.items():
resp = urllib.request.urlopen(file_content)
img_array = np.asarray(bytearray(resp.read()), dtype="uint8")
img_array = cv2.imdecode(np.fromstring(img_array, np.uint8), cv2.IMREAD_COLOR)
input_batch.append(img_array)
pre_data[k] = input_batch
return pre_data
...
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)