基于Qwen2-VL模型针对 ImageToText 任务进行微调训练 - 数据处理

基于Qwen2-VL模型针对 ImageToText 任务进行微调训练 - 数据处理

flyfish

给定的图像生成一段自然语言描述。它的目标是生成一个或多个句子,能够准确地描述图像中的主要内容、物体、动作、场景等信息。例如,对于一张包含一只狗在草地上奔跑的图像,ImageToText 可能会生成 “一只狗在绿色的草地上快乐地奔跑” 这样的文字描述。

数据集描述

Image-caption task的数据集,包含train和valid
数据集简介
mscoco 2014的image caption数据集。数据集支持的任务
支持image caption任务数据集的格式和结构
数据格式
包含image_id, caption, image等信息。

数据集加载方式

from modelscope.msdatasets import MsDataset
ds = MsDataset.load("coco_2014_caption", namespace="modelscope", split="train")
print(ds[0])

请添加图片描述
生成的数据集格式

[{"id": "identity_12801","conversations": [{"from": "user","value": "/home/sss/datasets/1/coco_2014_caption/467265.jpg"},{"from": "assistant","value": "A group of young people standing in the middle of a street."}]},{"id": "identity_12802","conversations": [{"from": "user","value": "/home/sss/datasets/1/coco_2014_caption/227117.jpg"},{"from": "assistant","value": "Oven light on in a kitchen with wooden countertops. "}]},......

完整代码如下

import os
import pandas as pd
import json
import argparse
from modelscope.msdatasets import MsDatasetclass CocoCaptionProcessor:"""COCO 2014 Caption数据集处理器"""def __init__(self, max_data_number=500, dataset_dir='coco_2014_caption', csv_file='coco2014.csv'):"""初始化CocoCaptionProcessor:param max_data_number: 最大处理的数据量:param dataset_dir: 数据集保存目录:param csv_file: CSV文件路径"""self.max_data_number = max_data_numberself.dataset_dir = dataset_dirself.csv_file = csv_fileself.image_paths = []self.captions = []def download_and_process(self):"""从ModelScope下载并处理COCO 2014 Caption数据集"""if not os.path.exists(self.dataset_dir):ds = MsDataset.load('modelscope/coco_2014_caption', subset_name='coco_2014_caption', split='train')total = min(self.max_data_number, len(ds))os.makedirs(self.dataset_dir, exist_ok=True)for i in range(total):item = ds[i]image_id = item['image_id']caption = item['caption']image = item['image']image_path = os.path.abspath(f'{self.dataset_dir}/{image_id}.jpg')image.save(image_path)self.image_paths.append(image_path)self.captions.append(caption)if (i + 1) % 50 == 0:print(f'Processing {i+1}/{total} images ({(i+1)/total*100:.1f}%)')df = pd.DataFrame({'image_path': self.image_paths,'caption': self.captions})df.to_csv(self.csv_file, index=False)print(f'Data processing completed, processed a total of {total} images.')else:print(f'{self.dataset_dir} directory already exists, skipping data processing.')def generate_conversations_json(self, output_file='coco2014.json', train_ratio=0.8):"""根据CSV文件生成对话格式的JSON文件,并按给定比例分割训练集和验证集"""df = pd.read_csv(self.csv_file)conversations = []for i in range(len(df)):conversations.append({"id": f"identity_{i+1}","conversations": [{"from": "user", "value": df.iloc[i]['image_path']},{"from": "assistant", "value": df.iloc[i]['caption']}]})# 分割训练集和验证集split_index = int(len(conversations) * train_ratio)train_conversations = conversations[:split_index]val_conversations = conversations[split_index:]with open(output_file.replace('.json', '_train.json'), 'w', encoding='utf-8') as f:json.dump(train_conversations, f, ensure_ascii=False, indent=2)with open(output_file.replace('.json', '_val.json'), 'w', encoding='utf-8') as f:json.dump(val_conversations, f, ensure_ascii=False, indent=2)print(f'Generated JSON files for training and validation sets.')if __name__ == "__main__":parser = argparse.ArgumentParser(description="Process COCO 2014 Caption Dataset.",epilog="Example usage: python script.py --max_data_number 100 --dataset_dir ./data --csv_file ./output.csv")# 参数分组,让帮助信息更清晰data_options = parser.add_argument_group('Data Options')data_options.add_argument('--max_data_number', type=int, default=16000, help='Maximum number of data entries to process (default: %(default)s)')data_options.add_argument('--dataset_dir', type=str, default='coco_2014_caption', help='Directory to save the dataset (default: %(default)s)')data_options.add_argument('--csv_file', type=str, default='./coco2014.csv', help='Path to save the CSV file (default: %(default)s)')output_options = parser.add_argument_group('Output Options')output_options.add_argument('--output_file', type=str, default='coco2014.json', help='Base name for output JSON files (default: %(default)s)')output_options.add_argument('--train_ratio', type=float, default=0.8, help='Ratio of data to use for training set (default: %(default)s)')args = parser.parse_args()processor = CocoCaptionProcessor(max_data_number=args.max_data_number,dataset_dir=args.dataset_dir,csv_file=args.csv_file)processor.download_and_process()processor.generate_conversations_json(output_file=args.output_file, train_ratio=args.train_ratio)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/488944.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring Boot整合 RabbitMQ

文章目录 一. 引入依赖二. 添加配置三. Work Queue(工作队列模式)声明队列生产者消费者 四. Publish/Subscribe(发布订阅模式)声明队列和交换机生产者消费者 五. Routing(路由模式)声明队列和交换机生产者消费者 六. Topics(通配符模式)声明队列和交换机生产者消费者 一. 引入依…

谷粒商城—分布式基础

1. 整体介绍 1)安装vagrant 2)安装Centos7 $ vagrant init centos/7 A `Vagrantfile` has been placed in this directory. You are now ready to `vagrant up` your first virtual environment! Please read the comments in the Vagrantfile as well as documentation on…

