• 中国软件杯项目总结A7


    本次参赛题目为2022年的A7-基于国产操作系统SylixOS的人脸识别应用开发

    背景:

    随着云计算、大数据、机器学习和深度学习等技术的突破发展,AI在各行各业已开始广泛应用。在生产生活中,越来越多的产品支持通过人脸识别来进行鉴权认证和支持相关功能,如刷脸支付、刷脸登录、人脸门禁、寻人或疑犯搜索等。

    SylixOS作为优秀的国产操作系统,已支持丰富的人工智能框架,商业产品已选用ncnn。SylixOS还支持OpenCV和Qt,因此,在SylixOS上开发一款AI应用非常方便和高效。

    ncnn是一个为嵌入式设备极致优化的高性能神经网络前向计算框架。ncnn是腾讯开源的人工智能框架, ncnn已应用到QQ、微信、微视、京东、支付宝、爱奇艺、美颜相机、快手短视频等上百款APP,选用 ncnn 作为手机CNN推断库,实现包括人脸检测跟踪、人脸配准、人脸识别、人体检测跟踪、人体姿态估计、图像分类、图像美化、目标分割、风格画生成、物体检测、文本检测和识别等 AI 场景应用。

    本赛题要求参赛者完成一款人脸识别应用开发,可选择自己熟悉的人工智能训练框架,Microsoft Cognitive Toolkit,PyTorch ,TensorFlow和 Caffe2 均已支持ONNX(Open Neural Network Exchange)标准,ONNX是一个用于表示深度学习模型的标准,ONNX文件可转换为ncnn模型。

    主要难点有两方面:

    1、人脸识别算法,及其标准化的转换

    2、基于sylixos上的qt应用开发

    选择场景:疫情影响下的核酸人脸识别登记

    实现思路:

    首先是人脸信息的记录和特征提取,将人脸信息特征保存到数据库,建立人脸库

    其次进行人脸检测,由于视屏捕获的一些原因,导致不能将视屏放入线程(非阻塞形式,任务堆积过多,最终内存爆炸溢出)

    因此采用阻塞方式捕获。将图片通过ncnn的人脸检测模型,绘制出人脸框,保存人脸。

    而后将保存的人脸通过槽函数的方式发送信号,运行人脸识别到子线程中(非阻塞)。在线程中提取特征,和数据库人脸信息进行比对

    返回符合置信度的第一个人脸信息(降低系统运行压力)。

    在ui主线程中绘制返回结果图片。流程结束。

    实现问题:

    注意线程间的通信和任务积压问题。

    注意线程的同步问题。

    注意c++的变量引用问题,尤其是深拷贝和浅拷贝及&。

    个人感受:

    磕磕绊绊算是做完了,有些功能没有实现且实现不尽我意,有些累,还有考研。。

    总的来说对于个人的成长还是蛮大的,从软件最开始的需求,业务场景,方向,到软件的具体实现,测试,文档编写

    希望有个好结果吧,也不求别的,就求个自己心里舒坦

  • 相关阅读:
    人件阅读笔记之三
    明日计划:团队开发Fooks第十天
    明日计划:团队开发Fooks第九天
    明日计划:团队开发Fooks第八天
    明日计划:团队开发Fooks第七天
    明日计划:团队开发Fooks第六天
    优先队列
    KMP
    django-中间件
    Ajax--参数,csrf跨站请求伪造,serialize(),上传文件formdata
  • 原文地址:https://www.cnblogs.com/zhukaile/p/16345207.html
Copyright © 2020-2023  润新知