20213224《Python程序设计》实验四 Python综合实践实验报告

课程:        《Python程序设计》

班级:        2132

姓名:        黄子洋

学号:        20213224

实验教师:  王志强

实验日期:  2022年5月24日

必修/选修: 公选课

 

一、实验内容

 

1.灵感来源:

 

 

 

    新冠肺炎席卷全球,新型冠状病毒可以通过呼吸道飞沫等方式传播,正确佩戴口罩可以有效切断新冠肺炎病毒的传播途径,是预防感染的有效措施。国内公众场合要求戴口罩,而商场、餐饮、地铁等人员密集型的场所对人流量高峰时段的应对措施往往令人力不从心,而且自然场景中通常存在遮挡、密集人群和小尺度目标等复杂因素,对人脸戴口罩的检测效果产生影响。

 

2.主要内容:

    针对该问题,本系统了在复杂场景下的口罩戴检测算法,可以自动准确且快速地识别图片或视频中人物是否戴口罩,有着重要的应用场景和市场前景。在过去,人脸检测模型并不完善,只能对于单纯的人脸进行识别,而我们要介绍的人脸口罩识别与之前的系统不同,对于人脸的识别产生了两种不同的类别,即为戴或不戴口罩这两种类别,通过对传入的图片进行一系列预处理,通过不断减弱外界的因素来对于口罩戴的影响,我们采用了爬虫爬取到的口罩戴检测数据集来进行数据处理训练,并在数据集上多次训练,最终实现了对于口罩戴情况的检测取得了较为理想的效果。但是仍存在部分问题,例如人脸遮挡过多或者非常不清晰的情况下,本模型有可能会误判,这种情况下对于口罩戴的检测并不理想,之后的改进可以从这点出发,来进一步改善网络设计,提升检测精确度,提高检测效率。

  

二、实验过程及结果

 

研究前期,对安卓端及PC端开发环境做了初步了解,查阅相关论文,理解图片数据处理的原理,并学习掌握了部分AI自我学习代码。

研究中期,调用了pytorch框架,argparse、numpy、cv2、time库,研究其运行的原理,并对其进行了初步优化,基本实现了对单一图片的口罩识别。

参考资料:https://github.com/AIZOOTech/FaceMaskDetection/commit/30978c6918cfbe564cfc246bab478d0c1f3d210d

《add pytorch gpu support,add tensorflow jupyter demo》

 

(1)打开 Readme 文件,根据内容下载相应pytorch库,为编程环境做准备

 

 

 (2)打开test文件,对图片进行测试

 

 a.程序代码

import os
import paddle.fluid as fluid

def load_model(params_file, model_file, use_gpu=False, use_mkl=False, mkl_thread_num=4):
    config = fluid.core.AnalysisConfig(model_file, params_file)

    if use_gpu:
        # 设置GPU初始显存(单位M)和Device ID
        config.enable_use_gpu(100, 0)
    else:
        config.disable_gpu()
    if use_mkl and not use_gpu:
        config.enable_mkldnn()
        config.set_cpu_math_library_num_threads(mkl_thread_num)
    config.disable_glog_info()
    config.enable_memory_optim()

    # 开启计算图分析优化,包括OP融合等
    config.switch_ir_optim(True)
    # 关闭feed和fetch OP使用,使用ZeroCopy接口必须设置此项
    config.switch_use_feed_fetch_ops(False)
    predictor = fluid.core.create_paddle_predictor(config)
    return predictor

predictor = load_model('models/paddle/__params__', 'models/paddle/__model__', use_gpu=False)

import numpy as np
data = np.random.rand(1, 3, 260, 260).astype('float32')

input_names = predictor.get_input_names()
input_tensor = predictor.get_input_tensor(input_names[0])
input_tensor.copy_from_cpu(data)

predictor.zero_copy_run()

output_names = predictor.get_output_names()
output_tensor = predictor.get_output_tensor(output_names[0])
result = output_tensor.copy_to_cpu()

print(result.shape)v

 

 

 

 

 

 

三、实验过程及结果

 

四、遇到的问题和解决办法

1.由于pytorch编辑器地址不兼容,程序无法运行

           在pycharm中更改编辑器地址,最终运行成功

五、实验感悟

       首先非常感谢老师这一学期的指导,让我对python有了一点初步的认识,也让我基本具备了自我学习python的能力。

       其次,上老师的课是一种享受。志强老师讲课非常幽默风趣,经常可以把人逗笑,上老师的课从来没有感觉到无聊过。每节课都能认识新的东西,学到新知识。而且志强老师安排我们做的实验也会让我们有成就感,让我们体会到自己确实学到了东西。有继续学python的动力。

       但是,由于本人计算机基础可能相对薄弱,如果上课有一个点没听懂可能之后就无法跟上课堂节奏,需要自己通过菜鸟教程、python中文网等网络途径自学,希望老师可以照顾一下我们基础薄弱 的同学。

 

 六、华为云参考

虽然是因为实验要求必须使用华为云,但是真正使用华为云后却发现其内容丰富,非常适合开发

 

posted @ 2022-05-26 10:10  Silentbace  阅读(337)  评论(0)    收藏  举报