GMM算法

news/2024/4/25 16:22:52/文章来源:https://blog.csdn.net/lyyiangang/article/details/128100077

高斯混合模型聚类(Gaussian Mixture Mode,GMM)

高斯混合模型是一种概率式的聚类方法,它假定所有的数据样本x由k个混合多元高斯分布组合成的混合分布生成。
在这里插入图片描述
其中高斯分布的概率密度函数如下:
在这里插入图片描述
现在的问题就是如何求α,μ,σ\alpha,\mu,\sigmaα,μ,σ

  • 求解
    最大化极大似然函数:
    在这里插入图片描述由于无法计算解析解,这里可使用EM算法进行迭代求解,具体细节参考链接.

使用GMM进行人脸图像分割(人脸检测)

import numpy as np
import matplotlib.pyplot as plt
from sklearn.mixture import GaussianMixture
import cv2
import matplotlib as mpl
import glob
import osdef draw_polygon(img, pts):for pt in pts.reshape(-1, 2).astype(np.int32):# import ipdb; ipdb.set_trace()cv2.circle(img, tuple(pt),2, (0, 0, 255))def find_target_contour(mask, ncls):biggest_contours = []all_areas = []area_threshold = mask.shape[0] * mask.shape[1] /5for label in range(ncls):mask_a = (mask == label).astype(np.uint8)contours, hierarchy = cv2.findContours(mask_a, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)areas = [cv2.contourArea(item) for item in contours]idx = np.argmax(areas)biggest_contours.append(contours[idx].reshape(-1, 2))all_areas.append(areas[idx])# only keep 2 region which take big areabiggest_contours = np.asarray(biggest_contours)all_areas = np.asarray(all_areas)# import ipdb; ipdb.set_trace()biggest_contours = biggest_contours[all_areas > area_threshold]# if len(biggest_contours)# find whilch contour is closer to bottom of imgcenters = np.array([np.mean(item, axis = 0) for item in biggest_contours] )idx = np.argmax(centers[:, 1])selected_contours = biggest_contours[idx]rect = np.min(selected_contours, axis = 0), np.max(selected_contours, axis = 0)return np.array(rect), selected_contoursdef run():# dataset_root = 'data/'dataset_root = 'tmp'imgs =  glob.glob(os.path.join(dataset_root, '*.png'))ncls = 3for iimg, cur_path in enumerate(imgs):print(f'[{iimg}/{len(imgs)}].reading {cur_path}')img = cv2.imread(cur_path)npts = img.shape[0] * img.shape[1]classifier = GaussianMixture(ncls)input_img = cv2.blur(img, (5, 5))classifier.fit(input_img.reshape(npts, 3))colors = [0, 80, 125, 180, 255]labels = classifier.predict(img.reshape(npts, 3))mask = labels.reshape(*img.shape[:2]).astype(np.uint8)kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (5,5))eroded = cv2.erode(mask, kernel)mask = cv2.dilate(eroded, kernel)rect, mask_contour = find_target_contour(mask, ncls)labels = np.expand_dims(labels, -1)for px in labels:px[:] = colors[px[0]]binary_img = labels.reshape(*img.shape[:2])plt.figure(figsize = (11, 4))plt.subplot(121)draw_polygon(img, mask_contour)rect = rect.astype(np.int32)cv2.rectangle(img, tuple(rect[0]), tuple(rect[1]), (0, 255, 255), 4)rgb_img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)plt.imshow(rgb_img)plt.axis('off')plt.subplot(122)plt.imshow(binary_img, cmap = mpl.colormaps['viridis'], interpolation= 'nearest')plt.axis('off')plt.show()run()

