「模型即服务AI」1分钟调用SOTA人脸检测,同时搭建时光相册小应用

news2024/9/20 20:23:34
时光相册应用效果

一、物料

人脸检测:https://modelscope.cn/models/damo/cv_resnet101_face-detection_cvpr22papermogface/summary

时光相册: https://modelscope.cn/studios/damo/face_album/summary

二、背景

        最近有两个计算机应用发展的方向正在潜移默化的汇拢中:1.)模型即服务 2.)人工智能(AI)。它们的会师正逐渐形成模型即服务AI热潮,开源典型的代表有国外的huggingface以及国内的modelscope。

        什么是模型即服务呢?顾名思义模型即服务(MaaS)是一种用较少的代码、以较快的速度来调用AI功能以及部署AI服务的平台。通过少量代码或不用代码实现AI场景应用创新。

        什么是人工智能呢?虽老生常谈,但本着空杯的心态,这里亦引用了百度百科上的定义:“人工智能(Artificial Intelligence),英文缩写为AI。它是研究开发用于模拟延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。该领域的研究包括机器人、语言识别、图像识别、自然语言处理和专家系统等。”

        近几年模型即服务一直被人津津乐道,这是提升AI编程效率、加速AI创新应用的大趋势。人工智能领域近几年非常火热,基于AI的行业创新应用层出不穷,尤其今年的AI绘画又大有元年之势,相应介绍可查阅《人工智能内容生成元年—AI绘画原理解析》。如下章节将重点介绍如何通过模型即服务来完成AI功能调用以及相应AI应用搭建。

三、方法

1.)模型即服务AI功能调用:

        首先打开notebook,可以通过示例右上角创建账号申领。亦或通过本地python环境安装直接调用(若本地环境暂无pip,则查看文档中“Python环境配置”部分)。等到环境ready后,试跑如下示例代码:

from modelscope.pipelines import pipeline
from modelscope.utils.constant import Tasks

mog_face_detection_func = pipeline(Tasks.face_detection, 'damo/cv_resnet101_face-detection_cvpr22papermogface')
src_img_path = 'https://modelscope.oss-cn-beijing.aliyuncs.com/test/images/mog_face_detection.jpg'
raw_result = mog_face_detection_func(src_img_path)
print('face detection output: {}.'.format(raw_result))

# if you want to show the result, you can run
from modelscope.utils.cv.image_utils import draw_face_detection_no_lm_result
from modelscope.preprocessors.image import LoadImage
import cv2
import numpy as np

# load image from url as rgb order
src_img = LoadImage.convert_to_ndarray(src_img_path)
# save src image as bgr order to local
src_img  = cv2.cvtColor(np.asarray(src_img), cv2.COLOR_RGB2BGR)
cv2.imwrite('src_img.jpg', src_img) 
# draw dst image from local src image as bgr order
dst_img = draw_face_detection_no_lm_result('src_img.jpg', raw_result)
# save dst image as bgr order to local
cv2.imwrite('dst_img.jpg', dst_img)
# show dst image by rgb order
import matplotlib.pyplot as plt
dst_img  = cv2.cvtColor(np.asarray(dst_img), cv2.COLOR_BGR2RGB)
plt.imshow(dst_img)

这样就完成了模型即服务的AI功能调用了。可以将这快速应用在平时需要调用人脸检测的场景中了。

2.)模型即服务AI应用搭建:

        在完成1.)步骤之后,可能有人会有疑问:“1.)步骤中的代码只适合自己调用,如何形成模型即服务的AI应用服务给更多人分享使用呢?”。本节重点介绍如何基于1.)进而完成相应模型即服务的样例AI应用。该应用的搭建将基于gradio实现,具体步骤如下:

a.)按照手册完成gradio环境配置。

b.)建立app.py文件并填充如下代码:

import gradio as gr
from modelscope.pipelines import pipeline
from modelscope.utils.constant import Tasks
from modelscope.utils.cv.image_utils import draw_face_detection_no_lm_result
from modelscope.preprocessors.image import LoadImage
from PIL import Image
import cv2
import numpy as np

###########################################
# gradio demo app 推断入口
###########################################

