鉴黄、视频、图片去重、图像搜索业务分析与实践

PostgreSQL 在视频、图片去重,图像搜索业务中的应用

作者

digoal

日期

2016-11-26

标签

PostgreSQL , Haar wavelet , 图像搜索 , 图片去重 , 视频去重


背景

图像处理的业务场景比较多,例如 图像搜索、视频去重、人脸识别、美图、图片去重 等。

比如,视频去重,一些用户上传了较多的视频,同一部电影可能有不同的版本,分辨率不一样,音轨不一样,压缩比不一样。这种情况会导致服务端重复存储大量的视频。

又比如甄别黄色视频或黄色图片,鉴黄师的职业要消失了。

有什么方法可以得到重复的视频呢? 如何鉴别黄色视频和图片呢? 本文将给你揭晓。    

另一方面,图片搜索是继文字搜索后又一个比较常用的搜索引擎。

市面上常见的搜索引擎有谷歌、百度、搜狗等图片搜索引擎。

http://image.baidu.com/

http://images.google.com.hk

例如在搜索引擎提供的接口中上层了一张雪人的图片,搜出来一堆和雪人近似的图片。

图片搜索是怎么做到的呢?

万能的PostgreSQL绝不落下这么好玩的东东,通过PG万能的API,可以扩展它的图片搜索功能。

如果你对PostgreSQL扩展开发感兴趣,可以参考我写的文章

《找对业务G点, 体验酸爽 - PostgreSQL内核扩展指南》

PostgreSQL 图像搜索插件背景技术

PostgreSQL的图像搜索插件使用了非常主流的Haar wavelet技术对图像进行变换后存储,可以参考WIKI和一篇关于HW的文献。

https://en.wikipedia.org/wiki/Haar_wavelet

http://www.cs.toronto.edu/~kyros/courses/320/Lectures.2013s/lecture.2013s.10.pdf

https://wiki.postgresql.org/images/4/43/Pgcon_2013_similar_images.pdf

截取几页,注意烧脑。

PostgreSQL 图像搜索插件介绍

依赖gd.h

# yum install -y gd-devel

下载安装imgsmlr

$ git clone https://github.com/postgrespro/imgsmlr
$ cd imgsmlr
$ export PGHOME=/home/digoal/pgsql9.5
$ export PATH=$PGHOME/bin:$PATH:.

$ make USE_PGXS=1
$ make USE_PGXS=1 install

安装插件

$ psql
psql (9.5.3)
Type "help" for help.
postgres=# create extension imgsmlr;
CREATE EXTENSION

imgsmlr新增了两个数据类型

Datatype Storage length Description
pattern 16388 bytes Result of Haar wavelet transform on the image
signature 64 bytes Short representation of pattern for fast search using GiST indexes

gist 索引方法(支持pattern和signature类型), 以及KNN操作符,可以用于搜索相似度

Operator Left type Right type Return type Description
<-> pattern pattern float8 Eucledian distance between two patterns
<-> signature signature float8 Eucledian distance between two signatures

新增了几个函数

将图像的二进制转换为pattern类型,将pattern中存储的数据转换为signature类型

Function Return type Description
jpeg2pattern(bytea) pattern Convert jpeg image into pattern
png2pattern(bytea) pattern Convert png image into pattern
gif2pattern(bytea) pattern Convert gif image into pattern
pattern2signature(pattern) signature Create signature from pattern
shuffle_pattern(pattern) pattern Shuffle pattern for less sensitivity to image shift

PostgreSQL 图像搜索插件测试

导入一些图片,例如(越多越好)

建立图片表

create table image (id serial, data bytea);

导入图片到数据库

insert into image(data) select pg_read_binary_file('文件路径');

将图片转换成 patten 和 signature

CREATE TABLE pat AS (
    SELECT
        id,
        shuffle_pattern(pattern) AS pattern,
        pattern2signature(pattern) AS signature
    FROM (
        SELECT
            id,
            jpeg2pattern(data) AS pattern
        FROM
            image
    ) x
);

创建索引

ALTER TABLE pat ADD PRIMARY KEY (id);

CREATE INDEX pat_signature_idx ON pat USING gist (signature);

近似度查询,例如查询与id = :id的图像相似的图像,按相似度排行,取出前10条

