项目实训第9周日志

项目名称:ModuFusion Visionary:实现跨模态文本与视觉的相关推荐

项目目标:
本项目旨在开发一款跨模态交互式应用,用户可以上传图片或视频,并使用文本、点、框等提示,精确分割出图片或视频中指定的物体,或者无提示地分割出所有物体。
基于分割出的物体,用户可以选择生成感兴趣的其他图片或视频。
内置推荐算法可以自动根据分割结果,推荐与之相关的信息。

一、第九周随小组所完成的任务

1.完成了指代性视频物体分割模型MTTR在服务器上的部署

        可接受指定视频和视频中某个物体的文本描述进而分割出所指定的物体,以达到后续的追踪效果。

2.实现MTTR模型的可调用接口

        部分代码如下:

def save_masks_to_video(pred_masks, video_file_path, intermediate_output_path):
    # 打开原始视频文件
    cap = cv2.VideoCapture(video_file_path)
    if not cap.isOpened():
        print("Error opening video file")
        return

    # 获取视频的帧率和帧大小
    fps = cap.get(cv2.CAP_PROP_FPS)
    width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
    height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
    size = (width, height)

    # 使用更兼容的编解码器
    fourcc = cv2.VideoWriter_fourcc(*'XVID')
    out = cv2.VideoWriter(intermediate_output_path, fourcc, fps, size)

    # 预处理掩码数据和读取帧
    sigmoid = torch.nn.Sigmoid()
    time, batch_size, num_queries, H_mask, W_mask = pred_masks.shape

    frame_idx = 0
    while frame_idx < time:
        ret, original_frame = cap.read()
        if not ret:
            break

        # 处理掩码应用于视频帧
        mask = pred_masks[frame_idx, 0, 0]
        mask = sigmoid(mask)
        mask = mask > 0.5
        mask = mask.detach().cpu().numpy().astype(np.uint8)
        mask = cv2.resize(mask, size, interpolation=cv2.INTER_NEAREST)

        color_mask = np.zeros_like(original_frame)
        color_mask[mask == 1] = [0, 255, 0]

        masked_frame = cv2.addWeighted(color_mask, 0.2, original_frame, 0.8, 0)

        out.write(masked_frame)
        frame_idx += 1

    cap.release()
    out.release()
    print("Intermediate video saved at:", intermediate_output_path)

    # 使用 FFmpeg 转换视频格式到 H.264
    convert_video_to_h264(intermediate_output_path, f"H264_{intermediate_output_path}")

3.实现视频物体追踪的功能

        对于用户上传的视频,在用户给出一段文本描述的情况下,可以对视频中指定的物体进行追踪。

4.完成了“图生文”模型(CATR)的部署

        可以根据输入的图片返回一段对该图片的文本描述。

5.完成了“文生图”模型(Stable-Diffusion)的部署

        可以根据文本描述,生成文字描述的对应的图片。

6.实现图片分析与生成的功能

        在CATR和Stable-Diffusion的基础上 ,对于用户上传的图片,先调用CATR对图片内容进行分析,然后降分析的结果传给Stable-Diffusion,然后Stable-Diffusion会根据此描述生成多张新的图片,生成的文字和图片结果都会在前端显示。

二、未来计划

1.适合视频帧定位的模型的探索和视频帧定位的功能实现。

2.对现有的功能进行修改完善。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值