二十多年来,自动发现裸体图片一直是计算机视觉中的中心问题,并且由于其悠久的历史和直接的目标,它成为该领域如何发展的一个很好的例子。在这篇博文中,我将使用裸露检测问题来说明现代卷积神经网络(convnets)的训练与过去的研究有何不同。
(警告和免责声明:这篇文章包含了裸露的可视化效果,以用于科学目的。如果您未满18岁,或者被裸露冒犯,请勿继续阅读。)
1996年
该领域的开创性著作是Fleck等人的恰当命名为“ Finding Naked People”。它于90年代中期出版,为计算机视觉研究人员在卷积网络接管之前进行的这类工作提供了一个很好的例子。
2014年
深度学习研究人员没有设计正式的规则来描述输入数据应如何表示,而是设计了网络体系结构和数据集,使AI系统可以直接从数据中学习表示形式。但是,由于深度学习研究人员没有确切指定网络在给定输入下的行为,因此出现了一个新问题:如何理解卷积网络在激活什么?
了解卷积网络的操作需要在各个层次上解释要素活动。在本文的其余部分中,我们将通过将活动从顶层向下映射到输入像素空间来检查NSFW模型的早期版本。这将使我们能够看到是什么输入模式最初在功能图中导致了给定的激活(即,为什么将图像标记为“ NSFW”)。
触觉敏感度
为了在左侧建立热图,我们将每个窗口发送到convnet并平均每个像素的“ NSFW”得分。当卷积网看到作物充满了皮肤时,往往会预测为“ NSFW”,这会导致莉娜身体上的大红色区域。为了在右侧创建热图,我们系统地遮住了原始图像的一部分,并报告1减去平均“ NSFW”得分(即“ SFW”得分)。当大多数NSFW区域被遮挡时,“ SFW”得分会增加,并且我们会在热图中看到更高的值。为了清楚起见,下图举例说明了上述两个实验分别将哪种图像馈入卷积网络:
这些遮挡实验的优点之一是,当分类器是一个完整的黑匣子时,可以执行它们。这是一个通过我们的API再现这些结果的代码片段:
# NSFW occulsion experiment from StringIO import StringIO import matplotlib.pyplot as plt import numpy as np from PIL import Image, ImageDraw import requests import scipy.sparse as sp from clarifai.client import ClarifaiApi CLARIFAI_APP_ID = '...' CLARIFAI_APP_SECRET = '...' clarifai = ClarifaiApi(app_id=CLARIFAI_APP_ID, app_secret=CLARIFAI_APP_SECRET, base_url='https://api.clarifai.com') def batch_request(imgs, bboxes): """use the API to tag a batch of occulded images""" assert len(bboxes) < 128 #convert to image bytes stringios = [] for img in imgs: stringio = StringIO() img.save(stringio, format='JPEG') stringios.append(stringio) #call api and parse response output = [] response = clarifai.tag_images(stringios, model='nsfw-v1.0') for result,bbox in zip(response['results'], bboxes): nsfw_idx = result['result']['tag']['classes'].index("sfw") nsfw_score = result['result']['tag']['probs'][nsfw_idx] output.append((nsfw_score, bbox)) return output
尽管这些类型的实验提供了一种显示分类器输出的简单方法,但它们的一个缺点是生成的可视化效果通常很模糊。这使我们无法获得对网络实际运行情况的有意义的洞察力 。
反卷积网络
在给定的数据集上训练了网络之后,我们希望能够拍摄图像和课程,并向卷积网络提出类似的要求 :
这是当我们使用deconvnet可视化如何修改Lena的照片 (注意:此处使用的deconvnet需要一个正方形图像才能正常运行-我们填充了完整的Lena图像以获得正确的外观比):
根据我们的deconvnet,我们可以通过增加红色来修饰芭芭拉,使其看起来更像PG:
这张詹姆斯·邦德电影_《无博士》中_乌斯拉·安德列斯(Hors Rider)饰演的《蜜月骑士》(Honey Rider)在2003年的一项英国调查中被评选为“屏幕历史上最伟大的100个性感时刻”的第一名:
上述实验的一个显着特征是,卷积神经网络学习了红唇和肚脐,表示“ NSFW”。这可能意味着我们在“ SFW”训练数据中没有包含足够的红唇和肚脐图像。如果我们仅通过检查精度/召回率和ROC曲线(如下所示-测试集大小:428,271)来评估模型,我们将永远不会发现此问题,因为我们的测试数据也存在相同的缺点。这凸显了基于训练规则的分类器与现代AI研究之间的根本区别。与其手动设计功能,不如重新设计训练数据,直到发现的功能得到改善为止。