[C#]OpenCvSharp结合yolov8-face实现L2CS-Net眼睛注视方向估计或者人脸朝向估计

news2024/11/28 13:49:54

源码地址:

github地址:https://github.com/Ahmednull/L2CS-Net

L2CS-Net介绍:

眼睛注视(eye gaze) 是在各种应用中使用的基本线索之一。
它表示用户在人机交互和开放对话系统中的参与程度。此外,它还被用于增强现实,用于预测用户的注意力,从而提高设备的感知能力,降低功耗。
因此,研究人员开发了多种方法和技术来准确估计人类的凝视。这些方法分为两类: 基于模型的方法和基于外观的方法。
基于模型的方法通常需要专用硬件,这使得它们难以在不受约束的环境(unconstrained environment)中使用。
基于外观的方法将人类的视线直接从廉价的现成相机拍摄的图像中还原出来,使它们很容易在不受约束的设置下在不同的位置生成。
目前,基于CNN的方法是基于外观的方法是最常用的凝视估计方法,因为它提供了更好的凝视性能。
大部分的相关工作专注于开发新颖的基于CNN的网络,主要由流行的骨干(如VGG, ResNet-18 , ResNet-50等) 组成,来提取凝视特征,最终输出凝视方向。
这些网络的输入可以是单个流 (例如:如面部或眼睛图像)或多个流(如面部和眼睛图像)。
用于注视估计任务的最常见的损失函数是均方损失或L2损失。
尽管基于CNN的方法提高了注视精度,但它们缺乏鲁棒性和泛化性,特别是在无约束环境下。
本文介绍了一种新的估计方法来在RGB图像中估计3D凝视角度,使用一种 multi-loss 的方法。
我们建议使用两个全连接层独立回归每个凝视角度(偏航,俯仰),以提高每个角度的预测精度。
此外,我们对每个凝视角度使用两个单独的损失函数。每一种损失都由注视二值分类和回归组成。
最后,这两种损失通过网络反向传播,精确微调网络权重,提高网络泛化。
我们通过使用softmax层和交叉熵损失(cross-entropy loss)来执行gaze bin分类,以便网络以鲁棒的方式估计注视角的邻域。
基于所提出的损失函数和softmax层 (L2 loss+ cross-entropy loss+ softmax层),我们提出了一种新的网络(L2CS-Net)来预测无约束设置下的3D凝视向量。
最后,我们在两个流行的数据集MPIIGaze和Gaze360上评估了我们的网络的鲁棒性。L2CS-Net在MPIIGaze和Gaze360数据集上实现了SOAT的性能。

测试环境:

VS2019

.net framework 4.7.2

OpenCvSharp 4.8.0

Microsoft.ML.OnnxRuntime 1.16.3

效果:

实现部分代码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using OpenCvSharp;

namespace FIRC
{
    public partial class Form1 : Form
    {
        Mat src = new Mat();
        FaceDetector fd = new FaceDetector();
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            OpenFileDialog openFileDialog = new OpenFileDialog();
            openFileDialog.Filter = "图文件(*.*)|*.jpg;*.png;*.jpeg;*.bmp";
            openFileDialog.RestoreDirectory = true;
            openFileDialog.Multiselect = false;
            if (openFileDialog.ShowDialog() == DialogResult.OK)
            {
              
                src = Cv2.ImRead(openFileDialog.FileName);
                pictureBox1.Image = OpenCvSharp.Extensions.BitmapConverter.ToBitmap(src);


            }


        }

        private void button2_Click(object sender, EventArgs e)
        {
            if(pictureBox1.Image==null)
            {
                return;
            }
            var results = fd.Inference(src);

            var resultMat = fd.DrawImage(src,results);
            pictureBox2.Image= OpenCvSharp.Extensions.BitmapConverter.ToBitmap(resultMat); //Mat转Bitmap
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            fd.LoadWeights(Application.StartupPath+"\\weights\\yolov8n-face.onnx", Application.StartupPath + "\\weights\\l2cs_net_1x3x448x448.onnx");

        }

        private void btn_video_Click(object sender, EventArgs e)
        {
  
        }
    }
}

