DpCas(深度学习组件化应用系统)介绍:基于人脸动作的活体检测 -案例尝试(1)

        2021年2月24日,我开启了一个新的开源项目 DpCas(Deep Learning Componentized Application System),中文的名称:深度学习组件化应用系统。

        DpCas 开源项目地址:https://codechina.csdn.net/EricLee/dpcas

        这个项目其实是由于我的焦虑萌生出的想法,(之前的文章链接,同学们有兴趣可以看看:https://blog.csdn.net/weixin_42140236/article/details/114343870#comments_16134627

        在这个算法行业,我经常看到的现象是在重复的板砖(相同类型的任务的算法如检测、识别、回归、度量、实例\语义分割、人体关键点、表情识别等,大家也可以随便看一个招聘网站的算法招聘,你看个几十家或是十几家基本能得出市场普遍需要的算法模块技术名录),虽然每个具体算法任务的模型时有更新,但是基础任务类型不会变或是极为缓慢的演化过程,同一个公司不同项目还是这些类型的算法模块,不同公司之间可能算法模块也大同小异。这又让我觉得算法工程师(这里主要指的是大部分算法从业人员,这个行业还是需要有研究人员在前沿领域去不断探索)是可替代的。

        为了突破这样的窘境,破局的方向在哪,是否有前车之鉴可以参考?我虽然没做过前端开发,但是经常听说组件化开发,我就在想每一个具体算法项目实现,就是将不同的算法模块当作组件集成到项目的pipeline中。那么算法能否在业务落地时也可以实现类似与前端的组件化开发,这是否是算法应用发展的一个方向和趋势,最近也在看前端相关组件化相关的资料,希望更好的去思考它与算法项目的异同点,怎么能更好的去探索实现算法组件化式的开发及框架,它的需求是否真实存在。

        为了做这个尝试是考虑一个简单通用的组件化集成框架,让他能够根据不同的项目组建不同的算法模块,让开发者根据自己的业务逻辑实现完整的pipeline,但是只要更多的去考虑业务的实现逻辑和效果。

         在我目前设计的DpCas框架分为:

         1) Application : 应用 pipeline,即业务流实现。

         2)xxx_lib: 应用支持库,具体包括 : A) cfg 配置文件 , B) cores 核心功能函数实现  ,C) utils 通用功能函数实现。

         3)components : 不同的算法推理模块。

        如图 DpCas的 框架(FrameWork):

       

DpCas FrameWork
DpCas FrameWork 0.1

         最近我邀请我的朋友加入了DpCas开源项目,这样可以做更多的尝试,后面也会不断邀请更多的同学朋友参加DpCas,通过DpCas项目让更多不同类型的开发者,更快更棒的实现不同行业类型的项目,同时也感谢关注DpCas项目的开发者,你们对于项目的使用是对我坚持方向的支持,你们的反馈是DpCas的优化方向。

         那么我们接下来通过 《 基于人脸动作的活体检测 》案例来看下怎么通过 DpCas来进行实践。

         这里我们进行一个完整的项目流程:

         1)分析需求场景:移动端场景下的基于人脸动作的活体检测,那么就是用户是自拍的角度进行使用。

         2)实现方案(pipeline)设计: 机器随机的产生指定人脸动作,具体动作类型包括:动作1 点头,动作2 摇头 ,动作3 眨眼 ,动作4 掌嘴。

               具体步骤:

               A) 人脸检测 (考虑人脸居中,或是在UI人像掩码交集足够大,锁定人脸目标)

               B) 跟踪人脸

               C) 对跟踪的目标人脸做时序的动作获取,如人脸角度模型识别点头角度(pitch)和摇头角度(yaw)的时序变化,人脸微动作单元检测模型识别人眼睛和嘴巴的开闭时序状态。

               D) 对目标人脸获取的时序动作进行时序分析,得出其是否点头、摇头、眨眼、掌嘴动作。

               E) 判断动作是否与机器发布的动作符合,符合即判断为活体。

#接下来:我们看下DepCas实现这个项目的部分代码,以下代码是该项目的Application  部分的,脚本地址:https://codechina.csdn.net/EricLee/dpcas/-/blob/master/applications/face_bioassay_local_app.py

