垃圾分类

更新时间:

Quick Start

  • 本示例演示了基于 OSS 浏览器端文件直传的能力

  • 本示例演示了基于 Python 语言开发调用阿里云视觉智能服务的能力

创建应用

  • 登录阿里云Serverless云开发平台,进入应用列表,点击「创建新应用」,选择「实验室」,勾选「AIoT」,在「解决方案」中,选择「智能生成页面智能识别图片方案」,点击下一步,按照提示完成应用的创建

  • 应用创建完成后,等待代码仓库完成初始化,代码仓库初始化完成后,可以看到「开发部署」入口,点击打开 CloudIDE

添加环境变量,部署验证效果

  • 至此,我们通过 ImgCook 智能生成的代码都准备好了,现在离验证整个项目还差最后一步,我们为此应用输入测试用的图片上传和图片智能识别的环境变量,复制以下代码

    AKID=xxxxx
    AKSK=xxxxxxxx
    REGION=cn-shanghai
    OSSBUCKET=wb-case-showroom2
    OSSDIR=photo
  • 在云开发平台应用列表,找到我们创建的应用,在应用卡片上点击「应用配置」,将上面复制的代码粘贴进来,保存即可

image.png
  • 我们可以在开发时调试应用程序,首先在容器内安装aliyunsdk

    sudo pip install aliyun-python-sdk-core --target ./ -i https://pypi.tuna.tsinghua.edu.cn/simple

    然后在CloudIDE中点击左侧「WB」插件,点击「测试」,查看输出即可

  • 现在我们可以部署查看效果了,回到 CloudIDE,点击左侧「WB」插件,点击「部署」,等待部署完成,点击平台分配的临时免费测试域名,在打开的浏览器地址栏后面加上 /imgcook/index.html 就可以查看线上效果了

    部署查看效果

如何在自己的真实业务中使用该方案?

开通服务

  1. 开通阿里云视觉智能 viapi_imagerecog_public_cn/图像识别服务 https://common-buy.aliyun.com/?commodityCode=viapi_imagerecog_public_cn#/open

打开此链接查看:https://vision.aliyun.com/ 更多阿里云视觉智能开放能力

  1. utils/oss_upload.py 中的 AKID、AKSK、OSSBUCKET、OSSDIR 需要替换为自己的 OSS 账号相关变量,推荐创建子账号进行授权,本示例中采用环境变量来配置这些敏感信息而不直接 hardcode 在代码中,参见下面「测试用环境变量」

  2. algo.py 中的 AKID、AKSK 需要替换为自己的变量,该 AKSK 需要能够调用阿里云视觉智能图像识别服务,建议新建子账号,对子账号进行授权,授权策略如下:https://help.aliyun.com/document_detail/145025.html

  3. 由于图片是前端直传 OSS,OSS 需要打开跨域设置,设置过程参考这位同学的分享:https://blog.csdn.net/qq_41570658/article/details/106492447

  4. OSS需要设置权限为公共读

使用安全的子账号授权策略

  • 不要用主账号 AK/SK 信息在自己的应用里直接使用,可以创建一个子账号,为它授予指定的 OSS Bucket 读写权限和阿里云视觉智能服务的访问权限。可以将以下授权策略直接复制过去即可。最后使用这个子账号的 AK/SK 在应用中使用(注意OSS的bucket设置)。

{
    "Version": "1",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "viapi-imageenhan:*",
            "Resource": "acs:viapi-imageenhan:*:*:*"
        },
        {
            "Effect": "Allow",
            "Action": "viapi-imagerecog:*",
            "Resource": "acs:viapi-imagerecog:*:*:*"
        },
        {
            "Effect": "Allow",
            "Action": "viapi-imageseg:*",
            "Resource": "acs:viapi-imageseg:*:*:*"
        },
        {
            "Effect": "Allow",
            "Action": "viapi-imageaudit:*",
            "Resource": "acs:viapi-imageaudit:*:*:*"
        },
        {
            "Effect": "Allow",
            "Action": "viapi-ocr:*",
            "Resource": "acs:viapi-ocr:*:*:*"
        },
        {
            "Effect": "Allow",
            "Action": "viapi-facebody:*",
            "Resource": "acs:viapi-facebody:*:*:*"
        },
        {
            "Effect": "Allow",
            "Action": "viapi-objectdet:*",
            "Resource": "acs:viapi-objectdet:*:*:*"
        },
        {
            "Effect": "Allow",
            "Action": "viapi-goodstech:*",
            "Resource": "acs:viapi-goodstech:*:*:*"
        },
        {
            "Effect": "Allow",
            "Action": "oss:*",
            "Resource": [
                "acs:oss:*:*:wb-case-showroom",
                "acs:oss:*:*:wb-case-showroom/*"
            ]
        }
    ]
}

环境变量替换成自己的真实内容

AKID=你自己的可控的AccessKeyID信息
AKSK=你自己的可控的AccessKeySecret信息
REGION=你的OSS所在的Region
OSSBUCKET=你的OSS Bucket
OSSDIR=你的OSS Bucket 里用来上传文件的目录