Aussie EcoLens: A Multi-Cloud Serverless Wildlife Observation Platform
本页目录· 18 条
Aussie EcoLens:一个多云无服务器野生动物观察平台
截止日期:第 14 周星期一(6 月 8 日 23:55)
1 背景
澳大利亚拥有地球上最独特、最多样化的一些野生动物。一个基于机器学习、由视觉驱动的平台在公民科学中发挥着关键作用,它可以让研究人员、学生和自然爱好者在整个澳大利亚大陆范围内捕捉、记录并识别动物。想想那些被捕捉到的精彩内容:野生动物行动时的惊艳照片、独特的动物叫声录音,以及富有洞察力的行为视频片段。这些都是环境研究的宝库,有助于识别物种、追踪个体、研究行为、监测种群,并最终保护我们的生态系统。
然而,试想一下:如果去年拍摄的一张稀有物种照片被埋在某个人随机的硬盘里,要找到它会有多困难;或者因为一张存储卡损坏,导致一整批重要的视频记录全部丢失。分散在各处的数据很难被使用,容易丢失,也无法被妥善共享。一个良好的存储系统意味着所有内容都安全、已备份,并集中组织在一个统一位置,确保任何需要数据的成员都能高效找到它。由于每个人都查看同一套有组织的数据,项目协作会变得轻松得多,也能确保有价值的信息不会丢失。
本次作业旨在构建一个多云在线存储系统,使用户能够根据自动生成的标签和手动标签来存储、组织和检索媒体文件。本项目的重点是设计一个跨至少两个主要云服务提供商(例如 AWS、GCP/Azure/Oracle)的无服务器应用程序,使客户端能够将其媒体文件(图片和视频)上传到公有云存储中。上传后,应用程序会使用预训练的机器学习模型,根据文件中检测到的物种自动为文件添加标签,自动将文件分类/移动到对应目录,并在数据库中添加一条记录以供搜索。
2 小组作业
大多数软件开发人员在其职业生涯的某个阶段都会在团队中工作。因此,本作业被设计为小组项目,旨在帮助学生体验团队形式的软件开发。学生将以最多 4 人的小组形式合作,实现上述系统。在本作业中,学生需要组织自己的团队以及集体参与方式。课程并没有指定团队负责人,但团队可以建立流程,以便就工作分配达成一致。
理解个人工作之间的依赖关系,以及这些工作如何成功集成,对于本次作业以及一般软件工程项目的成功都至关重要。如果团队遇到任何“问题”,应首先尝试自行解决。如果问题无法解决,请尽快通知教学团队。
本作业的截止日期是固定的,不会因为“特殊考虑”而给予延期(也就是说,个人的特殊考虑或延期不适用于小组)。如果某位组员因为任何原因未能完成其工作,其他组员应接手其任务。我们将评估每位成员在项目中的个人参与情况。如果某位组员没有令人信服的理由却未能完成其任务,无论项目最终是否成功,该成员都可能受到严重扣分处罚。
2.1 作业描述
团队应开发一个多云解决方案,利用多个云服务提供商(例如 AWS、GCP、Oracle 或 Azure)的无服务器计算、RESTful API、存储和数据库服务,构建一个用于自动化野生动物标签标注与查询处理的系统。团队应产出一个解决方案,使终端用户能够将文件上传到云存储桶中。当文件上传到指定存储桶后,一个无服务器函数会被自动触发,使用提供的模型识别文件中的物种,并将检测到的标签列表连同文件的存储 URL 一起存储到一个高可用数据库中。此外,终端用户应能够向 RESTful API 端点提交查询,以搜索已标注标签的文件。
3 身份认证与授权(10%)
安全性是开发云应用程序时最关键的方面之一。当你的应用程序公开暴露在互联网上时,你必须确保端点和资源受到保护,防止未经授权的访问和恶意请求。AWS 通过其 Cognito 服务,提供了一种直接、安全且集中化的方式来保护你的 Web 应用程序。
关于多云的说明: 对于用户身份认证和授权,你必须使用 AWS Cognito。其他服务可以托管在其他云服务中。你可能需要考虑如何安全地传递 AWS Cognito 生成的身份认证令牌,以便授权访问你的第二个云服务提供商上的 API 端点或无服务器函数。
你的应用程序应支持以下工作流程和功能: