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


成果思考及总结


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


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


目录
相关文章
|
17天前
|
人工智能 运维 监控
首个云上 AI 原生全栈可观测平台来了!
9月21日,2024 云栖大会,阿里云发布全新的 AI 原生全栈可观测平台,首次实现云上 AI 大模型从训练到推理再到应用的全链路实时观测、告警与诊断。
|
21天前
|
人工智能 JSON 数据格式
RAG+Agent人工智能平台:RAGflow实现GraphRA知识库问答,打造极致多模态问答与AI编排流体验
【9月更文挑战第6天】RAG+Agent人工智能平台:RAGflow实现GraphRA知识库问答,打造极致多模态问答与AI编排流体验
RAG+Agent人工智能平台:RAGflow实现GraphRA知识库问答,打造极致多模态问答与AI编排流体验
|
2天前
|
存储 人工智能 开发工具
AI助理化繁为简,速取代码参数——使用python SDK 处理OSS存储的图片
只需要通过向AI助理提问的方式输入您的需求,即可瞬间获得核心流程代码及参数,缩短学习路径、提升开发效率。
57 0
AI助理化繁为简,速取代码参数——使用python SDK 处理OSS存储的图片
|
18天前
|
人工智能 分布式计算 大数据
AI Native平台,跨越AI应用从创新到生产的鸿沟
2024年是AI应用的元年,以大模型为中心的 AI Native 应用大爆发正在从理想变成现实。云计算带来的应用创新潮,经历了虚拟机时代和云原生时代,正在全面拥抱以大模型为核心的 AI Native 阶段,推动大数据与AI的工作流前所未有地紧密结合。领先大模型、高效的AI计算平台和统一的大数据平台是 AI Native 应用广泛落地背后不可获缺的要素。 9月20日,2024云栖大会上,阿里云副总裁、阿里云计算平台事业部负责人汪军华宣布大数据AI平台全面升级,为 AI Native 应用大爆发提供坚实的平台支撑。
|
29天前
|
机器学习/深度学习 人工智能 TensorFlow
神经网络深度剖析:Python带你潜入AI大脑,揭秘智能背后的秘密神经元
【9月更文挑战第12天】在当今科技飞速发展的时代,人工智能(AI)已深入我们的生活,从智能助手到自动驾驶,从医疗诊断到金融分析,其力量无处不在。这一切的核心是神经网络。本文将带领您搭乘Python的航船,深入AI的大脑,揭秘智能背后的秘密神经元。通过构建神经网络模型,我们可以模拟并学习复杂的数据模式。以下是一个使用Python和TensorFlow搭建的基本神经网络示例,用于解决简单的分类问题。
38 10
|
27天前
|
Unix Shell Linux
nohup python -u ai_miniprogram_main.py > ../iwork.out 2>&1 & 这句命令是做什么的?
nohup python -u ai_miniprogram_main.py > ../iwork.out 2>&1 & 这句命令是做什么的?
11 1
|
27天前
|
人工智能 监控 Cloud Native
【涂鸦即艺术】基于云应用开发平台 CAP 部署 AI 实时生图绘板
本实验介绍如何使用阿里云的云原生应用开发平台CAP、函数计算FC和日志服务SLS,三步创建AI实时绘画平台。
【涂鸦即艺术】基于云应用开发平台 CAP 部署 AI 实时生图绘板
|
1月前
|
机器学习/深度学习 人工智能 TensorFlow
深入骨髓的解析:Python中神经网络如何学会‘思考’,解锁AI新纪元
【9月更文挑战第11天】随着科技的发展,人工智能(AI)成为推动社会进步的关键力量,而神经网络作为AI的核心,正以其强大的学习和模式识别能力开启AI新纪元。本文将探讨Python中神经网络的工作原理,并通过示例代码展示其“思考”过程。神经网络模仿生物神经系统,通过加权连接传递信息并优化输出。Python凭借其丰富的科学计算库如TensorFlow和PyTorch,成为神经网络研究的首选语言。
31 1
|
14天前
|
数据采集 机器学习/深度学习 人工智能
云栖实录 | GenAI 时代 AI Infra 工程技术趋势与平台演进
本文根据2024云栖大会实录整理而成,演讲信息如下: 演讲人:林伟 | 阿里云智能集团研究员、阿里云人工智能平台 PAI 负责人;黄博远|阿里云智能集团资深产品专家、阿里云人工智能平台 PAI 产品负责人 活动:2024 云栖大会 - AI Infra 核心技术专场、人工智能平台 PAI 年度发布专场
|
1月前
|
机器学习/深度学习 人工智能 TensorFlow
神经网络入门到精通:Python带你搭建AI思维,解锁机器学习的无限可能
【9月更文挑战第10天】神经网络是开启人工智能大门的钥匙,不仅是一种技术,更是模仿人脑思考的奇迹。本文从基础概念入手,通过Python和TensorFlow搭建手写数字识别的神经网络,逐步解析数据加载、模型定义、训练及评估的全过程。随着学习深入,我们将探索深度神经网络、卷积神经网络等高级话题,并掌握优化模型性能的方法。通过不断实践,你将能构建自己的AI系统,解锁机器学习的无限潜能。
30 0