# cfg_file 配置文件
def main_face_bioassay(video_path,cfg_file):
    config = parse_data_cfg(cfg_file)
    print("\n/************** Face Bioassay *****************/")
    print("/********************************************************/\n")
    # 加载人脸检测组件
    face_detect_model = yolo_v3_face_model(conf_thres=float(config["detect_conf_thres"]),nms_thres=float(config["detect_nms_thres"]),
        model_arch = config["detect_model_arch"],model_path = config["detect_model_path"],yolo_anchor_scale = float(config["yolo_anchor_scale"]),
        img_size = float(config["detect_input_size"]),
        )
    
    # 加载人脸姿态角(pitch,roll,yaw)组件,对点头、摇头进行分析
    face_euler_model = FaceAngle_Model(model_path = config["face_euler_model_path"])
    # 加载人脸微动作组件,对眨眼和掌嘴检测
    face_au_model = FaceAu_Model(model_path = config["face_au_model_path"])

    cap = cv2.VideoCapture(video_path) # 加载视频
    frame_idx = 0
    while cap.isOpened():
        ret,img = cap.read()
        if ret:
            frame_idx += 1
            video_time = cap.get(cv2.CAP_PROP_POS_MSEC)
            # 检测脸的模型推理,返回人脸边界框
            faces_bboxes =face_detect_model.predict(img,vis = False) 
            # 对每一张人脸进行姿态模型和人脸微动作模型的推理获得,人脸角度及眼睛嘴巴的开闭状态。
            faces_message = get_faces_batch_attribute(
                face_multitask_model,face_euler_model,face_au_model,faces_bboxes,img,use_cuda = True,vis = True)
            if faces_message is not None: # 返回信息
                print("faces_message : {} \n".format(faces_message))
                #------------------------- todo 这里根据项目方案,对算法输出的结果进行分析实现 “基于人脸动作的活体检测业务逻辑”
            
            cv2.namedWindow("DriverFatigueMonitor",0)
            cv2.imshow("DriverFatigueMonitor",img)
            if cv2.waitKey(1)==27:
                break
        else:
            break

    cv2.destroyAllWindows()

       我在写着 DpCas项目的过程中,目前它的定位和实现风格更加适合于应用方向(其实这个项目可能目前更适合于并不是算法背景但是有软件开发经验的同学),同时对于算法组件式开发对于开发者自有组件的集成也是方便的,这和前端的组件开发真的很像。对于上面的业务逻辑我没有继续写而是交给了我的朋友,让他用这个DpCas框架作一个尝试,我相信不同的尝试,不同的思维能够碰撞出更多的火花。

       我觉得:“不会组件化开发的程序员不是一个好的算法工程师,同时我也感觉随着发展,不会算法项目实现开发的程序员也不是一个好的应用开发者。”,一句玩笑话,但是我觉得还是符合客观情况的。

       当然这个项目也存在不足,其中一点就是定制化的业务数据,我们的组件会提供完整的训练脚本,支持开发者同学去训练自己的业务数据。

       希望以后 通过DpCas,高效的实现不同行业不同类型的项目,我在尝试挖掘更多的真实需求,用DpCas去实现,让它不断成长,我很希望,非常欢迎同学们在留言处说“我这边有个需求,你看能不能实现,是否能给出方案”,同时希望同学们附带项目背景,尽可能相关信息详细,这样便于我们更好的理解,我们会合理的评估我们目前具备的资源和目前能力所及范围方案的可行性,我们会不断更新更多算法组件和优化迭代我们的功能架构。

       谢谢大家,还有一个事,差点忘记说了,《 基于人脸动作的活体检测 》的业务开发我的朋友正在开发,还没有完全写完,后面会进行更新~ 

               

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 基于深度学习的工业检应用编码评估试题主要针对NVIDIA构建的相关工具和技术进行考察。以下是可能的答案: 1. NVIDIA的CUDA技术是一种用于并行计算的平台和编程模型,适用于NVIDIA的GPU架构。CUDA提供高性能的计算能力,可用于开发深度学习算法和应用。答案:CUDA是一种用于并行计算的技术。 2. NVIDIA的TensorRT是一种高效推理引擎,用于将训练好的深度学习模型部署到生产环境中。TensorRT能够优和加速推理过程,提高深度学习应用的性能和效率。答案:TensorRT是一种高效推理引擎。 3. NVIDIA的DeepStream是一种用于视频分析和物体识别的开发平台。DeepStream可以通过深度学习算法实现实时视频流的处理和分析,并支持多路视频流的并行处理。答案:DeepStream是一种用于视频分析和物体识别的开发平台。 4. NVIDIA的CUDA-X AI是一套用于加速和简AI应用开发的工具和库。CUDA-X AI包含多种组件,如cuDNN、cuBLAS和NCCL,可提供高性能的深度学习计算和通信能力。答案:CUDA-X AI是一套用于加速和简AI应用开发的工具和库。 5. NVIDIA的Jetson系列是一种嵌入式计算平台,适用于开发和部署基于深度学习的工业检应用。Jetson平台具有高性能的计算能力和低功耗的特点,可满足工业环境中的各种要求。答案:Jetson是一种嵌入式计算平台,适用于开发和部署工业检应用。 总结起来,NVIDIA通过提供CUDA技术、TensorRT推理引擎、DeepStream开发平台、CUDA-X AI工具和库,以及Jetson嵌入式计算平台等,构建了基于深度学习的工业检应用编码评估试题的解决方案。这些工具和技术可以提供高性能的计算、推理和分析能力,帮助开发者快速构建和部署面向工业检的深度学习应用。 ### 回答2: NVIDIA构建基于深度学习的工业检应用编码评估试题的答案如下: 1. 深度学习技术在工业检应用中的作用主要有三个方面。首先,利用深度学习的图像处理能力,可以实现对工业产品和设备进行高效且准确的检和识别。其次,深度学习技术可以通过建立大规模的数据库和模型,实现对工业产品和设备进行智能诊断和预。最后,深度学习技术可以结合大数据分析,优生产过程,提高生产线的效率和质量。 2. 在工业检应用中,深度学习技术的核心是建立高效且准确的模型。通过模型训练,可以将输入数据与标签进行映射,从而实现对工业产品和设备的检和识别。为了评估模型的性能,可以使用准确率、召回率、精确率等指标进行评估。此外,还可以通过交叉验证、混淆矩阵等方法来评估模型的泛能力和鲁棒性。 3. 在工业检应用的编码过程中,需要对相关技术和算法进行实现和调整。具体来说,可以使用Python编程语言结合深度学习框架,如TensorFlow或PyTorch,来编写工业检的模型架构和训练代码。同时,可以通过调整模型的超参数、损失函数和优器等来优模型的性能。 4. 在进行工业检应用试时,可以采用离线试和在线试相结合的方式。离线试可以使用已有的工业数据集,通过模型进行预并计算性能指标。在线试可以将模型部署到实际工业生产中,实时对工业产品和设备进行检和识别,并收集实时数据验证模型的性能和鲁棒性。 总结而言,NVIDIA构建基于深度学习的工业检应用编码评估试题的答案需要包括深度学习技术在工业检应用中的作用、模型评估方法、编码过程和试方法等方面的内容。这些内容可以帮助评估和优深度学习模型在工业检应用中的性能和效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值