# Object_detection_platform **Repository Path**: cnwhuwyc/Object_detection_platform ## Basic Information - **Project Name**: Object_detection_platform - **Description**: 任务导向的多算法目标检测平台,该平台将大量数据利用数据库统一管理,同时针对不同任务设计了快速数据组合方案,并集成了多种目标检测算法,实现了快捷高效的目标检测流程 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-03-05 - **Last Updated**: 2024-05-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Object_detection_platform ## 项目结构 - BACK_END 所有后端代码 - platform_env 项目运行环境(各自创建) - object_detection_algorithms 所有目标检测算法存放的文件夹 - platform_web 后端框架代码 - object_detection 项目配置 - platform_app 程序代码 - migrations 数据库迁移文件 - utils 通用工具包 - task 任务数据集管理部分 - user 用户模块脚本 - ... - FRONT_END 所有前端代码 ## 项目数据文件夹格式 - /home/omen/data/platform_data/ 所有项目数据 - origin_dataset - coco(统一数据集1) - dota(统一数据集2) - ... - instance_dataset (该用户生成的所有数据集) - 1(instance_dataset_id) - train - images - labels(yolo v5注释) - dota_txt(mmrotate注释) - val - images - labels(yolo v5注释) - dota_txt(mmrotate注释) - annotations(存储不同训练的json) - train.json - val.json - script (用户上传的所有脚本,包括官方脚本) - official 官方自用脚本 - user - 1 - type_date_user_name.py - user_data 所有目标检测算法存放的文件夹 - 1 (用户id,该文件夹下包括该用户所有数据) - train (该用户所有训练结果) - 1(train_id)(mmdet版本) - config.py 本次训练的模型配置文件 - instance_config.py 覆盖数据集路径信息后的配置文件 - work_dir 本次训练的结果文件(mmdet生成,包含过程及结果权重、log.json) - weight.pth 预训练权重文件 - log.txt 日志文件(包含形成任务数据集以及训练过程中的错误信息等) - 2(train_id)(yolo版本) - 3 (train_id)(mmrotate版本) - test (该用户所有测试结果) - 1(test_id)(mmdet版本) - log.txt 日志文件 - work_dir mmdet生成的文件 - eval.json mmdet生成的指标数据 - .bbox.json mmdet生成的预测框 (这里有前缀‘.’) - result.pkl mmdet生成的测试结果 - checkpoint.pth 本次测试使用的权重 - evaluation.json 详细的测试指标数据 - result 测试结果文件夹 ## 有关环境 ### 创建项目内环境 方法一:使用venv ```sh python -m venv env ``` 激活虚拟环境 ```sh #激活 source env/bin/activate # 停止使用 deactivate ``` 方法二:使用conda环境,过程略 ### 配置所需要的包 ```shell pip3 install -r requirements.txt ``` 注:如果在开发过程中,使用到新的安装包,请在requirements.txt中添加。 ## 一个简单的接口编写示例 以下内容如有问题,请随时指出。 ------ 以构建任务数据集为例 本接口属于模块三,任务数据集建立。 1. 文件结构 该模块在文件中的位置为/platform_app/task,其他模块可以按照示例自行创建。 - url.py 路由定义文件 - view.py 视图文件,编写接口的实现逻辑 2. 定义url 模块三接口前缀为task,因此在/object_detection/urls.py中,编写以下内容: ```python # 在总的项目url文件中引入模块三的url文件,做路由分发。 from platform_app.task import url as taskUrl urlpatterns = [ # 模块三:任务数据集建立 path('task/', include(taskUrl)), ] ``` 以上内容一个模块只定义一次。 在task/url.py中,导入视图文件view.py,并在urlpatterns中加入一行: ```python path('task_dataset_create',view.create) ``` 当URL符合第一个参数时,执行视图文件中的create函数。 3. 编写接口业务逻辑 在task/view.py中,编写create函数。 ```python from platform_app.utils.Code import StatusCode # 本接口请求使用POST方法 @api_view(['POST']) # 这里是权限验证的装饰器,该模块目前未完成,完成后再添加 # @permission_classes((IsAuthenticated,)) # @authentication_classes((JSONWebTokenAuthentication,)) def create(request): # 接收到的请求消息 # obj = json.loads(request.body) # dataset_type = obj.get('dataset_type', None) dataset_name = request.POST.get('task_name', None) ######### # 具体的业务逻辑代码 ######### # 返回成功的状态码,data数据为空 return JsonResponse({'code': StatusCode.OK.code, 'message': StatusCode.OK.message, 'data': ''}) ``` 如有新的报错: - 在产品前后端交互格式文档中填写新的自定义错误码信息; - 在util/Code.py脚本中,在StatusCode类中添加静态常量,元组类型。如: ```python # 例子 NOT_MATCH_ERROR = (9001, '用户名与密码不匹配') ``` - 在请求返回值中使用。 4. 测试接口 使用工具postman 选择请求方式get/post,地址填写http://主机:端口号/task/task_dataset_create 发送请求时在请求body中选择form-data格式,填写具体的请求json。 填写对应的键值对。 权限认证部分完成后,在authorization中,选择具体的认证方式,并填写token。 返回json显示在Response区域。 5. 数据库查看 可使用navicat连接数据库,查看数据库内具体数据信息。 6. github提交 提交代码至github时,请先pull最新的代码至本地,解决所有的冲突后,再push上传。