Kaynağa Gözat

feat: target track

28968 5 ay önce
ebeveyn
işleme
2aa32b6b48

+ 92 - 0
script/sql/postgresql/target_track.sql

@@ -0,0 +1,92 @@
+/*
+ Navicat Premium Data Transfer
+
+ Source Server         : PostgreSql本地
+ Source Server Type    : PostgreSQL
+ Source Server Version : 160004
+ Source Host           : localhost:5432
+ Source Catalog        : taais
+ Source Schema         : public
+
+ Target Server Type    : PostgreSQL
+ Target Server Version : 160004
+ File Encoding         : 65001
+
+ Date: 07/09/2024 11:43:44
+*/
+
+CREATE SEQUENCE public.target_track_id_seq
+    START WITH 1
+    INCREMENT BY 1
+    NO MINVALUE
+    NO MAXVALUE
+    CACHE 1;
+
+
+-- ----------------------------
+-- Table structure for target_track
+-- ----------------------------
+DROP TABLE IF EXISTS "public"."target_track";
+CREATE TABLE "public"."target_track" (
+  "id" "pg_catalog"."int8" NOT NULL DEFAULT nextval('target_track_id_seq'::regclass),
+  "name" "pg_catalog"."varchar" COLLATE "pg_catalog"."default",
+  "status" "pg_catalog"."varchar" COLLATE "pg_catalog"."default",
+  "start_time" "pg_catalog"."timestamp",
+  "end_time" "pg_catalog"."timestamp",
+  "cost_second" "pg_catalog"."int8",
+  "task_type" "pg_catalog"."varchar" COLLATE "pg_catalog"."default",
+  "log" "pg_catalog"."text" COLLATE "pg_catalog"."default",
+  "create_by" "pg_catalog"."int8",
+  "create_time" "pg_catalog"."timestamp" DEFAULT CURRENT_TIMESTAMP,
+  "update_by" "pg_catalog"."int8",
+  "update_time" "pg_catalog"."timestamp" DEFAULT CURRENT_TIMESTAMP,
+  "remarks" "pg_catalog"."varchar" COLLATE "pg_catalog"."default",
+  "del_flag" "pg_catalog"."int2" NOT NULL DEFAULT '0'::smallint,
+  "tenant_id" "pg_catalog"."int8",
+  "version" "pg_catalog"."int4",
+  "input_path" "pg_catalog"."varchar" COLLATE "pg_catalog"."default",
+  "output_path" "pg_catalog"."varchar" COLLATE "pg_catalog"."default" DEFAULT ''::character varying,
+  "input_oss_id" "pg_catalog"."int8",
+  "log_path" "pg_catalog"."varchar" COLLATE "pg_catalog"."default",
+  "yolo_model" "pg_catalog"."varchar" COLLATE "pg_catalog"."default",
+  "tracking_method" "pg_catalog"."varchar" COLLATE "pg_catalog"."default",
+  "imgsz" "pg_catalog"."int8",
+  "conf" "pg_catalog"."float8",
+  "iou" "pg_catalog"."float8"
+)
+;
+COMMENT ON COLUMN "public"."target_track"."id" IS '主键ID';
+COMMENT ON COLUMN "public"."target_track"."name" IS '名称';
+COMMENT ON COLUMN "public"."target_track"."status" IS '任务状态 0未开始 1进行中 2已结束 3 失败';
+COMMENT ON COLUMN "public"."target_track"."start_time" IS '开始时间';
+COMMENT ON COLUMN "public"."target_track"."end_time" IS '结束时间';
+COMMENT ON COLUMN "public"."target_track"."cost_second" IS '耗时';
+COMMENT ON COLUMN "public"."target_track"."task_type" IS '任务类型';
+COMMENT ON COLUMN "public"."target_track"."log" IS '日志';
+COMMENT ON COLUMN "public"."target_track"."create_by" IS '创建人';
+COMMENT ON COLUMN "public"."target_track"."create_time" IS '创建时间';
+COMMENT ON COLUMN "public"."target_track"."update_by" IS '更新人';
+COMMENT ON COLUMN "public"."target_track"."update_time" IS '更新时间';
+COMMENT ON COLUMN "public"."target_track"."remarks" IS '备注';
+COMMENT ON COLUMN "public"."target_track"."del_flag" IS '逻辑删除标志(0代表存在 1代表删除)';
+COMMENT ON COLUMN "public"."target_track"."tenant_id" IS '租户编码';
+COMMENT ON COLUMN "public"."target_track"."version" IS '乐观锁';
+COMMENT ON COLUMN "public"."target_track"."input_path" IS ' 输入路径';
+COMMENT ON COLUMN "public"."target_track"."output_path" IS '输出路径';
+COMMENT ON COLUMN "public"."target_track"."log_path" IS ' 日志路径';
+COMMENT ON COLUMN "public"."target_track"."yolo_model" IS 'yolo模型';
+COMMENT ON COLUMN "public"."target_track"."tracking_method" IS ' 追踪方法';
+COMMENT ON COLUMN "public"."target_track"."imgsz" IS '帧宽度';
+COMMENT ON COLUMN "public"."target_track"."conf" IS ' 置信阈值';
+COMMENT ON COLUMN "public"."target_track"."iou" IS 'iou';
+
+COMMENT ON TABLE "public"."target_track" IS '目标追踪';
+
+-- ----------------------------
+-- Records of target_track
+-- ----------------------------
+
+-- ----------------------------
+-- Primary Key structure for table target_track
+-- ----------------------------
+ALTER TABLE "public"."target_track" ADD CONSTRAINT "target_track_pkey" PRIMARY KEY ("id");