【考前预习】1.计算机网络概述

往期推荐 子网掩码、网络地址、广播地址、子网划分及计算-CSDN博客 一文搞懂大数据流式计算引擎Flink【万字详解,史上最全】-CSDN博客 浅学React和JSX-CSDN博客 浅谈云原生--微服务、CICD、Serverless、服务网格_云原生 serverless-CSDN博客 浅谈维度建模、数据分析…

计算机视觉与医学的结合:推动医学领域研究的新机遇

目录 引言医学领域面临的发文难题计算机视觉与医学的结合:发展趋势计算机视觉结合医学的研究方向高区位参考文章结语 引言 计算机视觉(Computer Vision, CV)技术作为人工智能的重要分支,已经在多个领域取得了显著的应用成果&…

AI智算-k8s部署大语言模型管理工具Ollama

文章目录 简介k8s部署OllamaOpen WebUI访问Open-WebUI 简介 Github:https://github.com/ollama/ollama 官网:https://ollama.com/ API:https://github.com/ollama/ollama/blob/main/docs/api.md Ollama 是一个基于 Go 语言开发的可以本地运…

PyQt事件机制练习

一、思维导图 二、代码 import sysfrom PyQt6.QtTextToSpeech import QTextToSpeech from PyQt6.QtWidgets import QApplication, QWidget, QLabel, QPushButton, QLineEdit from PyQt6 import uic from PyQt6.QtCore import Qt, QTimerEvent, QTimeclass MyWidget(QWidget):d…

硬件设计 | Altium Designer软件PCB规则设置

基于Altium Designer(24.9.1)版本 嘉立创PCB工艺加工能力范围说明-嘉立创PCB打样专业工厂-线路板打样 规则参考-嘉立创 注意事项 1.每次设置完规则参数都要点击应用保存 2.每次创建PCB,都要设置好参数 3.可以设置默认规则,将…

【计算机学习笔记】GB2312、GBK、Unicode等字符编码的理解

之前编写win32程序时没怎么关注过宽字符到底是个啥东西,最近在编写网络框架又遇到字符相关的问题,所以写一篇文章记录一下(有些部分属于个人理解,如果有错误欢迎指出) 目录 几个常见的编码方式Unicode和UTF-8、UTF-16、…

深入理解 CSS 文本换行: overflow-wrap 和 word-break