# gradio app demo 算法运行函数
def inference(input_file):
    mog_face_detection_func = pipeline(Tasks.face_detection, 'damo/cv_resnet101_face-detection_cvpr22papermogface')
    src_img_path = 'https://modelscope.oss-cn-beijing.aliyuncs.com/test/images/mog_face_detection.jpg'
    raw_result = mog_face_detection_func(src_img_path)
    print('face detection output: {}.'.format(raw_result))

    # load image from url as rgb order
    src_img = LoadImage.convert_to_ndarray(src_img_path)
    # save src image as bgr order to local
    src_img  = cv2.cvtColor(np.asarray(src_img), cv2.COLOR_RGB2BGR)
    cv2.imwrite('src_img.jpg', src_img) 
    # draw dst image from local src image as bgr order
    dst_img = draw_face_detection_no_lm_result('src_img.jpg', raw_result)
    # convert to rgb order
    dst_img  = cv2.cvtColor(np.asarray(dst_img), cv2.COLOR_BGR2RGB)
    
    return dst_img


# gradio app 环境参数
css_style = "#fixed_size_img {height: 240px;} " \
            "#overview {margin: auto;max-width: 600px; max-height: 400px;}"
title = "AI人脸检测应用"

###########################################
# gradio demo app
###########################################
with gr.Blocks(title=title, css=css_style) as demo:
    gr.HTML('''
      <div style="text-align: center; max-width: 720px; margin: 0 auto;">
                  <div
                    style="
                      display: inline-flex;
                      align-items: center;
                      gap: 0.8rem;
                      font-size: 1.75rem;
                    "
                  >
                    <h1 style="font-family:  PingFangSC; font-weight: 500; font-size: 32px; margin-bottom: 7px;">
                      AI人脸检测应用
                    </h1>
      ''')

    with gr.Row():
        img_input = gr.Image(type="pil", elem_id="fixed_size_img")
        img_output = gr.Image(type="pil", elem_id="fixed_size_img")
    with gr.Row():
        btn_submit = gr.Button(value="一键生成", elem_id="blue_btn")

    examples = [['https://modelscope.oss-cn-beijing.aliyuncs.com/test/images/mog_face_detection.jpg']]
    
    examples = gr.Examples(examples=examples, inputs=img_input, outputs=img_output, label="点击如下示例试玩", run_on_click=True)
    btn_submit.click(inference, inputs=[img_input], outputs=img_output)
    # btn_clear清除画布


if __name__ == "__main__":
    demo.launch(share=True)

c.)在本地或者线上环境执行如下指令:python app.py

d.)复制粘贴如下红框相应服务链接进行分享使用

 

3.)模型即服务AI复杂应用:

        在完成2.)步骤之后,相信很多同学对模型即服务AI功能调用、AI应用搭建有了很好的初体验,可能有些同学还是意犹未尽。本节重点介绍如何基于人脸检测搭建“时光相册”, 随意上传您心仪的照片合集(宝宝成长相册、同学毕业相册),通过人脸五官对齐,一键生成样貌变化效果图,点点鼠标即可下载分享给亲朋好友。效果图如下:

代码可直接拷贝这里(所有文件.py文件以及images文件都下载下来)。然后在本地或者线上环境执行如下指令:

python app.py

命令行log信息如下所示,将红色框的链接粘贴至浏览器即可体验该应用:

 效果与官网应用“时光相册”类似。 

四、讨论

        回首过往,作为2007级本科生,当时是大类招生的,到了2008年大二的时候就需要选方向了。当时大二选方向时,有很多热门的专业,如“自动化”、“信息与通信”等,“计算机”在当时不可不谓是冷门的存在。由于当时大一参加了软件协会(后孵化了ACM集训队),迷上了程序设计语言的创造力,所以选择了计算机专业。

        转眼进入了专业课的学习,当时上了一门人工智能课程,里面讲到了“手写数字识别”这样BP神经网络案例,当即被人工智能的创造力吸引到了。在当时实现手写数字识别还需要用较重的MFC应用搭建方式,如果不太熟悉的话,应用入门成本还是比较高的。现如今结合模型即服务AI热潮,相应应用搭建将会越来越方便,大把的精力可以集中放到AI技术与应用的普及和相应创新上了。

        同学们如有想要简单快速实现的其他AI应用也可在评论区留言,作者将择机对需求呼声较高的AI应用做模型即服务实现分享。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/68389.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