+ 11 - 0
taais-modules/taais-biz/src/main/java/com/taais/biz/controller/DataAugmentationController.java

@@ -35,6 +35,7 @@ import cn.dev33.satoken.annotation.SaCheckPermission;
 import org.apache.commons.compress.archivers.ar.ArArchiveEntry;
 import org.apache.commons.io.IOUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.core.io.FileSystemResource;
 import org.springframework.http.HttpHeaders;
 import org.springframework.http.MediaType;
 import org.springframework.http.ResponseEntity;
@@ -259,6 +260,14 @@ public class DataAugmentationController extends BaseController {
         }
         return CommonResult.success(dataAugmentationService.selectPage(dataAugmentationBo));
     }
+    @SaCheckPermission("demo:dataAugmentation:list")
+    @GetMapping("/targetTrackList")
+    public CommonResult<PageResult<DataAugmentationVo>> targetTrackList(DataAugmentationBo dataAugmentationBo) {
+        if (dataAugmentationBo.getTaskType() == null) {
+            return CommonResult.success(dataAugmentationService.selectPage1(dataAugmentationBo, "targetTrack"));
+        }
+        return CommonResult.success(dataAugmentationService.selectPage(dataAugmentationBo));
+    }
     /**
      * 导出数据增强列表
      */
@@ -364,6 +373,8 @@ public class DataAugmentationController extends BaseController {
             return CommonResult.fail("日志文件" + filePath + "读取失败!");
         }
     }
+
+
     /**
      * 获取算法结果指标
      */

+ 9 - 4
taais-modules/taais-biz/src/main/java/com/taais/biz/service/impl/DataAugmentationServiceImpl.java

@@ -134,7 +134,6 @@ public class DataAugmentationServiceImpl extends BaseServiceImpl<DataAugmentatio
     @Override
     public List<DataAugmentationVo> selectList(DataAugmentationBo dataAugmentationBo) {
         QueryWrapper queryWrapper = buildQueryWrapper(dataAugmentationBo);
-        queryWrapper.orderBy(DATA_AUGMENTATION.CREATE_TIME,Boolean.FALSE);
         return this.listAs(queryWrapper, DataAugmentationVo.class);
     }
 
@@ -147,7 +146,6 @@ public class DataAugmentationServiceImpl extends BaseServiceImpl<DataAugmentatio
     @Override
     public PageResult<DataAugmentationVo> selectPage(DataAugmentationBo dataAugmentationBo) {
         QueryWrapper queryWrapper = buildQueryWrapper(dataAugmentationBo);
-        queryWrapper.orderBy(DATA_AUGMENTATION.CREATE_TIME,Boolean.FALSE);
         Page<DataAugmentationVo> page = this.pageAs(PageQuery.build(), queryWrapper, DataAugmentationVo.class);
         return PageResult.build(page);
     }