从下图可以看出,肤色相近的区域都被识别成了一个区域,对于一些简单的任务GMM还是能很好处理的。
在这里插入图片描述

  • EM(Expectation-maximization algorithm)期望最大化算法
    最大期望(EM)算法是在概率模型中寻找参数最大似然估计或者最大后验估计的算法,其中概率模型依赖于无法观测的隐变量。最大期望算法经过两个步骤交替进行计算,第一步是计算期望(E),利用对隐藏变量的现有估计值,计算其最大似然估计值;第二步是最大化(M),最大化在E步上求得的最大似然值来计算参数的值。M步上找到的参数估计值被用于下一个E步计算中,这个过程不断交替进行。

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

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring-全面详解(学习总结---从入门到深化)

目录 Spring简介 Spring体系结构 IOC_控制反转思想 IOC_自定义对象容器 IOC_Spring实现IOC IOC_Spring容器类型 ​ 容器实现类 IOC_对象的创建方式 使用构造方法 使用工厂类的方法…

09【MyBatis多表关联查询】

文章目录三、MyBatis多表关联查询3.1 表的关系3.2 一对一查询3.2.1 搭建环境3.2.2 需求分析3.2.3 dao接口3.2.3 mapper.xml3.2.4 测试3.2.5 配置MyBatis一对一关系1)传统映射:2)使用association标签映射3.3 一对多查询3.3.1 需求分析3.3.2 da…

Kamiya丨Kamiya艾美捷大鼠微量白蛋白酶联免疫吸附试验说明书

Kamiya艾美捷大鼠微量白蛋白酶联免疫吸附试验预期用途: 大鼠微量白蛋白酶联免疫吸附试验(ELISA)是一种高灵敏度的双位点酶联免疫吸附试验(ELISA)大鼠生物样品中微量白蛋白的测定。仅供研究使用。 引言 白蛋白&#x…

SpringBoot、EasyPoi、Echarts 实现文档导入、出、图表显示 (饼状图、柱状图) 保姆级教程

一、介绍环境 EasyPOI: 现在我们就来介绍下EasyPoi,首先感谢EasyPoi 的开发者​。EasyPoi开源 easypoi 是为了让开发者快速的实现excel,word,pdf的导入导出,基于Apache poi基础上的一个工具包。easypoi教程 Echarts: …

转扩!寻找G2022次列车“旅客”

各位求职朋友大家好,欢迎乘坐G2022次列车 本次列车为6节编组,由上海开往北京,途径宁波、重庆 本次列车乘务组全体工作人员为您提供全方位福利待遇 上车地址:上海擎创信息技术有限公司 - 社会招聘 (eoitek.com) 如您还需其他帮助…

Java给图片增加水印,根据图片大小自适应,右下角/斜角/平铺

Hi,I’m Shendi 最近写自己的文件服务器,上传图片时需要自动增加水印,在这里记录一下 文章目录效果展示读取图片从 byte[] 读取图片获取画板绘制水印根据图片大小自适应水印大小右下角文字水印斜角水印平铺水印图片水印输出图片水印就是在图片…

SLAM学习笔记(二)

5.相机与图像 相机将三维世界中的坐标点(单位米)映射到二维图像平面(单位为像素)的过程中能够用一个几何模型进行描述。 单目相机(Mono)的成像过程: 1、世界坐标系下有个固定的点P,世界坐标为 2、由于相…

基于Java+SSM+Vue+ElementUi的汉语言类网上考试系统

项目介绍 21世纪的今天,随着社会的不断发展与进步,人们对于信息科学化的认识,已由低层次向高层次发展,由原来的感性认识向理性认识提高,管理工作的重要性已逐渐被人们所认识,科学化的管理,使信…

前置微小信号放大器在光声技术的血管识别研究中的应用

实验名称:前置微小信号放大器在光声技术的血管识别研究中的应用 研究方向:生物识别技术 测试目的: 利用MATLAB对光声血管进行识别:1、对光声血管图库的图像进行预处理包括归一化、二值化、平滑、细化和毛刺修剪得到细化图像&#…

【安卓逆向】去除云注入(使用MT论坛dl的方法总结拓展)

