作者:守卫
关键词:图片审核\相似图片审核
在做私域流量或运营时,会征收文案和案例等内容,这时会出现抄袭或盗版等信息,会对审查造成大量影响,目前能解决到的方案只有文字信息等内容,而对于出现相同内容的图片时,就会感觉力不从心,必须要人来完成.
现在有一种方法,虽然不能完全代替人力,但是能完成80%的相似图片识别,进而解决审核人员的时间,将出现相似图片或者盗窃的图片的内容直接驳回,留下系统无法判断的 再交给审核人员进行审核.
这里采用了 百度智能云 的方案进行审核:
逻辑: 将图片 进行百度智能云检测 , 将检测后的数据进行特定的算法进行转换, 再和库中其他的图片数据进行比较,相似度超过70%,我们即可认定为抄袭图片.30%-70%,打上标签未待审核模式,0-30%认定为无相似图片.

注:在做图片处理时,所有数据图片的大小尽量调整成一致的,这里已经通过代码将所有的图片转成360x360的大小进行处理数据,而且 !!!不会修改原图片!!! 可以放心直接复制使用.
from aip import AipImageClassify
from PIL import Image
import base64
""" 你的 APPID AK SK """ #-->根据注册时自己搭建应用获取详细可见下图
APP_ID = '***********'
API_KEY = '********************'
SECRET_KEY = '**********************'
client = AipImageClassify(APP_ID, API_KEY, SECRET_KEY)
""" 读取图片 """
def get_file_content(filePath):
img=Image.open(filePath)
img_temp = img.resize((360,360))
img_temp.save("temp.jpg")
with open("temp.jpg", 'rb') as fp:
return fp.read()
image = get_file_content("") #-->通过流程参数导入想要查询图片的路径名
""" 调用通用物体和场景识别 """
res = client.advancedGeneral(image)打开百度智能云官网 : https://cloud.baidu.com/ ;
鼠标悬浮 产品-->鼠标悬浮 图像技术-->点击 图像识别-->点击 立即使用 -->点击去领取


创建成功后可以 点击应用列表查看三个想要的数值

原因:由于固定文字无法做到算法匹配,如玻璃杯和水杯;因为为了提高匹配的准确度,将所有的字符提取出来并进行合并,最终再转换成base64编码的,其主要目的就是为了进行可以将字符拆开进行匹配.后续也方便进行存放入库.
st = ""
#将数据进行提取拼接
for i in range(res["result_num"]):
st+=res["result"][i]["keyword"]
#将字符串转成base64格式
bas_s = base64.b64encode(st.encode("utf-8")).decode()
#Jaccard相似系数
def jaccard_similarity(s1, s2):
set1 = set(s1)
set2 = set(s2)
intersection = set1 & set2
union = set1 | set2
return len(intersection) / len(union)
#进行分段识别
idx = len(st)//2
s2 = "导入库中的base64字符"
similarity_0 = jaccard_similarity(st[:idx],s2[:idx])
similarity_1 = jaccard_similarity(st[idx:],s2[idx:])
print(similarity_0*0.8+simiarity_1*0.2)
注:
(1)这里在百度智能云识别过程中,由于面前的内容相对主要,后面的内容相对次要,所以在算法过程中分成了两段,前半段占比0.8,后半段占比0.2; 当然也可以修改成3段 建议占比分别为为 6 3 1
(2)这里采用的是jaccard相似系数,通过集合进行的求值.除此之外,还可以使用编辑距离,或者余弦相似度进行识别.