社区疫情防控系统毕业设计,社情疫情防控系统设计与实现,毕业设计怎么写论文源码开题报告需求分析怎么做

项目背景和意义 目的&#xff1a;本课题主要目标是设计并能够实现一个基于web网页的疫情下社区健康评估系统&#xff0c;整个网站项目使用了B/S架构&#xff0c;基于java的springboot框架下开发&#xff1b;通过后台设置网站信息&#xff0c;设置广告信息&#xff0c;查看和管理…

2022选择了交大,回顾这一年的成长

Datawhale干货 作者&#xff1a;王琦&#xff0c;上海交通大学&#xff0c;Datawhale成员2022年是颇为忙碌的一年&#xff0c;今年我从中国科学院大学毕业、申请上了上海交通大学的博士、参与贡献了开源教程“Easy-RL”&#xff08;5.6K GitHub Stars&#xff09;、出版了著作《…

【面试高频题】难度 2/5,回溯算法经典运用

题目描述 这是 LeetCode 上的 93. 复原 IP 地址 &#xff0c;难度为 中等。 Tag : 「回溯」、「DFS」 有效 IP 地址 正好由四个整数&#xff08;每个整数位于 0 到 255 之间组成&#xff0c;且不能含有前导 0&#xff09;&#xff0c;整数之间用 . 分隔。 例如&#xff1a;&…

按指定频次对时间序列数据进行分组pd.grouper()方法

