python小白0基础利用飞桨平台实现AI识别加口罩

简介: python小白0基础利用飞桨平台实现AI识别加口罩

大家好,这里是小白三岁,三岁做梦都没有想到,能够踏上AI技术路,用上AI还完成了一个理想丰满现实骨感的项目,项目漏洞极多,希望大佬们帮忙改进,谢谢大家~~


项目简介



三岁通过AI技术对导入的照片进行AI识别,查看是否戴口罩,如果没有就采用人脸关键点检测,在对应的位置上加上“口罩”,里面涉及了百度飞桨的两款AI识别接口(点击查看具体的内容)


  1. 口罩识别
  2. 关键点检测


项目不足



因为小编三岁,技术不行对图片处理包括.jpg和.png格式的图处理不好,导致了照片底黑,过大,还希望有大佬帮忙改进提供自己的版本!在这里谢谢大家啦,如果有其他的想法可以自行修改添加自己的版本。


点击查看项目


项目说明


项目思路

  1. 项目先对导入照片文件进行读取,获得照片的绝对路径
  2. 建立连接根据照片路径 对路径下的图片进行口罩识别
  3. 对于返回内容(未带口罩的:‘NO MASK’)进行下一步
  4. 对未带口罩的进行关键点识别
  5. 获得相应的关键点
  6. 根据关键点添加“口罩”
  7. 继续进行判定直到全部判定结束


代码详解


  • 有关库的导入及使用(该处以飞桨AI studio平台代码使用方法为准,如有问题欢迎私聊)
    下载有关模块:


#运行模块加载
#口罩识别
!hub install pyramidbox_lite_mobile_mask==1.1.0
#关键点检测
!hub install face_landmark_localization==1.0.2
#抠图
!hub isntall deeplabv3p_xception65_humanseg
#关键点识别
!hub install face_landmark_localization==1.0.2
# hub run face_landmark_localization --input_path "/PATH/TO/IMAGE"
#下载第三方包
!pip install matplotlib


  • 导入有关第三方库:


import paddlehub as hub
import cv2
import os
import matplotlib.pyplot as plt 
import matplotlib.image as mpimg 
import paddlehub as hub
import numpy as np
import math
from PIL import Image
import importlib 


  • 创建照片地址读取函数:


def photo_path_read(path, add):
    for root, dirs, files in os.walk(path):
        for file in files:
            a = os.path.splitext(file)
            add.append(f'{root}/{a[0]}{a[1]}')
            # print(add)
        return add


  • 创建口罩识别函数:


def Masks_to_identify(photo_path):
    module = hub.Module(name="pyramidbox_lite_mobile_mask")
    !hub run pyramidbox_lite_mobile_mask --input_path f"{pothot_path}"
    test_img_path = f"{photo_path}"
    # set input dict
    input_dict = {"data": [cv2.imread(test_img_path)]}
    results = module.face_detection(data=input_dict)
    print(results)
    return results
    '''
    可以采用以下代码对图片识别情况进行查看 
    !hub run pyramidbox_lite_mobile_mask --input_path 'photo/Baidu_001.jpg(图片地址)'
    '''
    # test_img_path = f"{photo_path}"
    # img = mpimg.imread(test_img_path) 
    # # 展示待预测图片
    # plt.figure(figsize=(10,10))
    # plt.imshow(img) 
    # plt.axis('off') 
    # plt.show()
    # # 预测结果展示
    # test_img_path = f"detection_result/{photo_path}"
    # img = mpimg.imread(test_img_path)
    # # 展示预测结果图片
    # plt.figure(figsize=(10,10))
    # plt.imshow(img) 
    # plt.axis('off') 
    # plt.show()


  • 关键点识别及添加“口罩”函数:


def Masks_to_add(path):
    print('开始添加')
    src_img = cv2.imread(f'{path}')
    module = hub.Module(name="face_landmark_localization")
    result = module.keypoint_detection(images=[src_img])
    # print(result)
    # print(type(result))
    box_m = []
    box_0 = result[0]['data'][0][0]
    box_1 = result[0]['data'][0][11]#)(
    box_m.append(int(box_0[0]))
    box_m.append(int(box_0[1]))
    box_m.append(int(box_1[0]+30))
    box_m.append(int(box_1[1]+30))
    print(box_0,box_1,box_m)
    base_img = Image.open(f'{path}')
    #加载需要P上去的图片
    tmp_img = Image.open('001.jpg')
    #以下添加标注均为个人尝试(无关紧要)
    # has_alpha = tmp_ing.mode == 'RGBA'
    # tmp_ing.putalptha()[-1]
    # tmp.img = tmp_img.convert('RGBA')
    #这里可以选择一块区域或者整张图片
    tmp_img = tmp_img.resize((100,100))
    #或者使用整张图片
    region = tmp_img
    print('正在判定大小')
    region = region.resize((int(box_m[2] - box_m[0]), int(box_m[3] - box_m[1])))
    print(region)
    base_img.paste(region, box_m)
    print(base_img)
    base_img.show() # 查看合成的图片
    print(base_img)
    # print(f'new_{path[6:]}')
    base_img.save(f'new_{path[6:]}') #保存图片
    print('生成成功')


  • 主函数


if __name__ =='__main__':
    add = []
    photo_path = 'photo'
    path_listes = photo_path_read(photo_path, add)
    # print(add)
    for path_list in path_listes:
        # print(path_list)
        masks_data = Masks_to_identify(path_list)
        # print(masks_data[0]['data']['label'])
        try:
            if masks_data[0]['data']['label'] == 'NO MASK':
                print(path_list)
                Masks_to_add(path_list)
        except:
            continue


解析


其他的没有什么需要解析的就是一个关键点检测:


20200502185910553.jpg


以上是关键点检测的结果,需要添加口罩只需要212位置上添加就可以了,至于图片处理不是非常完善,这里就不展示成果了,怕倒大家胃口。


成果思考及总结


这是一个创新赛,第一是有创新思想,第二要技术,小编技术有限,这一点在完成项目时真的深有体会,百度(度娘)都翻遍了,大佬都问了,情况不同帮不了你,还是必须要不断提高自己,不管这次的成绩如何结果如何无所谓了,关键的是这一次的过程,这一次过程中的学习,真的很多,包括百度飞桨小白逆袭大神课程也一样,学到的非常多。


感谢大家支持,这一次的锻炼真的为接下来的学习具有一定的指导作用,希望接下来再接再力,继续努力。谢谢大家~~~~~~


目录
相关文章
|
1月前
|
存储 人工智能 开发工具
AI助理化繁为简,速取代码参数——使用python SDK 处理OSS存储的图片
只需要通过向AI助理提问的方式输入您的需求,即可瞬间获得核心流程代码及参数,缩短学习路径、提升开发效率。
1426 4
AI助理化繁为简,速取代码参数——使用python SDK 处理OSS存储的图片
|
8天前
|
存储 人工智能 文字识别
利用AI能力平台实现档案馆纸质文件的智能化数字处理
在传统档案馆中,纸质文件管理面临诸多挑战。AI能力平台利用OCR技术,通过图像扫描、预处理、边界检测、文字与图片分离、文字识别及结果存储等步骤,实现高效数字化转型,大幅提升档案处理效率和准确性。
|
7天前
|
机器学习/深度学习 人工智能 自然语言处理
探索AI驱动的个性化学习平台构建###
【10月更文挑战第29天】 本文将深入探讨如何利用人工智能技术,特别是机器学习与大数据分析,构建一个能够提供高度个性化学习体验的在线平台。我们将分析当前在线教育的挑战,提出通过智能算法实现内容定制、学习路径优化及实时反馈机制的技术方案,以期为不同背景和需求的学习者创造更加高效、互动的学习环境。 ###
26 3
|
7天前
|
机器学习/深度学习 人工智能 自然语言处理
医疗行业的语音识别技术解析:AI多模态能力平台的应用与架构
AI多模态能力平台通过语音识别技术,实现实时转录医患对话,自动生成结构化数据,提高医疗效率。平台具备强大的环境降噪、语音分离及自然语言处理能力,支持与医院系统无缝集成,广泛应用于门诊记录、多学科会诊和急诊场景,显著提升工作效率和数据准确性。
|
9天前
|
人工智能 C语言 Python
AI师傅+通义灵码=零基础小白上手python真·不是梦
作为一名不懂编程的设计师,我一直渴望掌握AI辅助设计。在快刀青衣的推荐下,我尝试了AI师傅和通义灵码,成功写出了第一个Python程序,并理解了编程的基本概念。通过AI师傅的引导和通义灵码的帮助,我顺利完成了Coursera上的Python课程,获得了两张证书。这种学习方式让编程变得不再遥不可及,为我的未来学习打开了新大门。
|
14天前
|
SQL 人工智能 DataWorks
DataWorks:新一代 Data+AI 数据开发与数据治理平台演进
本文介绍了阿里云 DataWorks 在 DA 数智大会 2024 上的最新进展,包括新一代智能数据开发平台 DataWorks Data Studio、全新升级的 DataWorks Copilot 智能助手、数据资产治理、全面云原生转型以及更开放的开发者体验。这些更新旨在提升数据开发和治理的效率,助力企业实现数据价值最大化和智能化转型。
130 5
|
1月前
|
前端开发 数据可视化 API
Python实现智能家居设备的统一控制平台
【10月更文挑战第6天】 Python实现智能家居设备的统一控制平台
49 11
|
25天前
|
人工智能 文字识别 Java
SpringCloud+Python 混合微服务,如何打造AI分布式业务应用的技术底层?
尼恩,一位拥有20年架构经验的老架构师,通过其深厚的架构功力,成功指导了一位9年经验的网易工程师转型为大模型架构师,薪资逆涨50%,年薪近80W。尼恩的指导不仅帮助这位工程师在一年内成为大模型架构师,还让他管理起了10人团队,产品成功应用于多家大中型企业。尼恩因此决定编写《LLM大模型学习圣经》系列,帮助更多人掌握大模型架构,实现职业跃迁。该系列包括《从0到1吃透Transformer技术底座》、《从0到1精通RAG架构》等,旨在系统化、体系化地讲解大模型技术,助力读者实现“offer直提”。此外,尼恩还分享了多个技术圣经,如《NIO圣经》、《Docker圣经》等,帮助读者深入理解核心技术。
SpringCloud+Python 混合微服务,如何打造AI分布式业务应用的技术底层?
|
1月前
|
数据采集 人工智能 自然语言处理
Python实时查询股票API的FinanceAgent框架构建股票(美股/A股/港股)AI Agent
金融领域Finance AI Agents方面的工作,发现很多行业需求和用户输入的 query都是和查询股价/行情/指数/财报汇总/金融理财建议相关。如果需要准确的 金融实时数据就不能只依赖LLM 来生成了。常规的方案包括 RAG (包括调用API )再把对应数据和prompt 一起拼接送给大模型来做文本生成。稳定的一些商业机构的金融数据API基本都是收费的,如果是以科研和demo性质有一些开放爬虫API可以使用。这里主要介绍一下 FinanceAgent,github地址 https://github.com/AI-Hub-Admin/FinanceAgent
|
1月前
|
人工智能 开发者 Python
python读取word文档 | AI应用开发
在RAG系统中,构建知识库时需读取多种外部文档,其中Word文档较为常见。本文介绍如何使用`python-docx`库读取Word文档(.docx格式)中的标题、段落、表格和图片等内容。首先通过`pip install python-docx`安装库,然后利用提供的接口提取所需信息。尽管该库功能强大,但在识别标题样式时需自定义逻辑,并且仅提供图片的URI而非直接加载。示例代码展示了读取文本、识别标题、读取表格及获取图片URI的方法。【10月更文挑战第2天】
71 2

热门文章

最新文章

下一篇
无影云桌面