- 博客(464)
- 资源 (5)
- 收藏
- 关注
原创 AI换脸原理(7)——人脸分割参考文献TernausNet: 源码解析
这篇论文相对来说比较简单,整体是通过使用预训练的权重来提高U-Net的性能,实现对UNet的改进。该方法也是DeepFaceLab官方使用的人脸分割方法。在介绍篇我们已经讲过了UNet的网络结构和设计,在进一步深入了解TernausNet之前,我们先简单回顾下UNet。U-Net的主要结构包括编码器、解码器和瓶颈层三个部分。编码器用于下采样和特征提取,由多个卷积层、ReLU激活函数和最大池化层组成。每次下采样后,输出特征图的尺寸减半,通道数翻倍。
2024-05-08 14:09:27 120
原创 AI换脸原理(6)——人脸分割介绍
人脸分割是计算机视觉和图像处理领域的一项重要任务,它主要涉及到将图像中的人脸区域从背景或其他非人脸区域中分离出来。这一技术具有广泛的应用场景,如人脸识别、图像编辑、虚拟背景替换等。在计算机视觉(CV)领域,经典的分割技术可以主要划分为三类:语义分割(Semantic Segmentation)、实例分割(Instance Segmentation)以及全景分割(Panoramic Segmentation)。语义分割旨在对图像中的每个像素进行分类,以确定其所属的类别或对象。
2024-05-08 14:01:05 265
原创 AI换脸原理(2)——人脸检测参考文献S3FD:源码解析
S3FD是一个实时人脸检测器,这篇论文的主要思想是试图解决一个常见的问题,即基于anchor(锚点)的检测器随着人脸变小而急剧恶化。基于锚点的目标检测方法是通过对一系列预设锚点进行分类和回归来检测目标的,这些锚点是通过在图像上有规律地平铺一组不同尺度和宽高比的方框而产生的。这些锚点与一个或几个卷积层相关联,其空间大小和步幅大小分别决定了锚点的位置和间隔。将锚相关层进行卷积以对相应的锚进行分类和对齐。与其他方法相比,基于锚点的检测方法在复杂场景下具有更强的鲁棒性,且检测速度不受目标数量的影响。
2024-05-08 13:23:16 380
原创 AI换脸原理(4)——人脸对齐(关键点检测)参考文献2DFAN:代码解析
在本文中,重点介绍了以下几项创新性的成果,旨在为人脸关键点检测领域带来新的突破。首先,成功构建了一个卓越的2D人脸关键点检测基线模型。这一模型不仅集成了目前最优的关键点检测网络结构,而且在大规模且综合扩展的2D人脸特征点数据集上进行了深度训练,从而确保了其出色的性能。针对3D人脸对齐数据集稀缺的问题,提出了一种创新的解决方案。通过设计一个能够从2D标注转换为3D标注的卷积神经网络(CNN),成功创建了LS3D-W数据集。
2024-05-08 13:07:54 238
原创 AI换脸原理(3)——人脸对齐介绍
英文术语有facial landmark和face alignment,主要用于精确标识眉毛、眼睛、鼻子、嘴巴以及人脸轮廓等特征部位。不同数据集对于关键点的数量有不同的设定,最少的是标记5个关键点,通常包括两只眼睛的瞳孔中心、鼻尖以及左右嘴角;而常见的则有68个关键点,甚至有的数据集会标记上百个关键点。大多数情况下,人脸关键点的检测是在人脸检测的基础上进行的。首先,通过face detection方法确定人脸区域,随后在这个确定的区域内进行关键点的精确定位。
2024-05-08 12:53:03 68
原创 零:AI换脸原理:DeepFaceLab: Integrated, flexible and extensible face-swapping framework论文解读
深度造假防御不仅需要检测方面的研究,还需要生成方法方面的努力。然而,目前的深度伪造方法存在工作流程模糊、性能不佳等问题。为了解决这个问题,我们提出了DeepFaceLab,这是目前占主导地位的深度假人脸交换框架。它提供了必要的工具以及一种易于使用的方式来进行高质量的换脸。它还为那些不需要编写复杂样板代码就需要使用其他特性来加强管道的人提供了灵活的松耦合结构。我们详细介绍了驱动DeepFaceLab实现的原理,并介绍了它的管道,通过管道的每个方面都可以被用户轻松地修改,以实现他们的定制目的。
2024-05-01 15:59:03 85
原创 AI换脸原理(7)——人脸分割参考文献TernausNet: U-Net with VGG11 Encoder Pre-Trained on ImageNet
逐像素图像分割是计算机视觉领域中一项艰巨的任务。传统的由编码器和解码器组成的U-Net架构在医学图像、卫星图像等的分割中非常流行。通常情况下,神经网络初始化的权重来自于在像ImageNet这样的大数据集上预训练的网络,其性能优于在小数据集上从头开始训练的神经网络。在一些实际应用中,特别是在医学和交通安全方面,模型的准确性是至关重要的。在本文中,我们演示了如何通过使用预训练编码器来改进U-Net类型架构(看上去本文的重心在于改进UNet)。
2024-04-28 23:22:58 25
原创 AI换脸原理(4)——人脸对齐(关键点检测)参考文献2DFAN:How far are we from solving the 2D
本文研究了在现有的2D和3D人脸对齐数据集上,深度神经网络距离接近饱和性能还有多远。(a)我们首次通过将最先进的地标定位架构与最先进的残差块相结合,构建了一个非常强大的基线,在一个非常大但综合扩展的2D面部地标数据集上训练它,最后在所有其他2D面部地标数据集上对其进行评估。(b)我们创建了一个2D地标网络,该网络将2D地标注释转换为3D并统一所有现有数据集,从而创建了LS3D-W,这是迄今为止最大和最具挑战性的3D面部地标数据集(约23万张图像)。
2024-04-28 11:31:43 37
原创 AI换脸原理(1)——人脸检测介绍
人脸检测领域常用的评价指标主要包括准确率、精确率(查准率)、召回率(查全率)、F1值、IoU(交并比)、误识率(FAR)和拒识率(FRR)等。随后,fc7层输出尺寸为(19,19,1024),经过变换后得到(19,19,621)的输出。21),由于该层靠近网络前端,其数值相对较大,因此采用L2归一化来减小数值范围。然后是conv7_2层,其输出尺寸为(5,5,256),变换后得到(5,5,6。最后,conv9_2层输出尺寸为(1,1,256),变换后得到(1,1,4。
2024-04-12 16:22:30 127
原创 AI换脸原理(2)——人脸检测参考文献S3FD: Single shot scale-invariant face detector
本文提出了一种实时人脸检测器,称为单镜头尺度不变人脸检测器(S3FD),该检测器利用单个深度神经网络在各种尺度的人脸上都具有优越的性能,尤其是在小人脸上。具体来说,我们试图解决一个常见的问题,即基于锚的检测器随着对象变小而急剧恶化。我们在以下三个方面做出了贡献:1)提出了一个尺度公平的人脸检测框架,以很好地处理不同尺度的人脸。我们在广泛的层上平铺锚点,以确保所有比例的人脸都有足够的特征进行检测。此外,我们还基于有效接受野和提出的等比例区间原则设计锚定尺度;2)采用尺度补偿锚匹配策略提高小人脸的召回率;
2024-03-17 16:46:44 278
原创 在已有代码基础上创建Git仓库
git pull origin master –allow-unrelated-histories之后就可以merge和push啦!至此,成功将本地和远程联系起来。但是,这么做其实是会有一些问题,我们接着往下看。
2024-02-16 21:44:52 602
原创 bean的生命周期分析(五)
12SpringApplication的run分为两个阶段,即new SpringApplication()时的执行构造函数的准备阶段,和run时的运行阶段。下面两个阶段只是简要介绍下,我们本系列博文关注的重点是bean的创建,只会关注bean相关的过程。
2023-06-17 23:10:40 1067
原创 bean的生命周期分析(三)
2.6.2 resolveBeanClass下面是doResolveBeanClass的源码,由于bean的类没有加载到jvm,下面执行bean的类解析操作。2.6.3 prepareMethodOverridesmbdToUse.prepareMethodOverrides();作用是:提前标记下需要覆盖的方法。对于prepareMethodOverrides方法,如果bean标签中配置了属性lookup-method以及属性replaced-method的值,这就意味着bean中的某些方法
2023-06-11 12:32:35 756
原创 bean的生命周期分析(四)
在对于不是实现代理类是通过调用 doCreateBean 方法来创建对象的:2.7.1.1 applyMergedBeanDefinitionPostProcessorsBean对象实例化出来之后,接下来就应该给对象的属性赋值了。在真正给属性赋值之前,Spring又提供了一个扩展点MergedBeanDefinitionPostProcessor.postProcessMergedBeanDefinition(),可以对此时的BeanDefinition进行加工,此处还有一个 应用增强器 applyM
2023-06-10 21:47:39 733
原创 ConcurrentHashMap扩容中的高低位划分链表
runBit是桶的首节点和n的与,而b是桶内的节点和n的与,明明已经在同一个桶了,为什么b还能不等于runBit呢?原因是,在一个桶,以为这元素的hash & (n-1)值都相同,而不是hash & n一样。举个例子,比如n=16=10000,hash&(n-1),是hash & 01111,所以,与值相同的元素在一个桶里其实说这些元素的后四位二进制相等,第一位高位是可以不同的。因此在源码片段中是可能不同的,换句话说,源码片段就是在比较最高位是否相同,根据是0还是1分为两个链表。
2023-06-10 15:07:41 173
原创 bean的生命周期分析(二)
入口是getBean方法下面这个doGetBean是重点,关键部分用注释的形式标记了,下面会针对重点内容进行讲解。// Eagerly check singleton cache for manually registered singletons. // 重点解析1 getSingleton 详见2.5.2 Object sharedInstance = getSingleton(beanName);
2023-06-04 12:02:33 537
原创 bean的生命周期分析(一)
点进去loadBeanDefinitions方法,因为我们是以xml创建bean举例,所以这里会跳转到xml相关的实现类——AbstractXmlApplicationContext类,对应的loadBeanDefinitions方法。beanFactory就是XmlBeanDefinitionReader里面的registry,所以后面我们看到的registry就是beanFactory对象。再点!125行获取配置文件路径。再点进去127行。AbstractXmlApplicationContext类。
2023-05-30 21:16:17 561
原创 使用Docker安装neo4j教程
dbms.security.auth_enabled=false可以免于登录,默认登陆用户名和密码都是neo4j,但是我总是登录不上去,报错:Neo.ClientError.Security.Unauthorized: The client is unauthorized due to authentication failure.,这里直接给取消登录了。
2023-04-22 23:34:00 1150 1
原创 SpringCloud整合AOP做日志管理
我们要自定义一个注解,干什么用呢?用于标注在需要进行AOP管理的对象上,这个对象可以是方法(ElementType.METHOD),也可以是其他的。但既然是注解式AOP,就都需要标注我们自定义的注解才能告诉spring,咱们要对它进行AOP管理。/*** @DESCRIPTION : 自定义注解,注解式AOP。用于用户在认证服务器的行为日志记录,比如登录登出注册等等。
2023-04-20 21:07:05 628
原创 SpringCloud微服务整合Spring Security进行统一鉴权
有一个大坑,记得如果是单机操作多个微服务项目,要给每个微服务添加session cookie name,如下server : port : 8003 servlet : session : cookie : #防止 Cookie 冲突,冲突会导致登录验证不通过一定一定要做这一步。
2023-04-15 16:36:08 3002 4
原创 SpringCloud微服务整合Spring Security OAuth2
要记得引入common后也要做必要的配置,比如nacos,相关配置可见博客:https://blog.csdn.net/qq_41076797/article/details/128509393、https://blog.csdn.net/qq_41076797/article/details/128508723;外面请求进来先通过网关进行身份认证,未登录的去登录,已登录的网关找到auth进行鉴权,通过才放行到具体的普通功能性微服务。代码会在后面给出,因为这段代码在后面的配置文件中。
2023-04-12 00:09:36 2490
原创 使用MyBatisPlus实现varchar类型和实体类List类型的转换
【代码】使用MyBatisPlus实现varchar类型和实体类List类型的转换。
2023-04-09 19:43:29 1631
原创 SpringCloud整合Swagger3
springfox : documentation : swagger - ui : enabled : true # false 关闭swagger - ui界面 但不关闭openapi# == == = 自定义swagger配置 == == = #
2023-04-05 23:43:55 2068 1
转载 http.authorizeRequests()详解
表示可以匿名访问匹配的URL。访问控制方法都很简单, 只要匹配到url后直接在后面追加调用这个方法就行了,链式调用特别简单,不演示了。如果有参数,参数表示IP地址,如果用户IP和参数匹配,则可以访问。下面分别讲一下url匹配规则都有哪些,权限控制方法都有哪些。如果有参数,参数表示角色,则其中任何一个角色可以访问。如果有参数,参数表示权限,则其中任何一个权限可以访问。如果有参数,参数表示角色,则其角色可以访问。如果有参数,参数表示权限,则其权限可以访问。表示所匹配的URL都不允许被访问。
2023-04-05 14:01:22 2469
原创 Java中遍历集合时增删改的异常情况及处理方法
其实for循环的报错原理很好理解,不只是从后往前遍历,在正常遍历时人工的修改for循环中的i的值,使其不越界就可以。因为每次strs.size()是取的实时的值,如果事先用n得到,那n的值是旧值,不是实时变化的。在迭代器遍历、for遍历、foreach遍历时,进行增删操作都会失败报错,而修改操作则成功。解决方法:使用迭代器的删除方法,或者从后往前for循环。
2023-04-04 14:02:35 345
原创 springcloud整合Druid数据源
数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个。Druid是阿里系提供的一个开源连接池,除在连接池之外,Druid还提供了非常优秀的数据库监控和扩展功能,所以在项目开发中一般会使用 Druid。监控数据库访问性能,通过StatFilter插件,详细统计SQL的执行性能SQL执行日志,Druid提供了不同的LogFilter,能够支持Common-Logging、Log4j和JdkLog 数据库密码加密。
2023-04-03 23:28:52 787
原创 Druid配置ServletRegistrationBean的作用
这个ServletRegistrationBean类感觉挺有趣的,不知道为啥配置了它就可以显示页面了,有空想看看它源码怎么写的,主要负责什么功能。ServletRegistrationBean是为了打开Druid的监控统计功能及内置监控页面。
2023-04-03 21:36:41 679
原创 @SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})不起作用
【代码】@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})不起作用。
2023-04-03 20:21:14 498
原创 springboot整合springcloud之nacos配置中心
2.1 命名空间:配置隔离;* 默认:public(保留空间),默认新增的所有配置都在public空间* 然而,环境有开发、测试、生成等等,命名空间不应相同。可以切换环境把public里的配置克隆到pro,改变里面的值。这样,同一配置,不同环境下,存在多个。那想切换命名空间咋办:bootstrap.properties。
2023-01-01 01:38:29 1767
原创 springboot整合springcloud之feign
dubbo:接口是共有的,在项目公有子模块里。消费者直接注入接口,调用就可以了。提供者的配置文件里记录提供服务的接口,一个服务可以多个接口提供(负载均衡)。一个接口当然也可以有多个实现类,可以手工选择。明确谁作为服务的消费者,谁作为服务的提供者,这里场景是用户和优惠券,用户作为优惠券的消费者,厂家作为优惠券的提供者。注解大概不加也行,那就得加@service到接口上注入到IOC容器。1是配置文件里的application-name,也就是服务的名字。2是刚才定义的服务者方法的前两行,直接复制过来。
2022-12-31 22:03:51 273
原创 springboot整合springcloud之nacos
压缩包解压,找到startup.cmd,我的是在E:\nacos\nacos-server-2.2.0\nacos\bin目录下。默认端口是8848,访问:http://localhost:8848/nacos,账号密码默认nacos。不用加版本号,因为在此基础上引入的cloud依赖中统一规定了版本号。因为nacos默认是集群启动,这里用单机,那就加入后缀-m。后面等于是给应用起个名字,不能忘写。
2022-12-31 21:19:49 351
原创 200字学会辗转相除法原理详解
m%n=t,其实t就是(a%c)*b,很自然m和n的最大公约数,其实就是t=(a%c)*b和n=c*b的最大公约数。由于c>a%c,因此m重新设为n,n设为较小的那个数,即t,然后循环这个过程,即a‘=c,c’=a%c继续这个过程,同样a’>c’且二者不存在非0以外的公约数。前面说过a’>c’且二者不存在非0以外的公约数,那么如果除尽了则意味着c’=1,那么意味着n=c’*b=1*b=b,得到最终结果。原理:设m>n,m=a*b,n=c*b,设b为最大公约数,自然有a>c且二者不存在非0以外的公约数。
2022-12-13 15:16:26 221
原创 Thymeleaf @{}作用
对于前缀,也就是刚才我们随便写的访问请求/css/css/dasdf.css,页面解析是考虑这个前缀的。巴拉巴拉,换句话说不受人为干预影响。假设一个登陆验证的场景,有一些网页只有登录了才能访问,拦截器对于任何没有登录就访问的请求都拦截下来,这时会自动跳转到登录页面(注意,此时不会触发404请求,首先走拦截器,通过拦截器的非法请求才会转404)。发现地址栏依然是:localhost:8080/css/css/dasdf.css,这也就意味着,如果你不用@符号,那么html解析的页面js等静态资源的路径就是。
2022-12-10 23:09:53 45
原创 Nginx (7):nginx高可用配置
这里换一种思路,使用虚拟ip地址,它是固定的字符串,外部就用它访问,只不过它是飘忽不定的,一会在第一台nginx,一会在第二台nginx,是不固定的,这样就避免了很多问题。没有配置文件,果然启动失败了,那么怎么生成配置文件呢,额,这里有个模板,在/usr/share/doc/keepalived/samples 目录下的模板文件keepalived.conf.sample,复制到/etc/keepalived目录下,改名字为keepalived.conf即可。布置多个nginx再反向代理nginx?
2022-11-27 21:48:36 3496
计算机网络实验课码分多址CDMA.代码zip
2019-11-01
zhilian1.zip
2019-08-17
C#winform窗体+socket实现登录通信聊天软件(可私聊与群聊)
2019-03-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人