1 需求 因为最近使用的虚拟机突然不能用了,被人云注入强制弹窗,如下图:(这一看就是云注入了) 2 大佬的方法 如图(MT大佬分享的,感兴趣的朋友可以去大佬主页看看他其他文章)&…

蓝海创意云接受【看苏州】独家专访:助力苏州数字文化行业全方位发展

近日,由蓝海创意云提供渲染服务的动漫电影《老鹰抓小鸡》获金鸡奖最佳美术片提名,位列获奖名单的《长津湖》《独行月球》也由蓝海创意云渲染提供了后期服务。 就此,苏州广播电视总台旗下的苏州权威热点新闻和视频平台【看苏州】对蓝海彤翔执…

[附源码]计算机毕业设计springboot基于Java的失物招领平台

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

用R Shiny生态快速搭建交互Web网页APP应用

什么是Shiny? Shiny包可以快速搭建基于R的交互网页应用。对于web的交互,之前已经有一些相关的包,不过都需要开发者熟悉网页编程语言(html,CSS,JS)。最近我们被客户要求撰写关于R Shiny的研究报告,包括一些…

快速复现 实现 facenet-pytorch 人脸识别 windows上 使用cpu实现 人脸对比

目录0 前言1 搭建环境与项目2 人脸预测与结果展示0 前言 这一次要复现的是人脸识别中的 facenet-pytorch 参考了: Pytorch 搭建自己的Facenet人脸识别网络(Bubbliiiing 深度学习 教程) https://gitee.com/xiaozhao123666/facenet-pytorch ht…

分布式消息中间件RabbitMQ解析

RabbitMQ作为分布式消息存储和转发系统,已广泛使用于分布式系统中。本文简要介绍RabbitMQ相关概念、集群架构和消息转发流程,并与Kafka做了简要对比,以加深理解。 1、RabbitMQ相关概念 1.1 AMQP介绍 消息(Message)是…

Zookeeper(一)- Zookeeper介绍与集群部署

文章目录一、Zookeeper 介绍1. Zookeeper概述2. Zookeeper工作机制3. Zookeeper特点4. Zookeeper数据结构5. Zookeeper应用场景(1)统一命名服务(2)统一配置管理(3)统一集群管理(4)服…

低代码与mes生产管理系统:功能篇

随着信息技术的发展和应用,信息系统在企业中的使用也越来越广泛。不仅可以使企业内部和企业间的信息流通更为便捷和频繁,同时可以提高管理的水平,有助于提高企业的生产效益。其中mes生产管理系统就是美豳的调查资询公司AMR(Advanced Manufacturing Resea…

【目标检测】Faster R-CNN的几点理解

目录:Faster R-CNN的几点理解一、Faster R-CNN概述二、R-CNN、Fast R-CNN、Faster R-CNN的对照2.1 R-CNN2.1.1 R-CNN的检测步骤2.1.2 R-CNN的主要缺点2.2 Fast R-CNN2.2.1 Fast R-CNN的检测步骤2.2.2 Fast R-CNN的缺点2.3 R-CNN、Fast R-CNN、Faster R-CNN的比较三、…

(二)devops持续集成开发——jenkins的权限管理配置

前言 jenkins作为目前主流的devops工具,受到了广大开发用户的追捧。由于其丰富的插件库,其可插拔的功能使得其功能和生态都十分强大。本节内容是关于jenkins的权限管理组件Role-based Authorization Strategy的安装及使用。 正文 下载安装Role-based A…

ThinkPHP5文档学习——配置

文章目录一、配置目录二、配置格式PHP数组定义其它格式的支持二级配置三、配置加载惯例配置应用配置拓展配置场景配置四、读取配置参数五、动态配置设置配置参数六、独立配置独立配置文件V5.0.1版本已经废除该写法自动读取扩展配置七、配置作用域八、环境变量配置一、配置目录 …