ArbSR--如何在本地调用API实现任意尺度超分

一、ArbSR

paper:Learning A Single Network for Scale-Arbitrary Super-Resolutionicon-default.png?t=N7T8https://arxiv.org/abs/2004.03791

github:The-Learning-And-Vision-Atelier-LAVA/ArbSR: [ICCV 2021] Learning A Single Network for Scale-Arbitrary Super-Resolution (github.com)icon-default.png?t=N7T8https://github.com/The-Learning-And-Vision-Atelier-LAVA/ArbSR

 免费API直接调用网址:longguangwang/arbsr – Run with an API on Replicateicon-default.png?t=N7T8https://replicate.com/longguangwang/arbsr

 使用流程:

 二、下载这个API到本地使用

大体步骤

 案例测试

import os
import replicate

# 设置环境变量
os.environ["REPLICATE_API_TOKEN"] = "r8_CSAXVLVjPXW39MGfWQ8z4fmI4JvadaG1PwwI3"

input = {
    "image": "https://replicate.delivery/mgxm/152376d5-2d94-4d7b-acc3-3a385af6f6a6/skyscraper.png",
    "target_width": 600,
    "target_height": 200
}

output = replicate.run(
    "longguangwang/arbsr:9e20d2768e62c16716c585a899105a63cd5d36f6be17a208dbc201027325d881",
    input=input
)
print(output)
#=> [{"file":"https://replicate.delivery/mgxm/081e33eb-f798-4...

 输出结果是图片的url:

其实,大体流程并不是很难,满足相应的安装之后,根据代码案例使用即可!但是,从代码案例上可以看出,输入的图片并不是本地的图片格式,而是图片的url网址,如果输入本地的图片就会报错,如下所示:

import os
import replicate

# 设置环境变量
os.environ["REPLICATE_API_TOKEN"] = "r8_CSAXVLVjPXW39MGfWQ8z4fmI4JvadaG1PwwI3"

input = {
    "image": "1.jpg",    #本地图片路径
    "target_width": 2538,
    "target_height": 128
}

output = replicate.run(
    "longguangwang/arbsr:9e20d2768e62c16716c585a899105a63cd5d36f6be17a208dbc201027325d881",
    input=input
)
print(output)
#=> [{"file":"https://replicate.delivery/mgxm/081e33eb-f798-4...

 raise ReplicateError.from_response(resp)
replicate.exceptions.ReplicateError: ReplicateError Details:
title: Unauthenticated
status: 401
detail: You did not pass an authentication token

 所以不能输入本地的图片,要先把本地的图片上传变成url输入,结果输出也是url,所以再把输出的url变成jpg或png,最后保存到本地。

图片上传url

 步骤:我将图片上传到阿里云的云存储OSS,它会返回一个url给我。

 

先注册一个账号,再进行登录(这不用我细说了吧) ,然后按步骤点击。

 再开通对象存储OSS即可,不要钱,再进入管理控制台。

 先记住自己的密钥,记住一定要复制到文档中,只能复制一次,后续就查不到了!切记切记!

 

 创建完之后一定要复制到某个地方记住,它只会给你一次机会复制!!!之后返回,创建Bucket!

 创建好了,点击进去!复制记住一些重要参数!

需要记住的参数有四个:密钥ID,密钥密码,Bucket名称,地域节点! 

完整代码

安装需求:

pip install oss2

pip install replicate  #之前有提示要安装,图片里框了

#urllib  python3.6之后都自带了,不用安装

import oss2
import replicate
import os
import cv2
import urllib.request
import numpy as np

#URL转numpy
def url_to_array(url):
    with urllib.request.urlopen(url) as resp:
        image = np.asarray(bytearray(resp.read()), dtype="uint8")
    image = cv2.imdecode(image, cv2.IMREAD_COLOR)
    return image


# 设置环境变量
os.environ["REPLICATE_API_TOKEN"] = "r8_CSAXVLVjPXW39MGfWQ8z4fmI4JvadaG1PwwI3"

#改成你自己的参数
access_key_id = '***********'
access_key_secret = '**************'
bucket_name = '*************'
endpoint = '********************'
# 创建对象
bucket = oss2.Bucket(oss2.Auth(access_key_id, access_key_secret), endpoint, bucket_name)

source_image = cv2.imread("1.jpg")   #更改自己的图片路径
print(f"输入的图片尺寸:{source_image.shape}")

# 上传
with open("1.jpg", "rb") as f:
    data = f.read()
bucket.put_object('1.jpg', data)   # '1.jpg'是阿里云OSS存储的图片名称于下方一致
fileurl = bucket.sign_url('GET', '1.jpg', 60 * 60 * 24, headers=None)  # 返回值为链接,参数依次为,方法/oss上文件路径/过期时间(s)
print(f"阿里云OSS上传成功,图片路径:{fileurl}")

input = {
    "image": fileurl,
    "target_width": 2536,    #自己更改需要超分的图像尺寸
    "target_height": 128
}

output = replicate.run(
    "longguangwang/arbsr:9e20d2768e62c16716c585a899105a63cd5d36f6be17a208dbc201027325d881",
    input=input
)
print(f"Arbsr超分成功,输出的url:{output}")
image = url_to_array(output)
print(f"输出的图片尺寸:{image.shape}")
cv2.imshow("image", image)
cv2.imshow("source_image", source_image)
cv2.waitKey(0)
cv2.imwrite("result.png", image)

完整代码如上所示,先把本地图片上传阿里云OSS得到url,再利用url进行图像超分,最后将结果url转成图像进行保存!

三、完结撒花!

  • 15
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值