视频演示:

bilibili.com/video/BV19t4y1f7rN/

源码地址:

参考文献:

1.https://blog.csdn.net/gaoqing_dream163/article/details/132149150

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1348914.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

zabbix监控基础

目录 一.zabbix概述 1.zabbix程序结构 2.Zabbix 监控原理 3.zabbix中核心的资源介绍 4.zabbix-agent支持的协议 二.zabbix监控环境搭建 1.zabbix服务器端 1) 基本配置 2) 安装 2.配置zabbix 1) 数据库设置 2) zabbix设置 3) ph…

轻量应用服务器与云服务器CVM对比——腾讯云

腾讯云轻量服务器和云服务器CVM该怎么选?不差钱选云服务器CVM,追求性价比选择轻量应用服务器,轻量真优惠呀,活动 https://curl.qcloud.com/oRMoSucP 轻量应用服务器2核2G3M价格62元一年、2核2G4M价格118元一年,540元三…

Android 跨进程之间通信(IPC)方式之ContentProvider

Android 跨进程之间通信 Android 跨进程之间通信(IPC)方式之BroadcastReceiverAndroid 跨进程之间通信(IPC)方式之ContentProvider 文章目录 Android 跨进程之间通信前言一、ContentProvider 是什么?二、如何利用ContentProvider跨进程通信1.创建自定义ContentProv…

编译原理----FIRST集,LARST集,FIRSTVT集,LASTVT集

目录 FIRST集: LARST集: FIRSTVT集: LASTVT集: 构造规则: FIRST集: (1)A-->,若是终结符,那么FIRST(A),若是非终结符&#xf…

啊哈c语言——逻辑挑战6:奔跑的小人

首先我们来设计这个小人: 将这个小人身体的三部分分为3行来分别表示: 第1行用一个大写字母O表示小人的脑袋。 第2行用左尖括号表示小人的右手,用大写字母H表示小人的身 体,用右尖括号>表示小人的右手。 第3行用两个大写字母…

集群部署篇--Redis 集群分片模式

文章目录 前言一、Redis 分片集群介绍1.1 介绍:1.2 工作机制:1.2.1 节点:1.2.2 槽 slot:1.2.3 故障转移: 二、Redis 分片集群搭建:2.1 配置文件:2.2 redis 部署:2.3 redis 集群创建:…

杂文月刊投稿方式论文发表要求

《杂文月刊》是由国家新闻出版总署批准的正规文学类期刊。主要内容取向:杂文、散文、小说、诗歌、漫画、文学评论、艺术评论、戏剧文化、地方文化、非遗文化、美学艺术、教育等历史、文化、文学、艺术类的文章。是广大专家、学者、教师、学子发表论文、交流信息的重…

2024年人工智能领域10大预测

2023年人工智能领域如果只能筛选一个关键词的话,恐怕非“大模型”莫属。大模型的发展在过去一年中,让各行各业发生了天翻地覆的变化,有企业因大模型而新生,有企业因大模型而消亡。企业的变迁跟技术迭代息息相关,而大模…

前端 js 基础(1)

js 结果输出 &#xff08;点击按钮修改文字 &#xff09; <!DOCTYPE html> <html> <head></head><body><h2>Head 中的 JavaScript</h2><p id"demo">一个段落。</p><button type"button" onclic…

【2023】hadoop基础介绍

&#x1f4bb;目录 Hadoop组成HDFSHDFS操作HDFS分布式文件存储NameNode元数据数据读写流程 YARN和MapReduceMapReduce&#xff1a;分布式计算YARN&#xff1a;资源管控调度YARN架构提交任务到**YARN中运行** Hadoop组成 hadoop安装教程可以看我这篇文章> &#x1f345;hado…

论数据资源持有权(上)