SELECT
    id,
    smlr
FROM
(
    SELECT
        id,
        pattern <-> (SELECT pattern FROM pat WHERE id = :id) AS smlr
    FROM pat
    WHERE id <> :id
    ORDER BY
        signature <-> (SELECT signature FROM pat WHERE id = :id)
    LIMIT 100
) x
ORDER BY x.smlr ASC
LIMIT 10

这里可以用到KNN索引,快速按相似度排行输出结果。

例子

视频去重业务

视频去重,可以抽取视频中的关键帧,自关联产生笛卡尔积,计算不同视频的任意两张图片的相似度,相似度达到一定阈值,可以认为是相同视频。

例子

创建图片表,并将所有视频的关键帧导入表中
create table image (id serial8 primary key, movie_id int, data bytea);

导入图片,假设为jpeg格式
... 略 ...

生成patten 和 signature
CREATE TABLE pat AS (
    SELECT
        id, movie_id,
        shuffle_pattern(pattern) AS pattern,
        pattern2signature(pattern) AS signature
    FROM (
        SELECT
            id, movie_id,
            jpeg2pattern(data) AS pattern
        FROM
            image
    ) x
);

计算不同视频的相似度
select t1.movie_id, t1.id, t1.signature<->t2.signature from
pat t1 join pat t2 on (t1.movie_id<>t2.movie_id)
order by t1.signature<->t2.signature desc 

or 

select t1.movie_id, t1.id, t1.signature<->t2.signature from
pat t1 join pat t2 on (t1.movie_id<>t2.movie_id)
where t1.signature<->t2.signature > 0.9
order by t1.signature<->t2.signature desc

小结

1. PostgreSQL是一个非常强大的数据库,功能高度可定制。而且不需要动到PostgreSQL的内核。 安全可靠。

2. 使用图像搜索的技术就是PostgreSQL功能扩展的例子,速度杠杠的,还记得我以前给出的关于地理位置近邻查询的性能指标吗。

《PostgreSQL 百亿地理位置数据 近邻查询毫秒级反馈》

3. 如果你对PostgreSQL扩展开发感兴趣,可以参考我写的文章

《找对业务G点, 体验酸爽 - PostgreSQL内核扩展指南》

时间: 2024-12-28 10:15:11

鉴黄、视频、图片去重、图像搜索业务分析与实践的相关文章

阿里云CDN图片鉴黄服务正式上线,人工智能助力企业降低违规风险

随着直播.视频.图片等内容形态的爆发与各大移动社交媒体.UGC平台的兴起,内容安全问题也逐渐凸显.每天海量的用户图片.视频,夹杂其中的淫秽色情等内容让平台方措手不及,传统鉴黄师已经无法应对.那如何利用人工智能和云计算技术,来高效准确的鉴别和摘除不良信息,确保平台的内容健康呢? CDN图片鉴黄服务介绍及原理 鉴黄技术原理是通过深度学习算法和实时更新的亿级图像样本库,可对图片进行识别以及色情程度量化,并通过智能学习用户审核标准,对图片影像的场景.肤色.姿态等进行特征提取和分析,从而找到不合规的图像内

优酷网买下soku.com域名或推视频搜索业务

DoNews 3月2日消息 (记者 肖克锋) 3月2日,据域名圈内人士透露,优酷网近日从域名投资者手中买下soku.com域名,可能用以推出一项新业务. Whois信息显示,该域名已经转至优酷网名下,优酷网已为该域名启用新的域名解析服务器. 据域名圈内人士透露,优酷是从国内某域名投资者手中购买的这一域名,但具体交易金额不详. 据域名圈内人士分析,从该域名的含义来看,优酷网可能会推出视频搜索业务.(完)

优酷买下soku.com域名 或推视频搜索业务

3月2日,据域名圈内人士透露,优酷网近日从域名投资者手中买下soku.com域名,可能用以推出一项新业务. Whois信息显示,该域名已经转至优酷网名下,优酷网已为该域名启用新的http://www.aliyun.com/zixun/aggregation/12499.html">域名解析服务器. 据域名圈内人士透露,优酷是从国内某域名投资者手中购买的这一域名,但具体交易金额不详. 据域名圈内人士分析,从该域名的含义来看,优酷网可能会推出视频搜索业务.(完)