@@ -155,7 +153,6 @@ public class DataAugmentationServiceImpl extends BaseServiceImpl<DataAugmentatio
     @Override
     public PageResult<DataAugmentationVo> selectPage1(DataAugmentationBo dataAugmentationBo, String type) {
         QueryWrapper queryWrapper = buildQueryWrapper(dataAugmentationBo);
-        queryWrapper.orderBy(DATA_AUGMENTATION.CREATE_TIME,Boolean.FALSE);
         if ("dataAugmentation".equals(type)) {
             queryWrapper.and(wrapper -> {
                 wrapper.or(orWrapper -> {
@@ -179,6 +176,13 @@ public class DataAugmentationServiceImpl extends BaseServiceImpl<DataAugmentatio
                 });
             });
         }
+        else if ("targetTrack".equals(type)) {
+            queryWrapper.and(wrapper -> {
+                wrapper.or(orWrapper -> {
+                    orWrapper.and(DATA_AUGMENTATION.TASK_TYPE.eq("多目标跟踪"));
+                });
+            });
+        }
 
         Page<DataAugmentationVo> page = this.pageAs(PageQuery.build(), queryWrapper, DataAugmentationVo.class);
         return PageResult.build(page);
@@ -303,9 +307,10 @@ public class DataAugmentationServiceImpl extends BaseServiceImpl<DataAugmentatio
             transmissionObject.setSourcePath(dataAugmentation.getInputPath());
             transmissionObject.setResultPath(dataAugmentation.getOutputPath());
             transmissionObject.setOtherParams(dataAugmentation.getHyperparameterConfiguration());
+            dataAugmentation.setStartTime(new Date());
+            updateById(dataAugmentation);
             HttpResponseEntity responseEntity = sendPostMsg(data_augmentation_start_url, transmissionObject);
             if (responseEntity != null && responseEntity.getStatus() == 200) {
-                dataAugmentation.setStartTime(new Date());
                 dataAugmentation.setStatus(BizConstant.ModelStatus.RUNNING);
                 updateById(dataAugmentation);
                 return CommonResult.success("任务开始成功,请等待完成");

+ 66 - 0
多目标跟踪接口v1.md

@@ -0,0 +1,66 @@
+#### 共享目录
+
+主要用于图片、日志等文件的存放、方便宿主机和各个docker之间的访问,在宿主机上只有算法驱动软件使用该目录下的文件,其他软件不要随意访问/修改/删除
+
+宿主机:/home/ObjectDetection_Web
+
+docker:/home/ObjectDetection_Web
+
+#### 算法运行接口
+
+| 名称   | 内容                                    |
+| ---- | ------------------------------------- |
+| 接口名称 | 调用算法接口                                |
+| 调用协议 | http协议                                |
+| 调用方式 | post                                  |
+| 数据格式 | json                                  |
+| 接口地址 | 127.0.0.1:10029/movt                  |
+| 备注   | 接口地址需要算法自己定义,定义前需要确认系统中是否有重复的接口地址和端口号 |
+| 样例:  |                                       |
+
+```json
+{
+    "bizType": "xxx", 业务类型 // 算法不使用该字段,数据管理后端使用,回调时返回该字段
+    "bizId": 19, 业务id // 算法不使用该字段,数据管理后端使用,回调时返回该字段
+    "logPath": "/xxx/yyy/zzz", //日志地址
+    "sourcePath":"/xxx/xxx/xxx",// 绝对路径,所有算法需要能访问统一的相对路径。图片所在文件夹路径,其中包含所有图片,标注文件与图片文件同名。如果是图片则在该目录的image文件夹下,如果是labels则在labels目录下
+    "resultPath":"/www/eee/rrr",// 绝对路径,所有算法需要能访问统一的相对路径。
+    "otherParams": { // 由算法配置定义
+       # 权重,视频放在sourcePath下,标注后的视频和中间生成的txt放在resultPath下,输出只有视频 
+       # 中间参数
+        # 模型权重
+        "yolo_model": 'yolov8__best.pt',
+        # 跟踪方法
+        "tracking_method": 'bytetrack',
+        # 视频源
+        "source": 'Project_Test.avi',
+        # 帧宽度
+        "imgsz": 960,
+        # 置信阈值
+        "conf": 0.5,
+        # iou
+        "iou": 0.7,
+    }
+}
+```
+
+#### 算法完成回调接口
+
+| 名称   | 内容                               |
+| ---- | -------------------------------- |
+| 接口名称 | 算法完成回调接口                         |
+| 调用协议 | http协议                           |
+| 调用方式 | post                             |
+| 数据格式 | json                             |
+| 接口地址 | localhost:9090/public/taskResult |
+| 备注   | 任务完成后调用的平台服务接口                   |
+| 样例:  |                                  |
+
+```json
+{
+    "status": 200, //状态 200成功,500失败
+    "msg": "xxx错误", // 失败信息
+    "bizType": "xxx", 业务类型 // 算法运行接口入参,原封不动返回
+    "bizId": 19, 业务id // 算法运行接口入参,原封不动返回
+}
+```