基于图片编码的垃圾图片过滤方法转让专利

申请号 : CN201010104138.8

文献号 : CN101794378B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 徐从富陈雅芳

申请人 : 浙江大学

摘要 :

本发明公开了一种基于图片编码的垃圾图片过滤方法。其步骤如下:1)使用Base64对垃圾图片进行编码,将图片转换为图片文本;2)通过N-gram对编码后的图片文本分词,提取图片特征;3)根据分词得到的图片特征信息,利用Binary Feature将图片表示成Boolean形式的特征向量;4)利用LIBLINEAR工具包训练SVM分类器,对垃圾图片进行分类,判断图片是否为垃圾图片。本发明采用的Base64编码是一种常用的网络数据传输编码格式,能够很方便、快速地将图片等多媒体数据文本化,取代提取图片复杂的内嵌或色彩信息的方法,能更有效地表示图片的特征;同时,根据Binary Feature形式的图片向量通过使用少量参数训练得到的SVM模型,能够在多样本数目和高维数特征的数据集中得到很高的分类准确率。

权利要求 :

1.一种基于图片编码的垃圾图片过滤方法,包括以下几个步骤:

1)利用Base64对图片进行编码,将图片转换成文本形式,得到图片文本;

2)使用Trigram对编码后的图片文本进行分词,提取图片特征集;

3)将步骤2)中提取出的图片特征集作为图片的特征,根据图片的特征空间,采用Binary Feature把图片表示成一个Boolean特征向量,重复步骤1)~步骤3),生成Boolean特征向量集;

4)利用LIBLINEAR工具包,使用Boolean特征向量集训练SVM分类器,得到图片的分类结果;

所述的图片的特征空间是指预先生成的图片数据集的特征集:使用图片数据集,采用Trigram切分图片文本,重复步骤1)和步骤2),得到图片数据集Trigram形式的特征集,构成图片的特征空间。

2.根据权利要求1所述的一种基于图片编码的垃圾图片过滤方法,其特征在于所述的利用Base64对图片进行编码,将图片转换成文本形式,得到图片文本步骤为:使用Base64编码将原始图片转换为Base64文本形式,将图片作为文本进行处理,每种类型的图片都有其特殊的编码规则,Base64就是根据不同类型图片的特定编码规则将图片编码为文本。

3.根据权利要求1所述的一种基于图片编码的垃圾图片过滤方法,其特征在于所述的使用Trigram对编码后的图片文本进行分词,提取图片特征集步骤为:使用Trigram对编码后的图片文本进行分词,得到分词后的Trigram形式的图片文本信息,每个互异的Trigram为一个图片特征,构成图片的特征集。

4.根据权利要求1所述的一种基于图片编码的垃圾图片过滤方法,其特征在于所述的利用LIBLINEAR工具包,使用Boolean特征向量集训练SVM分类器,得到图片的分类结果步骤为:采用LIBLINEAR工具包,使用步骤3)得到的图片的Boolean特征向量集作为训练数据集输入,调整SVM分类器的训练参数,判断图片是垃圾图片还是正常图片。

说明书 :

基于图片编码的垃圾图片过滤方法

技术领域

[0001] 本发明涉及垃圾图片过滤方法,尤其涉及一种基于图片编码的垃圾图片过滤方法。

背景技术

[0002] 近年来,传统的基于内容的垃圾邮件过滤技术已经能够高效地拦截垃圾邮件,因此垃圾邮件制造者将广告信息嵌入到图片中来躲避基于文本的过滤系统的检测。这种垃圾图片与传统的文本型垃圾邮件相比占用了更多的网络带宽和存储资源。
[0003] 当前的垃圾图片过滤技术主要分为两大类:提取图片内嵌文本来分类垃圾图片和通过分析图片文件、边缘、色彩等属性作为图片的特征来分类垃圾图片。两种方法虽然都能识别出一定的垃圾图片,但第一种方法中提取图片文本的过程十分费时,第二种方法得到的垃圾图片分类结果具有较低的召回率。N-gram是一种广泛应用于文本分类和自然语言处理等领域的特征提取方法,能够快速、高效地提取特征,3-gram通常被称为Trigram。
[0004] 本发明提出一种无需提取垃圾图片内嵌文字,无需检测图片文件、色彩、边缘属性,通过Base64编码方法编码图片,将图片转换为文本形式,采用Trigram分词,快速完成图片的特征提取,并采用Binary Features来表示图片特征,生成特征向量,通过训练SVM能达到很高的分类准确率。

发明内容

