# dotnetProject大作业 **Repository Path**: Xirro/dotnet-project-big-assignment ## Basic Information - **Project Name**: dotnetProject大作业 - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2025-03-02 - **Last Updated**: 2025-03-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 2024秋dotnet大作业 本仓库提交dotnet大作业源码 小组成员:汪操、郑贤锐、颜韩博、张锐 ### 项目背景 - 图像文件数据量大 - 管理困难 - 占用存储空间 随着数码摄影的普及,越来越多的用户积累了大量的图像文件。这样不仅占用大量本地空间,并且管理和检索图片十分困难。AImage是一个智能相册项目,旨在利用计算机视觉和图像处理技术,自动化图像的标签生成、分类和搜索,并且将图像存储在云端。帮助用户快速找到相关图像,减少本地存储开销,并提供跨平台的便捷管理体验。 ### 项目目标 - **智能分类** 利用图像识别技术,自动为每张图像生成标签和描述,支持图像的智能分类和快速检索。 - **快速检索** 将用户的输入与数据库中图像标签和描述进行比对,快速检索用户查找的图片。 - **云端存储** 将图片的元数据(标签、描述、ID)存储至云数据库、并将图像数据存储至云服务器 - **跨平台支持** 前端使用Avalonia框架,后端使用.NET Core和EF框架,引用能在Windows、Linux、macOS上运行 - **易于扩展** 前端使用MVVM设计模式,架构上前后端分离,系统能够方便地进行功能扩展或与其他服务进行集成。 ### 项目架构 ![architecture](.\image\architecture.png) ### 用例图 ![user_case](.\image\user_case.png) ### 顺序图 以上传和获取图像描述为例 ![sequence-diagram](.\image\sequence-diagram.png) ### 跨平台部署测试 Window 10和Ubuntu 22都可运行,Ubuntu 22 .NET 9.0环境下成功运行前端Avalonia项目和后端项目 ![cross](.\image\cross.png) ### 项目分工 | **姓名** | **分工** | | :------: | ------------------------------------------------------------ | | 汪操 | Avalonia UI设计、本地缓存设计;
完成数据库访问的Web API (图像删除、检索)
项目架构指导、项目解决方案的寻找和完善
跨平台部署测试
项目汇报、ppt制作 | | 郑贤锐 | 完成图像处理算法的Web API(基于Yolov5和Blip模型)
模型准确度测试 | | 颜韩博 | 部分数据库访问的Web API(图像上传)
数据库表设计 | | 张锐 | 参与前后端对接工作,确保前后端逻辑对接的完善
使用postman测试web api
部分图像处理算法的测试 | ### 项目进度 | **功能** | **完成度** | | -------------------------- | ---------- | | 查看本地图片,获取描述 | 已完成 | | 向云端上传、下载、查询图片 | 已完成 | | 联网查找图片并提供下载选项 | 已完成 | | 查看云端各个分类的所有图片 | 已完成 | | 跨平台测试 | 成功 | ### 可以改进的地方 1.图像数据传输了三次:本地到C#数据库后端、C#后端到python算法服务、C#后端到云服务器进行数据持久化,有一定开销。 - 可以考虑将C#和python的WEB API项目部署到同一物理机,同时将数据持久化放在这台物理机上,减少数据传输开销,还可以考虑学习nginx进行优化。 2.可以添加用户管理功能 ### 运行注意 由于远程服务器和数据库涉及到密码等隐私,已在源代码中删除,如需要运行需要在下面一些文件进行添加 - pyweb-api:连接数据库部分输入云数据库相关条目 - AImage/Models/PexelPageModel.cs:填入自己申请的Pexel API - AImageWebAPI/Controllers/DataBase.cs:填入远程服务器相关信息 - AImageWebAPI/appsetting.json:填入远程数据库相关信息