【小白从小学Python、C、Java】 【计算机等级考试500强双证书】 【Python-数据分析】 构造时间序列为索引的DataFrame 按照指定的时间间隔分组统计 df.grouper() 选择题 关于以下python代码说法错误的一项是? import pandas as pd ipd.to_datetime(["2022-12-01",…

面试官:MySQL 数据库查询慢,除了索引问题还可能是什么原因?面试架构师必备知识

文章目录数据库查询流程慢查询分析索引相关原因连接数过小buffer pool太小还有哪些骚操作&#xff1f;总结mysql查询为什么会慢&#xff0c;关于这个问题&#xff0c;在实际开发经常会遇到&#xff0c;而面试中&#xff0c;也是个高频题。遇到这种问题&#xff0c;我们一般也会…

Ubuntu20运行SegNeXt代码提取道路水体(一)——从零开始运行代码过程摸索

SegNeXt代码最近可谓是非常火 应导师的要求打工人需要学习一下新的代码 但是网上千篇一律都是论文的讲解 如何跑通代码并且使用自己的数据跑出一个好的结果却没有一个详细的教程 那么就让我自己来从零开始跑通代码吧 下载代码和数据 首先咱们先别想着用自己的数据 从githu…

iTOP3568开发板ubuntu系统修改开机联网等待时间

启动开发板使用以下命令对 networking.service 文件进行修改&#xff0c;如下图所示&#xff1a; vi /etc/systemd/system/network-online.target.wants/networking.service 修改完后保存退出&#xff0c;重启开发板就会看到等待时间变为 2min 了&#xff0c;如下图所示&…

软件安全测试-网络相关基础知识

目录 1. OSI 网络模型 2. TCP/IP协议 2.1 TCP 协议分层 2.2 TCP 协议内容 2.3 应用层活动 2.4 传输层活动 2.4.1 建立连接三次握手 2.4.2 断开连接四次握手 2.4.3. 数据打包与分解 2.5 网络层活动 2.5.1 IP寻址 2.5.2 ARP协议获取MAC地址 2.5.3 BGP外部网关协议…

Neuroscout:可推广和重复利用的fMRI研究统一平台

摘要 功能磁共振成像 (fMRI) 已经彻底改变了认知神经科学&#xff0c;但方法上的障碍限制了研究 结果的普遍性。Neuroscout&#xff0c;一个端到端分析自然功能磁共振成像数据 的平台&#xff0c; 旨在促进稳健和普遍化的研究推广。Neuroscout利用最先进的机器学习模型来自动注…

一文解决IDEA中文乱码问题

✅作者简介&#xff1a;热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏&#xff1a;JAVA开发者…

一张图让你牢记MySQL主从复制原理|原创

本文深入浅出的讲解了MySQL面试中的必考内容——主从同步原理&#xff0c;牢记文中的主从同步流程图即可&#xff01;点击上方“后端开发技术”&#xff0c;选择“设为星标” &#xff0c;优质资源及时送达为什么需要主从复制&#xff1f;1、读写分离&#xff0c;增强MySQL数据…

前端面试题合集

UDP和TCP有什么区别 TCP协议在传送数据段的时候要给段标号&#xff1b;UDP协议不TCP协议可靠&#xff1b;UDP协议不可靠TCP协议是面向连接&#xff1b;UDP协议采用无连接TCP协议负载较高&#xff0c;采用虚电路&#xff1b;UDP采用无连接TCP协议的发送方要确认接收方是否收到数…

[附源码]Python计算机毕业设计Django心理健康系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

【Rasa+Pycharm+Tensorflow】控制台实现智能客服问答实战(附源码和数据集 超详细)

需要源码和数据集请点赞关注收藏后评论区留言~~~ 一、数据准备 1&#xff1a;下面以pychar为环境介绍操作步骤&#xff0c;选择file-new project 创建一个新项目 new environment using 选择 Virtualenv 命名虚拟环境的名称&#xff0c;这里假定虚拟环境的名称为venv&#xff…

uniapp获得某个元素的高度并移动到该高度【伸手党福利】

uniapp获得某个元素的高度并移动到该高度 <view class"scrolls"> ... </view>//等view加载完了才取高度setTimeout(()>{const query uni.createSelectorQuery().in(this);query.select(.scrolls).boundingClientRect(data > {console.log("…

20221207英语学习

今日新词&#xff1a; work v.劳动, 干活; 工作; 起作用, 奏效; 运行 mentality n.〈常贬〉心态&#xff0c;心性&#xff1b;思想方法 copyright n.版权, 著作权 turkey n.火鸡&#xff1b;火鸡肉&#xff1b;&#xff08;Turkey&#xff09;土耳其 best-selling adj.最畅…

知识图谱-生物信息学-医学顶刊论文(Briefings in Bioinformatics-2022):基于异构图GCN和GAT的DTI预测

(2022.4.16)Briefings-DTI-HETA&#xff1a;基于异构图GCN和GAT的DTI预测 目录 (2022.4.16)Briefings-DTI-HETA&#xff1a;基于异构图GCN和GAT的DTI预测 摘要1.引言2.模型方法 2.1 定义3.1 异构图上的GCN3.2 图注意机制3.3 链接预测 4.实验 4.1 案例分析 论文题目&#xff1…

【圣诞节限定】教你用Python画圣诞树,做个浪漫的程序员

最近在各大社交平台看到好多圣诞树&#xff0c;看到大佬们画的圣诞树一个比一个精致&#xff0c;我也特别想尝试画一棵特别的圣诞树。下面是我画的一棵简易的圣诞树&#xff0c;虽然和网络上大佬们的圣诞树相比不是很精致&#xff0c;但是对于萌新们来说&#xff0c;画这样一棵…

Access denied for user ‘root‘ @‘123.233.244.218‘(using password:YES)的解决方法

大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号&#xff1a;雄雄的小课堂。 前言 在我们新买了个服务器之后&#xff0c;数据库我觉得是比不可少的吧&#xff0c;任何一个项目&#xff0c;只要是动态的&#xff0c;都需要数据做数据的服务于支撑&#xff0c;目前我…

JUC并发编程第八篇,谈谈你对CAS的理解?自旋锁,CAS底层原理和存在的问题?

JUC并发编程第八篇&#xff0c;谈谈你对CAS的理解?自旋锁&#xff0c;CAS底层原理和存在的问题&#xff1f;一、CAS是什么&#xff1f;二、CAS的底层原理&#xff0c;如何理解UnSafe类&#xff1f;比较&#xff1a;i线程不安全&#xff0c;那 atomicInteger.getAndIncrement()…