# Learned Key Shapes for SBIR
**Repository Path**: ThreeAutumns/LearnedKeyShapesforSBIR
## Basic Information
- **Project Name**: Learned Key Shapes for SBIR
- **Description**: No description available
- **Primary Language**: Python
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2021-06-10
- **Last Updated**: 2021-06-10
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# Learned-KeyShapes-for-SBIR
[English](https://github.com/KangCai/Learned-KeyShapes-for-SBIR/blob/master/README.md)
很高兴你发现了这个项目,该项目是对一个论文算法实现的工程,原论文是 "Sketch based Image Retrieval using Learned KeyShapes (LKS)"。欢迎提出任何意见或建议。
---
### 实例
---
### 算法介绍
总体流程如下图所示,
图最上面一排,从 Sketch dataset 到 Sketch Patch Extraction 再到 Keyshape Generation 得到 keyshapes,属于步骤 1,即关键图形模板的生成,
该部分使用的数据集是一个特定的、与应用场景数据无关的简笔画数据集;图下面两排,到KeyShape Detection这一步为止,是根据步骤 1 得到的关键图形模板,
分别对图像和简笔画提取关键图形的过程,属于步骤 2;最后是 LKS-Histogram Computation,即在步骤 2 的基础上计算 LKS 直方图描述子。
**1. 关键图形生成**
这一步重点是提取 DAISY 特征,然后 K 聚类,
**2. 分别对图像和简笔画提取关键图形**
这一步是根据步骤 1 得到的关键图形模块来提取,值得一提的是简笔画可以直接提取,但对于图像,需要先对原始图像提取 sketch token image,然后进一步
设定阈值提取 contour image,如下所示,
提取关键图形的方法是,对 stroke points 提取 DAISY 描述子,然后统计与该描述子距离最近的关键图形,表示形式如下所示,
**3. 在步骤 2 的基础上计算 LKS 直方图描述子**
分三小步,第一小步是按相似度距离给对应的关键图形投票,距离度量采用的是高斯核距离,如下
,投票方式就是简单地对相应的关键图形进行桶投票,如下
;第二小步是将图像划分成网格来进行处理,这一小步跟大多数特征提取方式一样,主要是考虑图像的空间结构;第三小步是将上述特征进行单位归一化,
相似性度量方法不是采用的通常使用的 Minkowski Distance(闵可夫斯基距离,包含一组距离度量方式),包括L1距离(曼哈顿距离)、
L2距离(欧式距离)、切比雪夫距离,而是 Hellinger distance,为了的是消除某些桶上峰值的影响,运算过程是先取的平方根,再算 L2 距离,如下