优酷网买下soku.com域名 或推视频搜索业务

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断淘宝客 站长团购 云主机 技术大厅 3月2日,据域名圈内人士透露,优酷网近日从域名投资者手中买下soku.com域名,可能用以推出一项新业务. (站长之家Whois信息查询截图) 根据Whois信息显示,该域名在2月115.html">26日的时候就已经完成交易,目前该域名已经转至优酷网名下,优酷网已为该域名启用新的域名解析服务器. 据域名圈内人士透露,

世界最大黄网要用 AI “鉴黄”,还号称要让鉴黄师下岗

最近,雷锋网宅客频道(微信公众号:letshome)看到外媒报道了一则让人惊讶的消息:世界最大黄网 Pornhub 要用 AI 自动识别成人片内容和演员,还号称要让鉴黄师下岗. 到底怎么回事?我们来看看新闻稿: Pornhub已经宣布推出一款全新的成人片识别引擎,这款引擎由 AI 驱动,使用计算机视觉技术自主检测和识别成人片内容以及表演者,将让那些负责监视和标记无数小时色情影片的工作人员失业. 该引擎和算法迄今为止通过简单的扫描和解释镜头进行了训练,以识别超过 1 万种色情内容. Pornhub

如何利用图像识别、语音识别、文本挖掘做好鉴黄?

雷锋网按:人工智能鉴黄市场竞争愈发激烈,目前图普科技.阿里绿网.腾讯万象优图等团队已占据大量市场份额,在此环境下,不少公司试图通过提供更全面的服务从这片红海中分一杯羹. 那么更全面的定制服务体现在哪些地方?雷锋网(公众号:雷锋网)特地采访了极限元 CEO 雷臻,雷臻从图像识别.语音识别.文本挖掘三个维度向雷锋网讲解 AI 鉴黄,同时对一些工程细节进行阐述. 直播鉴黄一般从哪些方面进行鉴定? 通常情况下,直播鉴黄通过视频截图.图像识别.语音技审.弹幕监控.关键字抽取等能力智能识别色情内容.在向客户

云盾内容安全8月1日全面升级上线,基于深度学习提供鉴黄、涉政、直播不良场景等10种以上检测服务

详细活动链接:https://promotion.aliyun.com/ntms/act/yunduncontent.html?spm=5176.8142029.759393.7.23896df一.产品功能与服务:1.图片智能鉴黄服务:通过深度学习算法和实时更新的亿级图像样本库,可对图片进行识别以及色情程度量化.智能学习用户审核标准,快速降低人工审核成本.2.暴恐敏感图像识别智能识别含有宣扬恐怖主义.极端主 义.血腥.政治游行等画面的暴恐及 反动内容.暴恐识别模型会对涉嫌暴 恐信息进行更严格标准

阿里研究员华先胜:图像搜索的前世今生

  以下内容为由4月27日由将门主办的"计算机视觉"主题技术专家微信群分享嘉宾实录.   自我介绍 我在2001年北大数学系十年寒窗博士毕业以后加入了微软亚洲研究院在之后9年半的时间在研究院一直从事图像和视频的分析工作.2010年底我突然变得有点迷盲虽然一直也在做产品但实际上还没有真正地上过"战场"所以当时就做了一个大家都不太看好的决定--我觉得应该真正地到"战场上打仗"看看我们实际当中的图像搜索的困难到底在哪里用户的需求和痛点到底在哪里因此之后

拍立淘-图像搜索与识别

云栖TechDay40期,阿里巴巴iDST视觉技术总监启磐来给大家分享图像搜索和识别.本文主要从iDST和拍立淘业务开始谈起,接着分析了拍立淘技术框架,着重分析了拍立淘核心技术,最后展示了呈现效果和云服务. 移动端的以图搜图是一代又一代的图像人,搜索人的梦想.从90年代开始,学术界,工业界做了很多的努力和尝试.阿里巴巴的智能图像搜索服务-拍立淘从2014年首次上线之后,通过技术的不断打磨,已经成为淘宝每天千万级UV的应用.本次将给大家带来拍立淘中的图像搜索和识别的技术.   阿里巴巴iDST 阿