垃圾分类

Quick Start

  • 本示例演示了基于 OSS 浏览器端文件直传的能力
  • 本示例演示了基于 Python 语言开发调用阿里云视觉智能服务的能力

创建应用

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

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

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

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

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

image.png

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

    1. 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设置)。
  1. {
  2. "Version": "1",
  3. "Statement": [
  4. {
  5. "Effect": "Allow",
  6. "Action": "viapi-imageenhan:*",
  7. "Resource": "acs:viapi-imageenhan:*:*:*"
  8. },
  9. {
  10. "Effect": "Allow",
  11. "Action": "viapi-imagerecog:*",
  12. "Resource": "acs:viapi-imagerecog:*:*:*"
  13. },
  14. {
  15. "Effect": "Allow",
  16. "Action": "viapi-imageseg:*",
  17. "Resource": "acs:viapi-imageseg:*:*:*"
  18. },
  19. {
  20. "Effect": "Allow",
  21. "Action": "viapi-imageaudit:*",
  22. "Resource": "acs:viapi-imageaudit:*:*:*"
  23. },
  24. {
  25. "Effect": "Allow",
  26. "Action": "viapi-ocr:*",
  27. "Resource": "acs:viapi-ocr:*:*:*"
  28. },
  29. {
  30. "Effect": "Allow",
  31. "Action": "viapi-facebody:*",
  32. "Resource": "acs:viapi-facebody:*:*:*"
  33. },
  34. {
  35. "Effect": "Allow",
  36. "Action": "viapi-objectdet:*",
  37. "Resource": "acs:viapi-objectdet:*:*:*"
  38. },
  39. {
  40. "Effect": "Allow",
  41. "Action": "viapi-goodstech:*",
  42. "Resource": "acs:viapi-goodstech:*:*:*"
  43. },
  44. {
  45. "Effect": "Allow",
  46. "Action": "oss:*",
  47. "Resource": [
  48. "acs:oss:*:*:wb-case-showroom",
  49. "acs:oss:*:*:wb-case-showroom/*"
  50. ]
  51. }
  52. ]
  53. }

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

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