CN110717068B - 一种基于深度学习的视频检索方法 - Google Patents
一种基于深度学习的视频检索方法 Download PDFInfo
- Publication number
- CN110717068B CN110717068B CN201910814850.8A CN201910814850A CN110717068B CN 110717068 B CN110717068 B CN 110717068B CN 201910814850 A CN201910814850 A CN 201910814850A CN 110717068 B CN110717068 B CN 110717068B
- Authority
- CN
- China
- Prior art keywords
- video
- model
- network
- training
- resnet
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/70—Information retrieval; Database structures therefor; File system structures therefor of video data
- G06F16/73—Querying
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/70—Information retrieval; Database structures therefor; File system structures therefor of video data
- G06F16/75—Clustering; Classification
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Multimedia (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种基于深度学习的视频检索方法,该方法能通过G网络中的视频输入层以及RseNet的深度学习模型学习到视频的上下文特征,能够提取出可以表达视频类型的特征数,并且经过Hash层转换优化存储空间,使得视频特征存储所占空间极大降低。通过在相应数据集上的实验表明,本发明对比之前的视频检索方法,有较大提升,并且同样数据集占用的存储空间也有较大降低。
Description
技术领域
本发明涉及计算机视觉领域,更具体地,涉及一种基于深度学习的视频检索方法。
背景技术
近年来,随着互联网的快速发展,网络已经成为人们娱乐和获取信息的主要途径,在这个过程中,互联网上积累了大量的视频数据,目前相当成熟的文字检索技术可以帮助人们获取信息,但是对于利用视频去进行检索却还有所欠缺。视频检索技术可以帮助人们查找某个视频相关的其他视频,因此视频检索技术无论是对学术界或者是工业界都表现除了极大的吸引力。
目前的检索技术常见的如文字搜索文字、图片、视频,以及图片搜索图片,但是对于以视频搜索视频的技术还并不完善。本专利基于深度学习的方法,对视频特征进行提取,然后提供给检索用。深度学习的模型在图片领域上的应用比较成熟,但是对于视频领域,由于各种原因,比如视频数据集太大、数据集质量欠缺、模型不足以提取视频特征等因素,导致视频特征提取还不是非常成熟。目前常见的视频特征提取网络有3DConvolution、Two-StreamNetwork、CNN+RNN等。
对于上述一些问题,通过调研后采取了3DConvolution网络,具体是3DResNet,该模型有许多种深度,例如常见的18层、34层、50层、101层、152层等。一般来说,深度越深,越能提取视频的细节特征。但是深度越深也会带来越高的计算开销,对硬件的要求会越高。综合了个因素后,采取了18层的ResNet进行视频的特征提取。经过测试,得出了18层ResNet已经可以达到一个不错的效果了。让深度学习进行学习从而达到对视频特征提取更加敏感,这样最后的分类器的分类也就更加准确。分类更加准确,之后在进行检索的视频相关度就会更高。
发明内容
本发明提供一种基于深度学习的视频检索方法,该方法可实现降低同样数据集占用的存储空间。
为了达到上述技术效果,本发明的技术方案如下:
一种基于深度学习的视频检索方法,包括以下步骤:
S1:建立用于视频特征提取的深度学习网络模型G;
S2:对步骤S1中得到的模型进行训练与测试;
S3:利用S3中得到的弄醒建立用于提供后台接口的进程,提供检索入口以及返回检索结果。
进一步地,所述步骤S1的具体过程是:
S11:建立G网络的第一层视频向量层,将预处理后的每个视频中的每一帧照片表示成一个低纬、稠密的实数向量,在大规模标注照片上预训练好的图片模型Resnet,将整个视频表示成视频向量矩阵X=[x1,…,xt,…,xn],其中n是视频帧数,向量矩阵X的维度是照片预处理大小112*112;
S12:建立G网络的第二层ResNet层,在这一层中让模型学习到整个视频的上下文信息,对于向量X,每一帧图片是向量中的一个元素,第t个帧元素表示为xt,通过ResNet模型后提取到一组设定好的nbit长度的特征向量;
S13:建立G网络的第三层特征向量Hash层,将ResNet输出的特征向量进行Hash转化成0、1值的向量,以此减少存储空间。
进一步地,所述步骤S2的具体过程是:
S21:将数据集分为训练数据以及测试数据;
S22:整体的模型要进行训练,G网络的训练步骤如下:由G网络提取出视频特征,由损失函数L1的最小化来训练G网络模型,训练G网络的参数;
S23:模型的测试步骤为:先过第一遍测试数据集,将测试数据输入到G网络,然后由G网络生成特征,将特征存储到数据库DB1。然后进行第二遍特征mAP计算,将每一个视频的特征与DB1中数据进行距离计算,之后进行mAP计算,具体计算方式是:计算所有视频间的距离,然后按距离从小到大排序,接着判断是否属于同类视频,例如第t个视频特征,如果是则正确数加1,正确数表示为r,然后计算AP即r除以t,把所有视频的AP计算出来后进行求AP总和,并处以视频总数量n,即得到最终结果mAP。
进一步地,所述步骤S3的具体过程是:
S31:将训练后的ResNet模型保存下来;
S32:创建一个后台服务进程,预留视频输入的接口;
S33:通过访问S32中创建的接口,将视频输入进去,之后S32的后台服务进程会先对视频进行预处理,处理成S31的ResNet模型所需要的输入格式,接下来调取S31中保存的ResNet模型,将处理好的视频输入进模型,并得到nbit的特征数。然后经过Hash后调去数据库中存储的视频特征数据进行距离计算,并按小到大进行排序后返回前k个视频,即最相似的前k个视频为检索结果。
进一步地,步骤S12中,特征提取过程如下:先将ResNet模型经过Kinetics视频数据集进行预训练,然后再进行微调,每个视频经过预训练好的ResNet模型后,会生成一组k大小的特征数向量,这个k是指视频有k种分类;然后再经过一个Linear层转换成自定义的n长度的特征数。
进一步地,步骤S22中,G网络的训练过程中,采用交叉熵损失与三元组损失作为损失函数,并且损失值的大小是根据交叉熵损失与三元组损失的总和。训练过程中采用SGD进行优化,采用Margin设置距离间距,防止过拟合。
与现有技术相比,本发明技术方案的有益效果是:
本发明能通过G网络中的视频输入层以及RseNet的深度学习模型学习到视频的上下文特征,能够提取出可以表达视频类型的特征数,并且经过Hash层转换优化存储空间,使得视频特征存储所占空间极大降低。通过在相应数据集上的实验表明,本发明对比之前的视频检索方法,有较大提升,并且同样数据集占用的存储空间也有较大降低。
附图说明
图1为本发明的G网络流程示意图;
图2为本发明的应用流程示意图;
图3为本发明的算法模型完全图。
具体实施方式
附图仅用于示例性说明,不能理解为对本专利的限制;
为了更好说明本实施例,附图某些部件会有省略、放大或缩小,并不代表实际产品的尺寸;
对于本领域技术人员来说,附图中某些公知结构及其说明可能省略是可以理解的。
下面结合附图和实施例对本发明的技术方案做进一步的说明。
实施例1
如图1-3所示,一种基于深度学习的视频检索方法,包括以下步骤:
S1:建立用于视频特征提取的深度学习网络模型G;
S2:对步骤S1中得到的模型进行训练与测试;
S3:利用S3中得到的弄醒建立用于提供后台接口的进程,提供检索入口以及返回检索结果。
进一步地,所述步骤S1的具体过程是:
S11:建立G网络的第一层视频向量层,将预处理后的每个视频中的每一帧照片表示成一个低纬、稠密的实数向量,在大规模标注照片上预训练好的图片模型Resnet,将整个视频表示成视频向量矩阵X=[x1,…,xt,…,xn],其中n是视频帧数,向量矩阵X的维度是照片预处理大小112*112;
S12:建立G网络的第二层ResNet层,在这一层中让模型学习到整个视频的上下文信息,对于向量X,每一帧图片是向量中的一个元素,第t个帧元素表示为xt,通过ResNet模型后提取到一组设定好的nbit长度的特征向量;
S13:建立G网络的第三层特征向量Hash层,将ResNet输出的特征向量进行Hash转化成0、1值的向量,以此减少存储空间。
步骤S2的具体过程是:
S21:将数据集分为训练数据以及测试数据;
S22:整体的模型要进行训练,G网络的训练步骤如下:由G网络提取出视频特征,由损失函数L1的最小化来训练G网络模型,训练G网络的参数;
S23:模型的测试步骤为:先过第一遍测试数据集,将测试数据输入到G网络,然后由G网络生成特征,将特征存储到数据库DB1。然后进行第二遍特征mAP计算,将每一个视频的特征与DB1中数据进行距离计算,之后进行mAP计算,具体计算方式是:计算所有视频间的距离,然后按距离从小到大排序,接着判断是否属于同类视频,例如第t个视频特征,如果是则正确数加1,正确数表示为r,然后计算AP即r除以t,把所有视频的AP计算出来后进行求AP总和,并处以视频总数量n,即得到最终结果mAP。
步骤S3的具体过程是:
S31:将训练后的ResNet模型保存下来;
S32:创建一个后台服务进程,预留视频输入的接口;
S33:通过访问S32中创建的接口,将视频输入进去,之后S32的后台服务进程会先对视频进行预处理,处理成S31的ResNet模型所需要的输入格式。接下来调取S31中保存的ResNet模型,将处理好的视频输入进模型,并得到nbit的特征数。然后经过Hash后调去数据库中存储的视频特征数据进行距离计算,并按小到大进行排序后返回前k个视频,即最相似的前k个视频为检索结果。
步骤S12中,特征提取过程如下:先将ResNet模型经过Kinetics视频数据集进行预训练,然后再进行微调,每个视频经过预训练好的ResNet模型后,会生成一组k大小的特征数向量,这个k是指视频有k种分类;然后再经过一个Linear层转换成自定义的n长度的特征数。
步骤S22中,G网络的训练过程中,采用交叉熵损失与三元组损失作为损失函数,并且损失值的大小是根据交叉熵损失与三元组损失的总和。训练过程中采用SGD进行优化,采用Margin设置距离间距,防止过拟合。
本实施所采用的数据集有两个,一个是用于预训练ResNet模型用的Kinetics,另外一个是用于微调用的UCF101,这两个数据集的视频来源都是Youtube。经过数据预处理之后,每个视频的帧数都是相同的,例如64帧。本发明所使用的数据集基本情况如下表所示:
Dataset | Train | Test |
Kinetics-400 | 206245 | 100000 |
UCF101 | 8320 | 4000 |
G网络的构建:流程图如图1所示。
首先输入一组视频,这组视频中的每一个都会经过预处理,提取出设定的k帧照片,并且每一帧都转换到设定的大小112,即每一个视频都是一个k*112*112的矩阵。将这个矩阵输入到ResNet模型中进行学习。可以得到输出:H=[h1,…,ht,…hn]。这个输出是数据集类别的总数,例如UCF101一共有101类,那么这个输出的长度就是101。接着把这个输出经过Linear转换成设定的48长度的特征。接下来把这组视频按类别进行三元组组合,每个组合是两个同类和一个不同类的视频。最后进行损失计算,然后进行反向传播,即可训练模型。训练完后,把每个视频提取的特征经过Hash层转换后保存在数据库,以提供检索用。
模型训练的具体步骤如下:
首先是G网络的训练。每次训练,输入都是一组视频,例如是x个视频,这x个视频通过G网络得出的x个H特征向量,每个H向量的大小是y,这个y在UCF101数据集是101,然后经过Linear层后得到设定的48长度的特征向量H’,这里k是设定的每个视频预处理的帧数。然后把这x个视频进行三元组组合,接下来把组合好的三元组进行三元组损失计算。另外,这x个视频的特征矩阵H’也会进行交叉熵计算。最后将三元组损失计算结果与交叉熵损失计算结果进行加和,这个和就是最总的损失函数。采用使损失函数最小化的方式训练模型,总损失值=三元组损失函数值+交叉熵损失函数值。训练过程采用SGD优化,Margin间隔防止过拟合。
为了表现本实验的良好效果,本实验还和当前视频检索模型进行比较验证,结果评估指标为均值平均准确率(mAP,meanaverageprecision),均值平均准确率定义为按距离从小到大排序后,计算每个检索到的视频所在位置的预测准确率,后进行总和求平均。然后把所有的查询的样本的平均预测准确率求和取平均。比方法,视频数据库总共有k个视频,一共输入10个视频进行检索计算mAP,那么计算过程为,对于这10个检索的视频,每一个视频进行都与数据库中k个视频进行距离计算,并完成从小到大的排序后,依次计算每个位置的准确率,距离最小为第1个视频,如果预测分类相同,则准确率为1/1=1,距离排序的第2个视频如果预测分类不相同,且第3个视频预测分类相同,则准确率为2/3=0.66,这里的2是到第三个为止正确的数量,3是到第三个视频为止的视频总数,然后依次计算到第k个视频,得到的所有准确率计算总和并除以正确分类的视频数量则可得到平均准确率,按这样的方法把要检索的10个视频的平均准确率都计算出来,再求和除以10,即得到均值平均准确率mAP。实验结果如下:
从结果可以看出我们的发明相较于以前的方法有较大的提升,本发明从视频特征距离差距所产生的检索结果影响这个角度出发,合理的利用了深度学习网络以及特征提取的思路,整体的模型示意图如附图3所示。
相同或相似的标号对应相同或相似的部件;
附图中描述位置关系的用于仅用于示例性说明,不能理解为对本专利的限制;
显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明权利要求的保护范围之内。
Claims (3)
1.一种基于深度学习的视频检索方法,其特征在于,包括以下步骤:
S1:建立用于视频特征提取的深度学习网络模型G;所述步骤S1的具体过程是:
S11:建立G网络的第一层视频向量层,将预处理后的每个视频中的每一帧照片表示成一个低纬、稠密的实数向量,在大规模标注照片上预训练好的图片模型Resnet,将整个视频表示成视频向量矩阵X=[x1,…,xt,…,xn],其中n是视频帧数,向量矩阵X的维度是照片预处理大小112*112;
S12:建立G网络的第二层ResNet层,在这一层中让模型学习到整个视频的上下文信息,对于向量X,每一帧图片是向量中的一个元素,第t个帧元素表示为xt,通过ResNet模型后提取到一组设定好的nbit长度的特征向量;步骤S12中,特征提取过程如下:先将ResNet模型经过Kinetics视频数据集进行预训练,然后再进行微调,每个视频经过预训练好的ResNet模型后,会生成一组k大小的特征数向量,这个k是指视频有k种分类;然后再经过一个Linear层转换成自定义的n长度的特征数;
S13:建立G网络的第三层特征向量Hash层,将ResNet输出的特征向量进行Hash转化成0、1值的向量,以此减少存储空间;
S2:对步骤S1中得到的模型进行训练与测试;所述步骤S2的具体过程是:
S21:将数据集分为训练数据以及测试数据;
S22:整体的模型要进行训练,G网络的训练步骤如下:由G网络提取出视频特征,由损失函数L1的最小化来训练G网络模型,训练G网络的参数;
S23:模型的测试步骤为:先过第一遍测试数据集,将测试数据输入到G网络,然后由G网络生成特征,将特征存储到数据库DB1,然后进行第二遍特征mAP计算,将每一个视频的特征与DB1中数据进行距离计算,之后进行mAP计算;
S3:利用S3中得到的弄醒建立用于提供后台接口的进程,提供检索入口以及返回检索结果。
2.根据权利要求1所述的基于深度学习的视频检索方法,其特征在于,所述步骤S3的具体过程是:
S31:将训练后的ResNet模型保存下来;
S32:创建一个后台服务进程,预留视频输入的接口;
S33:通过访问S32中创建的接口,将视频输入进去,之后S32的后台服务进程会先对视频进行预处理,处理成S31的ResNet模型所需要的输入格式,接下来调取S31中保存的ResNet模型,将处理好的视频输入进模型,并得到nbit的特征数,然后经过Hash后调去数据库中存储的视频特征数据进行距离计算,并按小到大进行排序后返回前k个视频,即最相似的前k个视频为检索结果。
3.根据权利要求2所述的基于深度学习的视频检索方法,其特征在于,步骤S22中,G网络的训练过程中,采用交叉熵损失与三元组损失作为损失函数,并且损失值的大小是根据交叉熵损失与三元组损失的总和,训练过程中采用SGD进行优化,采用Margin设置距离间距,防止过拟合。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910814850.8A CN110717068B (zh) | 2019-08-27 | 2019-08-27 | 一种基于深度学习的视频检索方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910814850.8A CN110717068B (zh) | 2019-08-27 | 2019-08-27 | 一种基于深度学习的视频检索方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110717068A CN110717068A (zh) | 2020-01-21 |
CN110717068B true CN110717068B (zh) | 2023-04-18 |
Family
ID=69209578
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910814850.8A Active CN110717068B (zh) | 2019-08-27 | 2019-08-27 | 一种基于深度学习的视频检索方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110717068B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111563184B (zh) * | 2020-03-25 | 2023-04-18 | 中山大学 | 一种基于深度学习的视频哈希检索表征转换方法 |
CN112269899A (zh) * | 2020-10-20 | 2021-01-26 | 西安工程大学 | 一种基于深度学习的视频检索方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103079117A (zh) * | 2012-12-30 | 2013-05-01 | 信帧电子技术(北京)有限公司 | 视频摘要生成方法和视频摘要生成装置 |
CN107092661A (zh) * | 2017-03-28 | 2017-08-25 | 桂林明辉信息科技有限公司 | 一种基于深度卷积神经网络的图像检索方法 |
CN107229757A (zh) * | 2017-06-30 | 2017-10-03 | 中国科学院计算技术研究所 | 基于深度学习和哈希编码的视频检索方法 |
CN108280233A (zh) * | 2018-02-26 | 2018-07-13 | 南京邮电大学 | 一种基于深度学习的视频gis数据检索方法 |
CN109241317A (zh) * | 2018-09-13 | 2019-01-18 | 北京工商大学 | 基于深度学习网络中度量损失的行人哈希检索方法 |
-
2019
- 2019-08-27 CN CN201910814850.8A patent/CN110717068B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103079117A (zh) * | 2012-12-30 | 2013-05-01 | 信帧电子技术(北京)有限公司 | 视频摘要生成方法和视频摘要生成装置 |
CN107092661A (zh) * | 2017-03-28 | 2017-08-25 | 桂林明辉信息科技有限公司 | 一种基于深度卷积神经网络的图像检索方法 |
CN107229757A (zh) * | 2017-06-30 | 2017-10-03 | 中国科学院计算技术研究所 | 基于深度学习和哈希编码的视频检索方法 |
CN108280233A (zh) * | 2018-02-26 | 2018-07-13 | 南京邮电大学 | 一种基于深度学习的视频gis数据检索方法 |
CN109241317A (zh) * | 2018-09-13 | 2019-01-18 | 北京工商大学 | 基于深度学习网络中度量损失的行人哈希检索方法 |
Also Published As
Publication number | Publication date |
---|---|
CN110717068A (zh) | 2020-01-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11106951B2 (en) | Method of bidirectional image-text retrieval based on multi-view joint embedding space | |
CN110334705B (zh) | 一种结合全局和局部信息的场景文本图像的语种识别方法 | |
CN110909673B (zh) | 一种基于自然语言描述的行人再识别方法 | |
CN104866810B (zh) | 一种深度卷积神经网络的人脸识别方法 | |
CN109993102B (zh) | 相似人脸检索方法、装置及存储介质 | |
CN109271537B (zh) | 一种基于蒸馏学习的文本到图像生成方法和系统 | |
CN110866140A (zh) | 图像特征提取模型训练方法、图像搜索方法及计算机设备 | |
CN101739428B (zh) | 一种对多媒体创建索引的方法 | |
CN110751027B (zh) | 一种基于深度多示例学习的行人重识别方法 | |
CN112949740B (zh) | 一种基于多级度量的小样本图像分类方法 | |
CN110399895A (zh) | 图像识别的方法和装置 | |
CN112651940B (zh) | 基于双编码器生成式对抗网络的协同视觉显著性检测方法 | |
CN110287952A (zh) | 一种维语图片字符的识别方法及系统 | |
CN110717068B (zh) | 一种基于深度学习的视频检索方法 | |
CN116610778A (zh) | 基于跨模态全局与局部注意力机制的双向图文匹配方法 | |
CN112070010B (zh) | 一种联合多损失动态训练策略增强局部特征学习的行人重识别方法 | |
CN111506760B (zh) | 一种基于困难感知的深度集成度量图像检索方法 | |
CN114241191A (zh) | 一种基于跨模态自注意力的无候选框指代表达理解方法 | |
CN115690549A (zh) | 一种基于并联交互架构模型实现多维度特征融合的目标检测方法 | |
CN116796810A (zh) | 一种基于知识蒸馏的深度神经网络模型压缩方法及装置 | |
CN114330514A (zh) | 一种基于深度特征与梯度信息的数据重建方法及系统 | |
CN112528077A (zh) | 基于视频嵌入的视频人脸检索方法及系统 | |
CN110533074B (zh) | 一种基于双深度神经网络的图片类别自动标注方法及系统 | |
CN110334226B (zh) | 融合特征分布熵的深度图像检索方法 | |
CN114168782B (zh) | 一种基于三元组网络的深度哈希图像检索方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |