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位置上添加就可以了,至于图片处理不是非常完善,这里就不展示成果了,怕倒大家胃口。


成果思考及总结


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


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


目录
相关文章
|
4月前
|
云安全 人工智能 安全
Dify平台集成阿里云AI安全护栏,构建AI Runtime安全防线
阿里云 AI 安全护栏加入Dify平台,打造可信赖的 AI
3116 166
|
4月前
|
数据可视化 关系型数据库 MySQL
基于python大数据的的海洋气象数据可视化平台
针对海洋气象数据量大、维度多的挑战,设计基于ECharts的可视化平台,结合Python、Django与MySQL,实现数据高效展示与交互分析,提升科研与决策效率。
|
4月前
|
人工智能 运维 Java
Spring AI Alibaba Admin 开源!以数据为中心的 Agent 开发平台
Spring AI Alibaba Admin 正式发布!一站式实现 Prompt 管理、动态热更新、评测集构建、自动化评估与全链路可观测,助力企业高效构建可信赖的 AI Agent 应用。开源共建,现已上线!
5758 80
|
4月前
|
人工智能 供应链 搜索推荐
拔俗AI 智能就业咨询服务平台:求职者的导航,企业的招聘滤网
AI智能就业平台破解求职招聘困局:精准匹配求职者、企业与高校,打破信息壁垒。简历诊断、岗位推荐、技能提升一站式服务,让就业更高效。
249 0
|
4月前
|
人工智能 搜索推荐 大数据
拔俗AI一体化数字销售服务平台:让企业销售更智能、更高效
AI一体化数字销售服务平台融合AI与大数据,集成客户管理、智能推荐、自动化跟进等功能,实现销售全流程智能化。打破传统模式困局,提升转化率与效率,助力企业降本增效,抢占数字化转型先机。(238字)
311 0
|
4月前
|
存储 人工智能 搜索推荐
拔俗AI大模型教学平台:开启智能教育新时代
在AI与教育深度融合背景下,本文基于阿里云技术构建大模型教学平台,破解个性化不足、反馈滞后等难题。通过“大模型+知识图谱+场景应用”三层架构,实现智能答疑、精准学情分析与个性化学习路径推荐,助力教学质量与效率双提升,推动教育智能化升级。
557 0
|
4月前
|
传感器 人工智能 监控
拔俗多模态跨尺度大数据AI分析平台:让复杂数据“开口说话”的智能引擎
在数字化时代,多模态跨尺度大数据AI分析平台应运而生,打破数据孤岛,融合图像、文本、视频等多源信息,贯通微观与宏观尺度,实现智能诊断、预测与决策,广泛应用于医疗、制造、金融等领域,推动AI从“看懂”到“会思考”的跃迁。
388 0
|
4月前
|
人工智能 运维 NoSQL
拔俗AI大模型知识管理平台:让技术团队的“隐性知识”不再沉睡
技术团队常困于知识“存得住却用不好”。AI大模型知识管理平台如同为团队知识装上“智能大脑”,打通文档、代码、日志等碎片信息,实现智能检索、自动归集、动态更新与安全共享。它让新人快速上手、老手高效排障,把散落的经验变成可复用的智慧。知识不再沉睡,经验永不流失。
162 0
|
4月前
|
人工智能 自然语言处理 搜索推荐
营销智能体 AI 平台:技术人告别营销需求返工的实战手册
技术人常陷营销琐事:改文案、调接口、算数据。营销智能体AI平台并非“营销玩具”,而是为技术减负的利器。它将内容生成、投放优化、数据复盘自动化,无缝对接现有系统,提升效率2倍以上。落地需避三坑:勿贪全、勿求完美、紧扣业务需求。让技术专注核心,告别重复搬运。
157 0
|
4月前
|
人工智能 供应链 算法
AI 产业服务平台:打造产业智能化的“加速器”与“连接器”
AI产业服务平台整合技术、数据、算力与人才,为中小企业提供低门槛、一站式AI赋能服务,覆盖研发、生产、营销、管理全链条,助力产业智能化转型。
228 0

推荐镜像

更多