【大模型】使用llamafactory 训练 qwen2.5-VL 的目标检测任务

【大模型】使用llamafactory 训练 qwen2.5-VL 的目标检测任务
前言

截止到目前,目标检测的功能还是yolo模型落地性更强。但大模型也已经全面开花,所以也尝试下使用大模型来完成目标检测的训练,看看其效果如何,看看它在目标检测上有怎样的优势。


本次选用qwen2.5-VL,一开始使用github上阅读性强的工程训练,总觉得差些意思。
于是决定自己手搓个大模型训练推理工程,emm…,预测效果也是差强人意。
兜兜转转还是使用个高star的工程,先跑通得到想要的效果。后面再阅读核心代码掌握大模型训练过程吧
一 llama factory的部署

【大模型】LLaMA-Factory的环境配置、微调模型与测试 的第二章节,已经介绍了工程安装步骤,整个过程比较流畅。(其余章节介绍了在文本上的大模型微调的过程)
二 llama factory的配置文件介绍

github上给出的训练命令:

以此为切入点,来看看训练自己模型时需要关注的内容,这里先陈列出examples/qwen2_5vl_lora_sft.yamldata/mllm_demo.jsonl2.1 配置文件 【qwen2_5vl_lora_sft.yaml】

该文件中配置了大模型训练过程中所有的参数,包括:model 模型的选择与配置、method 训练方式、dataset 数据集、output 训练时输出信息、train 训练参数。


现阶段要跑通工程需要关注的有:model、datasetmodel 模型的设置
【examples/qwen2_5vl_lora_sft.yaml】 中的 model_name_or_path设置为自己微调的大模型名称,工程会自动从huggingface中拉取模型。但这种方式不建议,网络限制和不稳定等原因,会让下载过程很不稳定。设置为已经下载到本地大模型的绝对路径。该方式需要提前将大模型下载下来对应文件【data/dataset_info.json】的 mllm_demo,内容如下:2.2 数据集配置文件 【data/mllm_demo.json】&【data/dataset_info.json】

data/mllm_demo.json 最小单元内容如下:

对应 data/dataset_info.json 内容如下:

这两个文件中,设置的变量命名是有对应性的。对应效果如下图所示:图片上半部分为dataset_info.json 的内容,下半部分为 mllm_demo.json的内容。相同颜色的框内的变量命名一定是要一致的。

dataset数据集的关联 &&【data/dataset_info.json
【examples/qwen2_5vl_lora_sft.yaml】 中的 dataset: mllm_demo

