2025-05-08
Python
00

对三个不同文件夹中的图像进行相似度匹配,并将匹配成功的三张图像(每个文件夹各一张)拼接成一张横向长图保存。以下是详细的功能解析:


核心功能

  1. 图像匹配: • 从三个文件夹(yuantu原图、Effect_ox1效果图1、Effect_pf效果图2)中读取图片。

    • 通过计算图像的均方误差(MSE)衡量相似度,找到每个原图对应的最相似的两张效果图(分别来自两个效果图文件夹)。

    • 使用全局优化算法(迭代移除已匹配的图片)确保匹配的唯一性和最优性。

  2. 图像拼接: • 将匹配成功的三张图片(原图 + 效果图1 + 效果图2)横向拼接成一张长图。

    • 拼接时保持所有图片高度一致,宽度按原始比例缩放。

  3. 结果保存: • 将拼接后的图像保存到save_mse文件夹中,文件名按序号命名(如001.jpg)。

2025-05-08
算法刷题
00

一、补充的5个核心方向

在掌握了算法面试中最常见的几大类题型(如动态规划、DFS/BFS、贪心、字符串、树)之后,还有一些非常重要的补充知识点也常常出现在高频面试题中。以下是五大进阶方向及对应的必刷题目推荐。


2025-05-08
算法刷题
00

树(Tree)结构题目分类与详解

树(Tree) 是算法面试中非常核心的数据结构,广泛涉及遍历、递归、DFS/BFS、二叉搜索树(BST)、平衡树、字典树(Trie)等知识点。本文将对树类常见题型进行系统分类与经典题目解析,帮助你快速掌握解题思路。

2025-05-08
算法刷题
00

字符串算法题目分类与详解

字符串(String) 是算法面试中占比极高的题型,涉及模式匹配、子串/子序列、哈希计数、回文、滑动窗口等多个核心知识点。本文将对字符串常见题型进行系统分类与经典题目解析,帮助你快速掌握解题思路。


2025-05-08
算法刷题
00

贪心算法(Greedy Algorithm)系统分类与经典题型详解

贪心算法(Greedy Algorithm) 是一种在每一步选择中都采取当前状态下最优决策的算法思想,常用于解决最优化问题。其核心在于:局部最优解能否推导出全局最优解。

本文从基础概念到经典题型进行系统分类与解析,涵盖从入门到进阶的所有常见问题。


一、贪心算法的三大核心要素

  1. 贪心选择性质:每一步的局部最优选择能导致全局最优解
  2. 🔁 无后效性:当前的选择不会影响后续子问题的结构
  3. 高效性:时间复杂度通常为 O(n)O(n)O(nlogn)O(n \log n),优于动态规划
2025-05-08
算法刷题
00

广度优先搜索(BFS)系统分类与经典题型详解

广度优先搜索(Breadth-First Search, BFS) 是一种基于队列实现的层次遍历算法,适用于最短路径、状态转移、连通性等问题。其核心思想是“层层扩展”,从起点出发,逐层访问所有可达节点。

本文从基础概念到经典题型进行系统分类与解析,涵盖从入门到进阶的所有常见问题。


一、BFS的三大核心要素

  1. 队列(Queue):存储待访问节点,保证先进先出(FIFO)的遍历顺序
  2. 🧭 已访问标记(Visited):避免重复访问(如哈希表、二维数组)
  3. 🔁 层数统计(Level):记录当前遍历的层数(用于最短路径问题)
2025-05-08
算法刷题
00

深度优先搜索(DFS)系统分类与经典题型详解

深度优先搜索(Depth-First Search, DFS) 是算法中解决树/图遍历、路径搜索、排列组合等问题的核心方法之一。其核心思想是“一条路走到底”的搜索策略,通常通过递归或显式栈实现。

本文从基础概念到经典题型进行系统分类与解析,涵盖从入门到进阶的所有常见问题。


一、DFS的三大核心要素

  1. 递归终止条件:何时结束当前分支的搜索

    示例:越界、找到目标、访问过

  2. 当前层处理:对当前节点或状态的修改

    示例:标记已访问、加入路径

  3. 向子问题递归:进入下一层搜索

    示例:遍历相邻节点、选择下一个数字

