使用R语言对照片人物进行情绪分析

2020-06-16 00:00:00 语言 专区 订阅 情绪 面部
作者:王亨 公众号:跟着菜鸟一起学R语言 (微信ID:learn_R)
配套教程:初级入门篇:R语言快速入门免费视频教程 edu.hellobi.com/course/


人脸提供关于情绪的各种信息。 微软于2015年12月推出免费服务,分析人脸,进行情绪检测。 检测到的情绪是愤怒,蔑视,厌恶,恐惧,幸福,中立,悲伤和惊喜。 这些情绪被理解为与特定的面部表情跨文化和普遍传达。

Emotion API将图像中的面部表情作为输入,并使用Face API返回图像中每个面部的一组情绪的置信度以及面部的边界框。

在R中的实现允许以结构化的方式分析人脸。 注意,必须创建一个帐户来使用Face API。

该示例引用了一个简单的示例:使用的是现任美国总统奥巴马的照片;如下'



需要加载的包有: httr, XML, stringr, ggplot2.

# 加载相关包
library("httr")#链接API
library("XML")#爬取网页数据
library("stringr")#字符串处理
library("ggplot2")#绘图使用
 
# Define image source
img.url     = 'https://www.whitehouse.gov/sites/whitehouse.gov/files/images/first-family/44_barack_obama[1].jpg'
 
# Define Microsoft API URL to request data
URL.emoface = 'https://api.projectoxford.ai/emotion/v1.0/recognize'
 
# Define access key (access key is available via: https://www.microsoft.com/cognitive-services/en-us/emotion-api)
emotionKEY = 'XXXX' # 在此处输入你获取的key
 
# Define image
mybody = list(url = img.url)
 
# Request data from Microsoft
faceEMO = POST(
  url = URL.emoface,
  content_type('application/json'), add_headers(.headers = c('Ocp-Apim-Subscription-Key' = emotionKEY)),
  body = mybody,
  encode = 'json'
)
 
# Show request results (if Status=200, request is okay)
faceEMO
 
# Reuqest results from face analysis
Obama = httr::content(faceEMO)[[1]]
Obama
# Define results in data frame
o<-as.data.frame(as.matrix(Obama$scores))
 
# Make some transformation
o$V1 <- lapply(strsplit(as.character(o$V1 ), "e"), "[", 1)
o$V1<-as.numeric(o$V1)
colnames(o)[1] <- "Level"
 
# Define names
o$Emotion<- rownames(o)
 
# Make plot
ggplot(data=o, aes(x=Emotion, y=Level)) +
  geom_bar(stat="identity")

相关文章