草庐IT

【情人节专属】AI一键预测你和Ta的CP值

逝缘~ 2023-04-09 原文

如何预测你和心仪的Ta有没有夫妻相?

基于华为云ModelArts开发的一键预测你和Ta的CP值Demo帮你预测CP指数。

该模型利用ssim算法综合计算五官特征相似程度,从而得出CP值。

//夫妻相的原理在当今心理学、生物学仍有很大争议,夫妻相指数高并不意味着两人未来一定会幸福美满,也不能预判彼此关系变好变坏。本案例只适用于AI技术的学习以及情人节娱乐。

1.下载需要的海报文件和字体

import os

import os.path as osp
import moxing as mox
parent = osp.join(os.getcwd(),'Valentine')
if not os.path.exists(parent):
    mox.file.copy_parallel('obs://modelarts-labs-bj4-v2/case_zoo/Valentine',parent)
    if os.path.exists(parent):
        print('Download success')
    else:
        raise Exception('Download Failed')
else:
    print("Model Package already exists!") 

2.使用ssim算法计算夫妻相

import numpy as np
import cv2
import random
import matplotlib.pyplot as plt
from matplotlib import font_manager
import warnings
from scipy.signal import convolve2d 
from PIL import Image,ImageDraw,ImageFont

warnings.filterwarnings('ignore')
def matlab_style_gauss2D(shape=(3,3),sigma=0.5):
    """
    2D gaussian mask - should give the same result as MATLAB's
    fspecial('gaussian',[shape],[sigma])
    """
    m,n = [(ss-1.)/2. for ss in shape]
    y,x = np.ogrid[-m:m+1,-n:n+1]
    h = np.exp( -(x*x + y*y) / (2.*sigma*sigma) )
    h[ h < np.finfo(h.dtype).eps*h.max() ] = 0
    sumh = h.sum()
    if sumh != 0:
        h /= sumh
    return h
 
def filter2(x, kernel, mode='same'):
    return convolve2d(x, np.rot90(kernel, 2), mode=mode)
 
def compute_ssim(im1, im2, k1=0.01, k2=0.04, win_size=11, L=255):
    if not im1.shape == im2.shape:
        raise ValueError("Input Imagees must have the same dimensions")
    if len(im1.shape) > 2:
        raise ValueError("Please input the images with 1 channel")
 
    M, N = im1.shape
    C1 = (k1*L)**2
    C2 = (k2*L)**2
    window = matlab_style_gauss2D(shape=(win_size,win_size), sigma=0.5)
    window = window/np.sum(np.sum(window))
 
    if im1.dtype == np.uint8:
        im1 = np.double(im1)
    if im2.dtype == np.uint8:
        im2 = np.double(im2)
 
    mu1 = filter2(im1, window, 'valid')
    mu2 = filter2(im2, window, 'valid')
    mu1_sq = mu1 * mu1
    mu2_sq = mu2 * mu2
    mu1_mu2 = mu1 * mu2
    sigma1_sq = filter2(im1*im1, window, 'valid') - mu1_sq
    sigma2_sq = filter2(im2*im2, window, 'valid') - mu2_sq
    sigmal2 = filter2(im1*im2, window, 'valid') - mu1_mu2
 
    ssim_map = ((2*mu1_mu2+C1) * (2*sigmal2+C2)) / ((mu1_sq+mu2_sq+C1) * (sigma1_sq+sigma2_sq+C2))
 
    return np.mean(np.mean(ssim_map))

def img_show(similarity, img1, img2, name1, name2):
    # similarity = random.uniform(60,100)
    zt = "./Valentine/方正兰亭准黑_GBK.ttf"
    my_font = font_manager.FontProperties(fname = zt,size =20 )

    img1 = cv2.resize(img1, (520, 520))
    img2 = cv2.resize(img2, (520, 520))
    
    imgs = np.hstack([img1, img2])
    imgs2 = imgs[:,:, ::-1]
    
    plt.axis('off')
    plt.title('{0} VS {1} \n CP指数: {2}%'.format(name1, name2, round(similarity, 2)), fontproperties=my_font)
    plt.imshow(imgs2)
    path = "a.jpg"
    cv2.imwrite(path, imgs)

    # img = cv2ImgAddText(imgs, '夫妻相: {}%'.format(round(similarity, 2)), 350, 130, (255, 0 , 0), 50)
    # cv2.imshow('image1 vs image2', img)
    # cv2.waitKey()

3.修改预置的视频和图片