[0005] 本发明的目的是克服现有技术的不足,提供一种基于图片编码的垃圾图片过滤方法。
[0006] 基于图片编码的垃圾图片过滤方法,包括以下几个步骤:
[0007] 1)利用Base64对图片进行编码,将图片转换成文本形式,得到图片文本;
[0008] 2)使用Trigram对编码后的图片文本进行分词,提取图片特征集,;
[0009] 3)将步骤2)中提取出的图片特征集作为图片的特征,根据图片的特征空间,采用Binary Feature把图片表示成一个Boolean特征向量,重复步骤1)~步骤3),生成Boolean特征向量集;
[0010] 4)利用LIBLINEAR工具包,使用Boolean特征向量集训练SVM分类器,得到图片的分类结果。
[0011] 所述的利用Base64对图片进行编码,将图片转换成文本形式,得到图片文本步骤为:使用Base64编码将原始图片转换为Base64文本形式,将图片作为文本进行处理,每种类型的图片都有其特殊的编码规则,Base64就是根据不同类型图片的特定编码规则将图片编码为文本。
[0012] 所述的使用Trigram对编码后的图片文本进行分词,提取图片特征集步骤为:使用Trigram对编码后的图片文本进行分词,得到分词后的Trigram形式的图片文本信息,每个互异的Trigram为一个图片特征,构成图片的特征集。
[0013] 所述的图片的特征空间是指预先生成的图片数据集的特征集:使用图片数据集,采用Trigram切分图片文本,重复步骤1)和步骤2),得到图片数据集Trigram形式的特征集,构成图片的特征空间。
[0014] 所述的利用LIBLINEAR工具包,使用Boolean特征向量集训练SVM分类器,得到图片的分类结果步骤为:采用LIBLINEAR工具箱,使用步骤3)得到的图片的Boolean特征向量集作为训练数据集输入,调整SVM分类器训练参数训练分类器,判断图片是垃圾图片还是正常图片。
[0015] 本发明与现有技术相比具有的有益效果:
[0016] 1)提出一种对图片编码来预处理图片的方法。Base64编码是一种广泛用于网络数据(特别是电子邮件)传输的编码方法,使用“A-Z”,“a-z”,“0-9”,“+”,“/”共64个ASCII字符以及一个后缀字符“=”来编码数据。采用编码的方法来预处理图片,比其他方法(如图片转换,提取图片中内嵌的文字等)更有效、方便地表示图片。
[0017] 2)提出一种编码图片,将图片转换为文本提取图片特征的方法,使用Trigram来切分图片文本,每个不同的Trigram都作为一个特征,避免了提取图片中内嵌的文字作为图片特征、计算图片灰度值、色彩属性等特征提取方法费时、偏差较大等效率低的问题。
[0018] 3)提出一种改进的特征值表示方法,引入Binary Feature来表示图片的特征,可以获得更好的分类效果。

附图说明

[0019] 图1是基于图片编码的垃圾图片过滤方法的流程图;
[0020] 图2是Base64编码的基本原理;
[0021] 图3是Base64编码字符检索表;
[0022] 图4是Base64编码图片文件类型示意图;
[0023] 图5是GIF格式垃圾图片及其Base64编码(前2000个字符串)示意图。

具体实施方式

