拓端tecdat|python卷积神经网络人体图像识别[通俗易懂]

拓端tecdat|python卷积神经网络人体图像识别[通俗易懂]原文链接:http://tecdat.cn/?p=7563二十多年来,自动发现裸体图片一直是计算机视觉中的中心问题,并且由于其悠久的历史和直接的目标,它成为该领域如何发展的一个很好的例子。在这篇博文中,我将使用裸露检测问题来说明现代卷积神经网络(convnets)的训练与过去的研究有何不同。(警告和免责声明:这篇文章包含了裸露的可视化效果,以用于科学目的。如果您未满18岁…

大家好,又见面了,我是你们的朋友全栈君。

原文链接:http://tecdat.cn/?p=7563

原文出处:拓端数据部落公众号

 二十多年来,自动发现裸体图片一直是计算机视觉中的中心问题,并且由于其悠久的历史和直接的目标,它成为该领域如何发展的一个很好的例子。在这篇博文中,我将使用裸露检测问题来说明现代卷积神经网络(convnets)的训练与过去的研究有何不同。

拓端tecdat|python卷积神经网络人体图像识别[通俗易懂]

警告和免责声明:这篇文章包含了裸露的可视化效果,以用于科学目的。如果您未满18岁,或者被裸露冒犯,请勿继续阅读。)

1996年

拓端tecdat|python卷积神经网络人体图像识别[通俗易懂]

该领域的开创性著作是Fleck等人的恰当命名为“ Finding Naked People”。它于90年代中期出版,为计算机视觉研究人员在卷积网络接管之前进行的这类工作提供了一个很好的例子。  

2014年

深度学习研究人员没有设计正式的规则来描述输入数据应如何表示,而是设计了网络体系结构和数据集,使AI系统可以直接从数据中学习表示形式。但是,由于深度学习研究人员没有确切指定网络在给定输入下的行为,因此出现了一个新问题:如何理解卷积网络在激活什么?

拓端tecdat|python卷积神经网络人体图像识别[通俗易懂]

了解卷积网络的操作需要在各个层次上解释要素活动。在本文的其余部分中,我们将通过将活动从顶层向下映射到输入像素空间来检查NSFW模型的早期版本。这将使我们能够看到是什么输入模式最初在功能图中导致了给定的激活(即,为什么将图像标记为“ NSFW”)。

触觉敏感度

 为了在左侧建立热图,我们将每个窗口发送到convnet并平均每个像素的“ NSFW”得分。当卷积网看到作物充满了皮肤时,往往会预测为“ NSFW”,这会导致莉娜身体上的大红色区域。为了在右侧创建热图,我们系统地遮住了原始图像的一部分,并报告1减去平均“ NSFW”得分(即“ SFW”得分)。当大多数NSFW区域被遮挡时,“ SFW”得分会增加,并且我们会在热图中看到更高的值。为了清楚起见,下图举例说明了上述两个实验分别将哪种图像馈入卷积网络:

拓端tecdat|python卷积神经网络人体图像识别[通俗易懂]

这些遮挡实验的优点之一是,当分类器是一个完整的黑匣子时,可以执行它们。这是一个通过我们的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图像以获得正确的外观比):

拓端tecdat|python卷积神经网络人体图像识别[通俗易懂]

 根据我们的deconvnet,我们可以通过增加红色来修饰芭芭拉,使其看起来更像PG:

拓端tecdat|python卷积神经网络人体图像识别[通俗易懂]

这张詹姆斯·邦德电影《无博士》中乌斯拉·安德列斯(Hors Rider)饰演的《蜜月骑士》(Honey Rider)在2003年的一项英国调查中被评选为“屏幕历史上最伟大的100个性感时刻”的第一名

拓端tecdat|python卷积神经网络人体图像识别[通俗易懂]

上述实验的一个显着特征是,卷积神经网络学习了红唇和肚脐,表示“ NSFW”。这可能意味着我们在“ SFW”训练数据中没有包含足够的红唇和肚脐图像。如果我们仅通过检查精度/召回率和ROC曲线(如下所示-测试集大小:428,271)来评估模型,我们将永远不会发现此问题,因为我们的测试数据也存在相同的缺点。这凸显了基于训练规则的分类器与现代AI研究之间的根本区别。与其手动设计功能,不如重新设计训练数据,直到发现的功能得到改善为止。

拓端tecdat|python卷积神经网络人体图像识别[通俗易懂]

拓端tecdat|python卷积神经网络人体图像识别[通俗易懂]

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/140858.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号