在Valentine文件夹下,有一个预置的1.png和2.png图片,大家可以将里面的图片替换成自己的,图片的名称不建议修改,如果修改成其他的名称,后面的路径也要进行相应的修改。

点击此处上传你和Ta的照片(不会留存照片信息,推理完成后内存数据会自动清除)

上传成功

if __name__ == '__main__':
    name1 = input('请输入图1照片姓名: \n')
    name2 = input('请输入图2照片姓名: \n')
    
    img1_path = 'Valentine/1.png'
    img2_path = 'Valentine/2.png'

    img1 = cv2.imread(img1_path)
    img2 = cv2.imread(img2_path)

    im1 = cv2.cvtColor(img1, cv2.COLOR_BGR2GRAY)
    im2 = cv2.cvtColor(img2, cv2.COLOR_BGR2GRAY)

    im1 = cv2.resize(im1, (520,520))
    im2 = cv2.resize(im2, (520,520))
    

    similarity = compute_ssim(im1, im2)*100
    if similarity == 100:
        raise ValueError("图片重复! 请重新上传图片")
    random.seed(similarity)
    add_score = random.uniform(1, 100-similarity)
    similarity += add_score
    img_show(similarity, img1, img2, name1, name2)

注意:输入图1图2照片姓名后都需要按下回车键

预测成功:

image = Image.open("a.jpg")
image = image.resize((498,278))

4.打印输出海报

import os
from PIL import Image,ImageDraw,ImageFont,ImageFilter
from PIL import ImageFile
ImageFile.LOAD_TRUNCATED_IMAGES = True

填写创作者名称

右键即可下载海报

海报如下:

有关【情人节专属】AI一键预测你和Ta的CP值的更多相关文章

  1. 未来的趋势————以ChatGPT为标杆的AI对生活的影响是巨大的 - 2

    文章目录前言1.AI的发展历程2.我是如何接触到人工智能的概念和产品的3.对于ChatGPT的一点看法4.AI对大学毕业生的职业发展的利与弊5.对于AI的思考和问题前言随着ChatGPT的爆火,生成式AI,大模型的人工智能被越来越多的人注意到,同时他也带来了许多问题。本文将对几方面进行探讨。1.AI的发展历程远古时期在公元前第一个千禧年,中国,印度和希腊哲学家都提出了一些推理的研究理论,比如亚里士多德(Aristotle)进行了演绎推理三段论的完整分析,欧几里得(Euclid)所著Elements是一种形式推理的模型,MuḥammadibnMūsāal-Khwārizmī,发明了代数学,即我们

  2. 焕新古文化传承之路,AI为古彝文识别赋能 - 2

    目录1古彝文与古典保护2古文识别的挑战2.1西文与汉文OCR2.2古彝文识别难点3合合信息:古彝文保护新思路3.1图像矫正3.2图像增强3.3语义理解3.4工程技巧4总结1古彝文与古典保护彝文指的是云南、贵州、四川等地的彝族人使用的文字,区别于现代意义上的彝文,古彝文指的是在民间流通使用的原生态彝文,多达87046字。古彝文的起源距今至少数千年,是世界上最古老的文字之一。对古彝文字集研究有助于理解尚未被翻译成汉文、用字尚未规范化的古籍,更深层、透彻地作用于传统文化保护。古彝文字义对照图(网络资料+邵文苑供图)古籍是不可再生的宝贵资源,应当得到妥善保护。中国的古籍在历史上迭经水火兵燹等自然灾害、

  3. ruby - 通过 API 和 ruby​​ 创建优惠券返回错误 : woocommerce_api_missing_coupon_data - 2

    我正在尝试使用本页文档中的示例代码通过我的Rails4应用程序的其余API创建优惠券:https://woocommerce.github.io/woocommerce-rest-api-docs/?ruby#create-a-coupon这是我使用的代码:data={code:"10off",discount_type:"percent",amount:"10",individual_use:true,exclude_sale_items:true,minimum_amount:"100.00"}woocommerce.post("coupons",data).parsed_resp

  4. ruby - 在我的 ramaze 应用程序上显示 £ 符号时,我收到 "incompatible character encodings: CP850 and UTF-8" - 2

    在我的ramaze应用程序上显示£符号时,我收到“不兼容的字符编码:CP850和UTF-8”。我怎样才能摆脱这个错误?我的head标签中有UTF-8元标签。当我用键盘输入£符号时会发生这种情况。看。我已将以下代码放入我的ruby​​文件中,但没有解决问题。#encoding:UTF-8Encoding.default_external='utf-8'Encoding.default_internal=Encoding::UTF_8 最佳答案 尝试强制编码以查看是否可以解决问题:your_string.force_encoding(:

  5. PLUS模型和InVEST模型生态系统服务多情景模拟预测、ArcGIS空间数据处理、空间分析与制图、土地利用时空变化 - 2

    查看原文>>>基于”PLUS模型+“生态系统服务多情景模拟预测实践技术应用目录第一章、理论基础与软件讲解第二章、数据获取与制备第三章、土地利用格局模拟第四章、生态系统服务评估第五章、时空变化及驱动机制分析第六章、论文撰写技巧及案例分析基于ArcGISPro、Python、USLE、INVEST模型等多技术融合的生态系统服务构建生态安全格局基于生态系统服务(InVEST模型)的人类活动、重大工程生态成效评估、论文写作等具体应用基于ArcGISPro、R、INVEST等多技术融合下生态系统服务权衡与协同动态分析实践应用    本文从数据、方法、实践三方面对生态系统服务多情景预测进行讲解。内容涵盖多

  6. 基于GMDH 的时间序列预测(Matlab代码实现) - 2

    目录1.GM(1,1)模型2. 组合预测模型3. GMDH进行时间序列预测4.运行结果5Matlab代码实现1.GM(1,1)模型灰色预测是一种对具有不确定因素的系统进行预测的方法,能有效解决数据少、序列的完整性及可靠性低的问题。GM(1,1)模型是一种较为常用的灰色模型,GM(1,1)预测模型的建立实质上就是对原始数据序列作一次累加生成,使生成数据序列呈显出一定规律,然后通过建立微分方程模型,求得拟合曲线,进而对系统进行预测。2. 组合预测模型灰色模型是通过对原始数据加工处理来弱化随机性的,若数据存在较大的波动性,预测出来的结果可能会存在较大误差。ARIMA模型对于预测的模型比较理想,要求时

  7. ruby - 更新对分数没有影响(预测 API) - 2

    我正在试验Google预测示例中的language_id.txt数据集。现在我正在尝试使用以下方法更新模型:defupdate(label,data)input=@prediction.trainedmodels.update.request_schema.newinput.label=labelinput.csv_instance=[data]result=@client.execute(:api_method=>@prediction.trainedmodels.update,:parameters=>{'id'=>MODEL_ID},:headers=>{'Content-Typ

  8. ruby-on-rails - rails4 未知编码名称 - CP720 - 2

    当我想运行任何gem命令时出现此错误,例如geminstallrubygems-update错误whileexecutinggem...(ArgumentError)unknownencodingname-CP720所以当我仔细查看时,我发现有人建议使用此命令将编码更改为1252C:\DevKit>chcp1252c:\DevKit>rubydk.rbinit但是在我使用它之后我仍然得到同样的错误,所以我该如何解决这个问题?????注意:我使用的是windows7 最佳答案 这个命令为我修复了它(没有第二个命令);chcp1252这

  9. 「认识AI:人工智能如何赋能商业」【04】机器学习的商业应用 - 2

    作者|Harper审核 |gongyouliu编辑|auroral-L机器学习的商业应用上期给大家介绍了机器学习的概念,但是理解机器学习最好方法之一,就是了解其在具体商业世界中的各种应用。在道格’罗斯的这本《认识AI,人工智能赋能商业》中,介绍了几类机器学习的商业应用,在这里我给大家归纳一下。第一,数据安全,为了避免被发现,制造恶意软件的人会不断更改代码,通常为2%~10%的修改,但是通过机器学习,安全软件可以适应这一小部分变化,并准确识别新创建的恶意软件。它还可以寻找访问方式的模式,以识别可能的安全威胁。第二,投资。机器学习使得计算机能够处理大量的财务数据,并利用其发现的规律预测市场及每只股

  10. 基于ChatGPT的智能问答、ai绘图微信小程序思路 - 2

    ChatGPT![在这里插入图片描述](https://img-blog.csdnimg.cn/186d9ecc453b48be9f19c467da7c3f07.jpegChatGPT是openai公司的一个人工智能机器人产品,目前已经升级到4.0版本。其因便捷高效,已经在大学生、IT届、科研界等领域广为流传。但是直接进入其官网使用有时候并不是那么方便,毕竟他不开放给中国用户使用,我们需要一些魔法才能用上。如果做成一个微信小程序随时随地打开就能用的话,会方便很多。正好openai官方也开放了api供开发者使用。我们可以进入openai官网https://platform.openai.com/

随机推荐