...{"mllm_demo":{"file_name":"mllm_demo.json", # 数据文件 "formatting":"sharegpt", # 数据格式 "columns":{"messages":"messages","images":"images"},"tags":{"role_tag":"role","content_tag":"content","user_tag":"user","assistant_tag":"assistant"}},}
三 使用llamafacotry训练目标检测3.1 qwen2.5-VL-3B 的下载

使用modelscope 下载qwen2.5-VL-3B模型首先确定虚拟环境中安装了modelscope

本人尝试用的下载方式为图中圈出的两种3.2 训练数据的格式转换

已有的目标检测框保存的格式为labelme的json格式。现在需要将该种标签,转换成与mllm_demo一致的数据格式。
一般的数据处理,仅在生成训练时需要的jsonl 时,使用官方提供的smart_resize 获取图片resize后应该有的尺寸,使用该尺寸处理检测框,无需resize图片。图片的resize操作,放在工程的图像预处理中。
但这里为了尽可能减少出错的可能性,同时处理了图片和标签,将训练的图片和标签一开始就对齐,保存到新的路径下。

图像与边界框的协同处理】Qwen2.5-VL使用Vision Transformer架构需要将图片分割成28×28的patch输入尺寸必须是28的倍数固定尺寸便于批处理避免内存溢出(通过max_pixels限制)避免太小影响效果(通过min_pixels保证)保持空间关系相对位置不变:如果原始框在图片中心,缩放后仍在中心相对大小不变:框与图片的比例关系保持不变注意:由于需要同时满足"能被28整除"和"保持宽高比"这两个要求,在实际操作中存在内在矛盾。当原始图片尺寸不是28的倍数时,完美保持宽高比在数学上是不可能的。因此,smart_resize函数采取了一种近似保持的策略:
1. 分别调整:将高度和宽度分别四舍五入到最接近的28的倍数
2. 轻微形变:接受由此产生的轻微纵横比变化(通常在1-3%范围内)
3. 权衡选择:相较于填充法(增加无效像素)或裁剪法(丢失图像信息),这种轻微形变是更好的权衡这种处理在保持图像主要内容不变的同时,确保了模型输入要求关键注意事项a 坐标系统:始终是绝对像素坐标,不是相对坐标(百分比)b 舍入处理:使用round()四舍五入,可能引入1像素误差c 边界保护:防止坐标超出图像边界d 保持有效性:确保转换后仍然是有效的矩形(x2≥x1, y2≥y1)


为了工程的可观整洁,在根目录创建文件夹【LL_own】。
创建数据处理脚本【LL_own/data_deal.py】,在实验阶段,尽可能的保持问题可控性,我将图片resize到固定的、模型可接受的尺寸,同时将标签同等映射处理。具体实现如下:

生成文件【LL_own/qwen_det2/train.jsonl】【LL_own/qwen_det2/resized_imgs/*】jsonl 文件可用于模型训练。


生成的数据结束后,进行可视化】代码如下3.3 配置文件的修改

如第二章节介绍,
我们需要修改两个文件内的配置。3.4 开启微调训练

【data/dataset_info.json】

...,"train_det":{"file_name":"/home/LL/workfile_2026/12-QwenVL/LLaMA-Factory/LL_own/qwen_det2/train.jsonl","formatting":"sharegpt","columns":{"messages":"messages","images":"images"},"tags":{"role_tag":"role","content_tag":"content","user_tag":"user","assistant_tag":"assistant"}}}

【examples/train_lora/qwen2_5vl_lora_sft.yaml】
复制文件:

cp examples/train_lora/qwen2_5vl_lora_sft.yaml examples/train_lora/qwen2_5vl_own.yaml 

修改文件:

### modelmodel_name_or_path: /home/LL/llm_models/Qwen2.5-VL/Qwen/Qwen2___5-VL-3B-Instruct image_max_pixels:262144video_max_pixels:16384trust_remote_code:true### methodstage: sft do_train:truefinetuning_type: lora lora_rank:8lora_target: all ### datasetdataset: train_det template: qwen2_vl cutoff_len:2048max_samples:20000# 注意:该参数会限制训练样本数量overwrite_cache:truepreprocessing_num_workers:16dataloader_num_workers:4### outputoutput_dir: ./LL_own/save/train_detect_3B # 注意:根据自己实际情况修改logging_steps:10save_steps:500plot_loss:trueoverwrite_output_dir:truesave_only_model:falsereport_to: none # choices: [none, wandb, tensorboard, swanlab, mlflow]### trainper_device_train_batch_size:8# 注意:符合自己的显存大小gradient_accumulation_steps:8learning_rate:1.0e-5# 注意:学习率根据自己实际情况修改num_train_epochs:6.0lr_scheduler_type: cosine warmup_ratio:0.1bf16:trueddp_timeout:180000000resume_from_checkpoint:null### eval# val_size: 0.1# per_device_eval_batch_size: 1# eval_strategy: steps# eval_steps: 500

纵横比不变:不会发生形变


计算效率考虑

# 约束2: 像素总数在指定范围内 min_pixels =56×56=3,136 像素 max_pixels =14×14×4×1280=1,003,520 像素 # 14×14是patch网格,4是某种设计参数,1280是模型维度 检查像素数:644×420=270,480 像素,在 3136 和 1003520之间 最终尺寸:644×420 像素 

模型输入要求

# 约束1: 能被factor整除。调整后的尺寸必须是28的倍数# 这是因为Vision Transformer使用28×28的patch# new_height % 28 == 0、new_width % 28 == 0round(640/28)×28=23×28=644(宽度) round(428/28)×28=15×28=420(高度) 

方式二:

from modelscope.hub.snapshot_download import snapshot_download # 定义模型ID和本地目标路径 model_id ='qwen/Qwen2.5-VL-3B-Instruct' local_dir ='~/llm_models/Qwen2.5-VL'# 下载模型 model_dir = snapshot_download(model_id, cache_dir=local_dir, revision='master')print(f"模型已下载至: {model_dir}")

方式一:

modelscope download --model Qwen/Qwen2.5-VL-3B-Instruct --local_dir [本地下载路径]

modelscope官网 搜索qwen2.5-VL,最终找到界面如下。

在这里插入图片描述


四 训练好的模型的推理

训练结束后,得到lora模型,为了方便后续的使用,所以实现了脱离llamafactory的推理。图片的resize送进大模型推理预测结果解析检测框的反向映射

可得到正确的检测结果。
五 其他

模型合并、合并后的推理,都比较简单,就不记录了。

Read more

微信正式接入 OpenClaw:12 亿用户的 AI Agent 入口,来了

微信正式接入 OpenClaw:12 亿用户的 AI Agent 入口,来了

微信正式接入 OpenClaw:12 亿用户的 AI Agent 入口,来了 导语 2026 年 3 月 22 日,一条消息同时出现在腾讯官网和央视新闻:微信正式接入 OpenClaw。 不是第三方 hack,不是灰产套壳,是微信官方推出的插件——“ClawBot”,让用户在微信聊天界面直接与 AI 助手"龙虾"对话。 这条新闻的信息量,远比表面看起来大得多。 过去三个月,我写了 OpenClaw 的爆火逻辑、安全风险、办公实战、产品对比。在这个系列里,我始终有一个判断: OpenClaw 最大的瓶颈,不是技术,不是模型,而是入口。 一个运行在本地终端的 AI Agent,哪怕功能再强,

2026年3月20日技术洞察:AI编程的现实与未来,从SWE-bench到AI面试官

嘿,各位小伙伴们,早上好!今天咱们来聊聊AI编程这个越来越"热"的话题。不知道你们有没有发现,现在不管是写代码、面试还是做代码审查,AI的影子越来越多了?今天我就给大家整理了一波最新的技术资讯,一起来看看2026年的AI编程世界变成啥样了。 今日技术资讯速递 1. SWE-bench评测:谁是真正的代码王者? 来源:ZEEKLOG《2026大模型选型指南:从SWE-bench评测看真相》 最近SWE-bench的评测结果出来了,这可是衡量大模型代码能力的"金标准"。你知道它跟传统的代码评测有啥不一样吗?SWE-bench测的是真实软件工程的完整闭环——从理解bug描述,到在几万行的代码库里定位问题,再到编写补丁修改代码,最后还要通过所有测试、不引入新bug。 2026年1月的最新成绩单: * Claude Opus 4.5:80.9% ✅(目前唯一突破80.9%的模型) * GPT-5.2:80.0% ✅(紧追不舍,数学推理能力拉满)

PentAGI-(AI自动化渗透)Docker环境部署

PentAGI-(AI自动化渗透)Docker环境部署

一、 深度解构:什么是 PentAGI? PentAGI 是由 VXControl 团队开发的一款革命性开源安全项目。它代表了 AI 与网络安全 深度融合的最高水准,旨在打造一个能够自主执行任务的“数字黑客助手”。 1. 为什么它如此强大? 不同于传统的扫描器(如 Nessus 或 OpenVAS),PentAGI 的核心是一个基于 LLM(大语言模型) 的决策引擎。它不仅能发现漏洞,更重要的是它能“理解”漏洞。 * • 自主推理:它能像人类渗透测试专家一样,根据上一步的扫描结果(如端口开放情况)动态推导下一步的攻击路径。 * • 工具编排:它能自主驱动并联动数百个安全工具(如 Nmap、Sqlmap、Nuclei、Metasploit 等),实现真正的自动化闭环。 * • 长效记忆:集成 pgvector 向量数据库,让 AI

BiliTools AI视频总结功能完整教程:如何快速提取B站视频核心内容

你是否曾经在B站上看到一段精彩的教程视频,却因为没有时间完整观看而错过了重要知识点?或者作为内容创作者,需要快速分析同类视频的结构和亮点?BiliTools的AI视频总结功能正是为你量身打造的智能解决方案,它能将冗长的视频内容转化为精炼的结构化摘要,让你在几分钟内掌握视频精髓。 【免费下载链接】BiliToolsA cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持视频、音乐、番剧、课程下载……持续更新 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools 面对海量视频内容,你的痛点在哪里? 在信息爆炸的时代,B站每天产生数以万计的视频内容。作为用户,你可能会遇到这些典型困境: 内容过载的烦恼 * 收藏夹里堆满了"稍后观看"却从未打开的视频 * 想要学习专业知识却苦于没有时间完整观看 * 需要快速了解多个相关视频的核心观点 效率低下的困扰 * 手动记录视频要点耗时耗力 * 无法快速定位到感兴趣的时间片段 * 难以系统化整理视频知识体系 BiliTool