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


成果思考及总结


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


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


目录
相关文章
|
2天前
|
存储 人工智能 自然语言处理
FoloUp:比HR更懂岗位需求!开源语音面试平台爆火:1份岗位需求生成100问,语音AI追问逻辑漏洞
FoloUp 是一个开源的 AI 语音面试平台,能够根据职位描述自动生成定制化的面试问题,并与候选人进行自然对话式的语音面试,帮助企业高效招聘。
30 9
FoloUp:比HR更懂岗位需求!开源语音面试平台爆火:1份岗位需求生成100问,语音AI追问逻辑漏洞
|
6天前
|
存储 人工智能 前端开发
平替cursor : 全平台AI程序员插件,免费无广
平替cursor : 全平台AI程序员插件,免费无广。
190 11
|
6天前
|
人工智能 安全 机器人
LangBot:无缝集成到QQ、微信等消息平台的AI聊天机器人平台
LangBot 是一个开源的多模态即时聊天机器人平台,支持多种即时通信平台和大语言模型,具备多模态交互、插件扩展和Web管理面板等功能。
334 14
LangBot:无缝集成到QQ、微信等消息平台的AI聊天机器人平台
|
6天前
|
存储 人工智能 NoSQL
Airweave:快速集成应用数据打造AI知识库的开源平台,支持多源整合和自动同步数据
Airweave 是一个开源工具,能够将应用程序的数据同步到图数据库和向量数据库中,实现智能代理检索。它支持无代码集成、多租户支持和自动同步等功能。
66 14
|
6天前
|
人工智能 Linux 开发工具
Kiln AI:零代码实现微调模型!自动生成合成数据与微调模型的开源平台
Kiln AI 是一款开源的 AI 开发工具,支持零代码微调多种语言模型,生成合成数据,团队协作开发,自动部署。帮助用户快速构建高质量的 AI 模型。
396 7
Kiln AI:零代码实现微调模型!自动生成合成数据与微调模型的开源平台
|
9天前
|
人工智能 开发框架 机器人
AstrBot:轻松将大模型接入QQ、微信等消息平台,打造多功能AI聊天机器人的开发框架,附详细教程
AstrBot 是一个开源的多平台聊天机器人及开发框架,支持多种大语言模型和消息平台,具备多轮对话、语音转文字等功能。
2185 13
AstrBot:轻松将大模型接入QQ、微信等消息平台,打造多功能AI聊天机器人的开发框架,附详细教程
|
14天前
|
人工智能 物联网 开发者
Oumi:开源的AI模型一站式开发平台,涵盖训练、评估和部署模型的综合性平台
Oumi 是一个完全开源的 AI 平台,支持从 1000 万到 4050 亿参数的模型训练,涵盖文本和多模态模型,提供零样板代码开发体验。
204 43
Oumi:开源的AI模型一站式开发平台,涵盖训练、评估和部署模型的综合性平台
|
22天前
|
人工智能 开发者 Python
Chainlit:一个开源的异步Python框架,快速构建生产级对话式 AI 应用
Chainlit 是一个开源的异步 Python 框架,帮助开发者在几分钟内构建可扩展的对话式 AI 或代理应用,支持多种工具和服务集成。
137 9
|
27天前
|
存储 人工智能 Serverless
AI 短剧遇上函数计算,一键搭建内容创意平台
为了帮助更多内容创作者和企业快速实现 AI 短剧创作,函数计算 FC 联合百炼联合推出“AI 剧本生成与动画创作解决方案”,通过函数计算 FC 构建 Web 服务,结合百炼模型服务和 ComfyUI 生图平台,实现从故事剧本撰写、插图设计、声音合成和字幕添加到视频合成的一站式自动化流程。创作者只需通过简单操作,就能快速生成高质量的剧本,并一键转化为精美的动画。
|
1月前
|
SQL 人工智能 数据管理
跨云数据管理平台DMS:构建Data+AI的企业智能Data Mesh
跨云数据管理平台DMS助力企业构建智能Data Mesh,实现Data+AI的统一管理。DMS提供开放式元数据服务OneMeta、一站式智能开发平台和云原生AI数据平台,支持多模数据管理和高效的数据处理。结合PolarDB、AnalyticDB等核心引擎,DMS在多个垂直场景中展现出显著优势,如智能营销和向量搜索,提升业务效率和准确性。通过DataOps和MLOps的融合,DMS为企业提供了从数据到AI模型的全生命周期管理,推动数据驱动的业务创新。

推荐镜像

更多