[0024] 基于图片编码的垃圾图片过滤方法,包括以下几个步骤:
[0025] 1)利用Base64对图片进行编码,将图片转换成文本形式,得到图片文本;
[0026] 2)使用Trigram对编码后的图片文本进行分词,提取图片特征集,;
[0027] 3)将步骤2)中提取出的图片特征集作为图片的特征,根据图片的特征空间,采用Binary Feature把图片表示成一个Boolean特征向量,重复步骤1)~步骤3),生成Boolean特征向量集;
[0028] 4)利用LIBLINEAR工具包,使用Boolean特征向量集训练SVM分类器,得到图片的分类结果。
[0029] 所述的利用Base64对图片进行编码,将图片转换成文本形式,得到图片文本步骤为:使用Base64编码将原始图片转换为Base64文本形式,将图片作为文本进行处理。每种类型的图片都有其特殊的编码规则,Base64就是根据不同类型图片的特定编码规则将图片编码为文本。
[0030] 所述的使用Trigram对编码后的图片文本进行分词,提取图片特征集步骤为:使用Trigram对编码后的图片文本进行分词,得到分词后的Trigram形式的图片文本信息,每个互异的Trigram为一个图片特征,构成图片的特征集。
[0031] 所述的图片的特征空间是指预先生成的图片数据集的特征集:使用图片数据集,采用Trigram切分图片文本,重复步骤1)和步骤2),得到图片数据集Trigram形式的特征集,构成图片的特征空间。
[0032] 所述的利用LIBLINEAR工具包,使用Boolean特征向量集训练SVM分类器,得到图片的分类结果步骤为:采用LIBLINEAR工具箱,使用步骤3)得到的图片的Boolean特征向量集作为训练数据集输入,调整SVM分类器训练参数训练分类器,判断图片是垃圾图片还是正常图片。
[0033] 实施例1:
[0034] 基于图片编码的垃圾图片过滤方法包括以下几个阶段:
[0035] 1)在图片预处理阶段,使用Base64编码图片,将图片转换为文本形式;
[0036] 2)在图片特征提取阶段,使用Trigram分词取代提取图片内嵌文本和分析图片文件、色彩、边缘属性等特征提取方法,简化了特征提取过程,提高了特征提取的效率;
[0037] 3)在图片向量化阶段,使用Binary Feature将图片特征表示成一个固定长度的Boolean特征向量;
[0038] 4)在图片分类阶段,使用图片特征向量训练SVM分类器,对图片打分预测,得到分类结果;
[0039] 5)在分类结果评测阶段,使用准确率和垃圾邮件召回率评测分类性能,检测本方法的有效性。
[0040] 实施例2:
[0041] 图1描述了本方法的处理流程,分为图片转换,图片特征提取,图片向量化及训练分类器分类垃圾图片四个步骤。
[0042] 1)图片转换:使用Base64编码将原始图片转换为Base64文本形式。每种类型的图片都有其特殊的编码规则,以GIF(Graphics Interchange Format)类型为例,GIF编码规则定义了详细的GIF数据形式。每个GIF图片以一个固定长度的文件头(通常为“GIF89a”或“GIF87a”)开始,这个文件头定义了图片的版本号;紧接着是定义图片大小和其他图片特性的逻辑屏幕标识符(Logical ScreenDescriptor),接下来是一系列定义其他图片信息的数据流。Base64对图片的编码就是根据不同类型图片的特定编码规则进行的。
[0043] 2)图片特征提取:使用Trigram对编码后的图片Base64文本切词,切分后的每个Trigram都作为图片的特征值。
[0044] 3)图片向量化:将步骤2)中得到的图片特征表示为一个固定长度的特征向量。引入Binary Feature,参照特征空间,若该Trigram出现在特征空间中,则特征值对应的相应位置为1;反之置为0。过程结束后便得到一个长度为|特征空间|的Boolean特征向量。
[0045] 4)训练分类器分类垃圾图片:根据步骤3)生成的特征向量集,使用LIBLINEAR工具包训练SVM分类器,分类垃圾图片。训练方法如下:
[0046] train[options]training_set_file[model_file]
[0047] 其中,training_set_file为向量形式的训练集,[options]为训练参数参数,[0048] [model_file]为输出的训练模型。
[0049] 本方法使用的训练参数选项如下:
[0050] -s type:设置slover类型;
[0051] -c cost:设置惩罚因子C;
[0052] -v n:n-折交叉验证模型。
[0053] a)设置训练模型的solver类型为s=5,即L1-regularized L2-loss支持向量集分类模型;
[0054] b)设置惩罚因子c=0.5;
[0055] c)设置n-折交叉验证v=10,10-折交叉验证将训练集随机分成10个子数据集,每次使用1个子数据集作为测试集,其他9个作为训练集;重复10次使得每个子数据集都被测试一次,分类准确率为10次试验的平均值。
[0056] 图2描述了Base64编码的基本原理:Base64编码以3个字节(24位)为一组进行编码,24位二进制字符被分为4组(从左到右顺序划分),每组6个比特位,编码后将输出4个字符;6位比特字符转换成10进制数据,通过查找Base64编码表得到相应的编码字符输出。特别的,注意到Base64以3个字节为单位进行编码,当编码数据最后不足3个字节时,后缀字符串“=”便被添加到编码结果末尾:当只剩2个字节时,在编码字符串末尾添加一个“=”,当只剩1个编码字节时,在末尾添加两个“=”。
[0057] 图3描述了Base64编码字符检索表:通过6位比特位转化而来的十进制数检索Base64编码字符检索表,得到相应的编码字符。
[0058] 图4描述了Base64编码图片文件类型过程:Base64编码图片是根据图片本身的文件类型编码规则进行编码。GIF类型的图片常用的文件头是“GIF89a”或“GIF87a”,下面以“GIF89a”为例进行Base64编码。
[0059] 1)查找ASCII表,将“GIF89a”转换为相应的ASCII数值“71 73 70 56 57 97”;
[0060] 2)把所得的ASCII值转换为二进制形式;
[0061] 3)将步骤2)所得的二进制数按Base64编码规则进行划分,每6位为一组,得到8组6位的二进制编码;
[0062] 4)将步骤3)划分得到的8组6位的二进制编码分别转换为十进制数字;
[0063] 5)在Base64编码字符检索表中查找步骤4)得到的十进制数字,得到8个数字相应的输出结果,即“GIF89a”编码后的Base64字符串为“R01GOD1h”。
[0064] 图5表述了GIF类型的垃圾图片及其编码后的Base64字符串,其中只列出了方法使用到的编码字符串的前2000个字符。