关注WX公众号&#xff1a; commindtech77&#xff0c; 获得数据资产相关白皮书下载地址 1. 回复关键字&#xff1a;数据资源入表白皮书 下载 《2023数据资源入表白皮书》 2. 回复关键字&#xff1a;光大银行 下载 光大银行-《商业银行数据资产会计核算研究报告》 3. 回复关键字…

c语言之将输入的十进制转换成二进制数并打印原码反码补码

十进制转二进制 首先&#xff0c;我们要知道的是十进制转换成二进制数的方法。我们一般采用的除二取余的方法&#xff0c;在这里我用32位数组来进行转换。 int main() {printf("请输入一个十进制数\n");int n 0;scanf("%d", &n);int arr[32];int* p…

基于FFT + CNN - Transformer 时域、频域特征融合的轴承故障识别模型

目录 往期精彩内容&#xff1a; 前言 1 快速傅里叶变换FFT原理介绍 2 轴承故障数据的预处理 2.1 导入数据 2.2 制作数据集和对应标签 3 基于FFTCNN-Transformer的轴承故障识别模型 3.1 网络定义模型 3.2 设置参数&#xff0c;训练模型 3.3 模型评估 往期精彩内容&…

FPGA项目(13)——基于FPGA的电梯控制系统

1.摘要 随着科技的发展&#xff0c;电梯早在上个世纪就已进入人们的生活。对于电梯的控制&#xff0c;传统的方法是使用继电器——接触器控制系统进行控制。随着EDA技术的发展&#xff0c;FPGA已广泛应用于各项电子设计中&#xff0c;本设计即利用FPGA来实现对电梯控制系统的设…

loTDB数据库学习笔记之初识 —— 筑梦之路

loTDB简介 IoTDB 是针对时间序列数据收集、存储与分析一体化的数据管理引擎。具有体量轻、性能高、易使用的特点&#xff0c;适用于工业物联网应用中海量时间序列数据高速写入和复杂分析查询的需求&#xff0c;同时包含数据订阅、数据同步、负载均衡和运维监控功能。 由清华大学…

家具定制出库标签打印,家具出入库进销存管理系统软件教程

一、前言 1、家具管理软件如何打印标签&#xff1f; 上图打印标签&#xff0c;以 佳易王家具出入库管理软件V16.1版本为例 说明&#xff0c;在打印标签的时候&#xff0c;可以同时打印自己的LOGO&#xff0c;而且可以根据需要定制打印格式。 2、软件中 &#xff0c;预定家具如…

【Maven】下载配置maven以及IDEA配置maven详情

目录 1、下载maven 2、配置settings.xml 2.1、配置本地仓库 2.2、配置阿里云镜像仓库 2.3、配置JDK 3、配置环境变量 4、IDEA配置maven 1、下载maven maven官网&#xff1a;https://maven.apache.org/ 2、配置settings.xml 2.1、配置本地仓库 <localRepository>C:\…

NLP:预测新闻类别 - 自然语言处理中嵌入技术

简介 在数字时代&#xff0c;在线新闻内容呈指数级增长&#xff0c;需要有效的分类以增强可访问性和用户体验。先进机器学习技术的出现&#xff0c;特别是在自然语言处理&#xff08;NLP&#xff09;领域&#xff0c;为文本数据的自动分类开辟了新的领域。本文[1]探讨了在 NLP …

力扣回溯算法-电话号码的字母组合

力扣第17题&#xff0c;电话号码的字母组合 题目 给定一个仅包含数字 2-9 的字符串&#xff0c;返回所有它能表示的字母组合。 给出数字到字母的映射如下&#xff08;与电话按键相同&#xff09;。注意 1 不对应任何字母。 .电话号码的字母组合 示例: 输入&#xff1a;“2…

LeetCode每日一题.05(N皇后)

按照国际象棋的规则&#xff0c;皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。 n 皇后问题 研究的是如何将 n 个皇后放置在 nn 的棋盘上&#xff0c;并且使皇后彼此之间不能相互攻击。 给你一个整数 n &#xff0c;返回所有不同的 n 皇后问题 的解决方案。 每一种…