前言 正常情况下,在固定宽度的盒子中的中文会自动换行。但是,当遇到非常长的英文单词或者很长的 URL 时,文本可能就不会自动换行,而会溢出所在容器。幸运的是,CSS 为我们提供了一些和文本换行相关的属性;今…

centos9升级OpenSSH

需求 Centos9系统升级OpenSSH和OpenSSL OpenSSH升级为openssh-9.8p1 OpenSSL默认为OpenSSL-3.2.2(根据需求进行升级) 将源码包编译为rpm包 查看OpenSSH和OpenSSL版本 ssh -V下载源码包并上传到服务器 openssh最新版本下载地址 wget https://cdn.openb…

Pull requests 和Merge Request其实是一个意思

Pull requests的定义 在Git中,PR(Pull Request)是一种协作开发的常用方式。它允许开发者将自己的代码变更(通常是一个分支)提交到项目的仓库中,然后请求负责代码审查的人员将这些变更合并到主分支中。通过…

【ubuntu】将Chroma配置为LINUX服务

Chroma是一个轻量级向量数据库。既然是数据库,那么我希望它是能够长时间运行。最直接的方式是配置为service服务。 可惜官方没有去提供配置为服务的办法,而鄙人对docker又不是特别感冒。所以自己研究了下chroma配置为服务的方式。 系统:ubu…

w~深度学习~合集1

我自己的原文哦~ https://blog.51cto.com/whaosoft/12663254 #Motion Plan 代码 github.com/liangwq/robot_motion_planing 轨迹约束中的软硬约束 前面的几篇文章已经介绍了,轨迹约束的本质就是在做带约束的轨迹拟合。输入就是waypoint点list,约束…

机器人构建详解:售前售后服务客服机器人与广告生成机器人的微调数据处理方法

引言 大模型(如BERT、GPT等)在自然语言处理任务中展现了强大的能力,但为了使其更贴合特定应用场景,通常需要进行微调。本文将详细讲解如何为售前售后服务的客服机器人和广告生成机器人准备高质量的微调数据,并通过具体…

cocos中使用SocketIO

Creator版本:v3.8.3 socketIO是socket的一个封装 cocos里集成了websocket但是没有socketIO 下载依赖文件 首先需要下载socketIO代码,版本要和后端保持一致 能npm下载最好npm install socket.io-clientversion(需要指定版本) 但我这一直超时,所以就直接…

AWD学习(二)

学习参考: AWD攻防学习总结(草稿状态,待陆续补充)_awd攻防赛入门-CSDN博客国赛分区赛awd赛后总结-安心做awd混子-安全客 - 安全资讯平台 记第一次 AWD 赛前准备与赛后小结-腾讯云开发者社区-腾讯云 AWD学习笔记 - DiaosSamas Blog…

Java从入门到工作2 - IDEA

2.1、项目启动 从git获取到项目代码后,用idea打开。 安装依赖完成Marven/JDK等配置检查数据库配置启动相关服务 安装依赖 如果个别依赖从私服下载不了,可以去maven官网下载补充。 如果run时提示程序包xx不存在,在项目目录右键Marven->Re…

基于Qwen2-VL模型针对LaTeX OCR任务进行微调训练 - 原模型 多图推理

基于Qwen2-VL模型针对LaTeX OCR任务进行微调训练 - 原模型 多图推理 flyfish 输入 输出 [‘第一张图片是一幅中国山水画,描绘了一座山峰和周围的树木。第二张图片是一张现代照片,展示了一座山峰和周围的自然景观,包括水体和植被。’] fro…

HTML和JavaScript实现商品购物系统

下面是一个更全面的商品购物系统示例,包含新增商品、商品的增加删除以及结算找零的功能。这个系统使用HTML和JavaScript实现。 1.功能说明: 这个应用程序使用纯HTML和JavaScript实现。 包含一个商品列表和一个购物车区域。商品列表中有几个示例商品&a…

Linux网络之“桥接模式”和“NAT模式”配置

介绍虚拟机的“桥接模式”和“NAT模式”配置。 1、“桥接模式”介绍 “桥接模式”将虚拟机的虚拟网络适配器与主机的“物理网络适配器”进行交接,虚拟机中的“虚拟网络适配器”通过主机中的“物理网络适配器”访问外部网络。物理主机的网卡好比是一个“虚拟的交换机…