2025-05-08
算法刷题
00

动态规划(DP)系统分类与经典题型详解

动态规划(Dynamic Programming, DP) 是算法中解决最优化问题的核心方法之一。其核心思想是将原问题分解为多个重叠子问题,并通过记忆化存储避免重复计算。

本文从基础概念到经典题型进行系统分类与解析,涵盖从入门到进阶的所有常见问题。

2025-05-07
深度学习
00

基本推理

仓库:https://huggingface.co/google/siglip-so400m-patch14-384

下载仓库:

展开代码
./hfd.sh google/siglip-so400m-patch14-384 --local-dir ./google/siglip-so400m-patch14-384

懒得装环境,直接docker:

展开代码
docker run -it \ --gpus '"device=0"' \ -v ./google/siglip-so400m-patch14-384:/google/siglip-so400m-patch14-384 \ -p 8033:8033 \ --shm-size 32g \ kevinchina/deeplearning:llamafactory20250311-3 bash
2025-05-07
深度学习
00

【训练】Qwen2.5VL 多机多卡 Grounding Box定位(1):http://101.126.150.28:7878/post/2067

【训练】Qwen2.5VL 多机多卡 Grounding Box定位(2):http://101.126.150.28:7878/post/2094

之前的相关文章:

【深度学习】LLaMA-Factory微调sft Qwen2-VL进行印章识别

https://www.dong-blog.fun/post/1661

使用LLaMA-Factory微调sft Qwen2-VL-7B-Instruct

https://www.dong-blog.fun/post/1762

构建最新的LLaMA-Factory镜像

https://www.dong-blog.fun/post/1799

关于Grounding 如何不偏移的问题解决

看了一些帖子:

所以有一些关于 Qwen2.5VL Grounding 的结论:

  • 官方微调用的是这样的格式,所以在prompt中也无需特殊的格式/
json
展开代码
[ {"bbox_2d": [x1, y1, x2, y2], "label": "obj_name/description"}, {"bbox_2d": [x1, y1, x2, y2], "label": "obj_name/description"}, {"bbox_2d": [x1, y1, x2, y2], "label": "obj_name/description"}, ]
  • 官方还是这么做了,因为底层对28的切割性质,所以要这么做,不然真会偏一点: 在 Qwen2.5-VL 中,我们首先调整输入图像的大小,以确保其宽高为 28*n,然后使用调整后图像上的绝对坐标作为最终目标。

  • 使用 (左, 上), (右, 下) 坐标,不用归一化到0-1000.

  • 您好,根据您的描述,我怀疑问题出在 Qwen2-VL 和 Qwen2.5-VL 中 bbox 坐标的处理方式不同。具体来说,我们在 Qwen2.5-VL-7B 中现在使用的是绝对坐标,而不是 Qwen2-VL 中使用的相对坐标(后者被缩放到 [0,1000])。 例如,在 Qwen2-VL 中,640x640 图像中 [0, 0, 320, 320] 的边界框用 (0, 0), (500, 500) 表示。但在 Qwen2.5-VL 中,我们直接使用 [0, 0, 320, 320] 或 (0,0),(320,320)。此外,如果在图像增强过程中将图像尺寸调整为 1280x1280,则坐标现在应相应地扩展为 [0, 0, 640, 640]。

    由于 Qwen2.5-VL 使用绝对坐标进行训练,我建议在微调时也使用相同的绝对坐标系。如果您出于某种原因坚持使用相对坐标,可以延长训练时间,看看偏差问题是否会随着训练时间的延长而消失。

    供大家参考,详细坐标流程如下:

    调整图像大小,使高度和宽度为 28*n resized_w, resized_h = smart_resize(img_w, img_h) 相应地改变绝对坐标 new_bbox = bbox / np.array([img_w, img_h, img_w, img_h]) * np.array([resized_w, resized_h, resized_w, resized_h])) 如果使用绝对坐标后仍然观察到明显的 grounding 偏差,则另一个可能的问题在于图像的大小。如果图像非常大或非常小(例如,> 4k 4k 或 < 320 320),则模型很可能会输出有偏差的 bbox 结果。

  • 新版本的transformers才没有rope问题,安装: pip install git+https://github.com/huggingface/transformers