[C#]基于winform结合photocartoon算法实现人物卡通化源码实现

news2024/9/22 9:39:37

【官方框架】

https://github.com/minivision-ai/photo2cartoon

简介

人像卡通风格渲染的目标是,在保持原图像ID信息和纹理细节的同时,将真实照片转换为卡通风格的非真实感图像。我们的思路是,从大量照片/卡通数据中习得照片到卡通画的映射。一般而言,基于成对数据的pix2pix方法能达到较好的图像转换效果,但本任务的输入输出轮廓并非一一对应,例如卡通风格的眼睛更大、下巴更瘦;且成对的数据绘制难度大、成本较高,因此我们采用unpaired image translation方法来实现。

Unpaired image translation流派最经典方法是CycleGAN,但原始CycleGAN的生成结果往往存在较为明显的伪影且不稳定。近期的论文U-GAT-IT提出了一种归一化方法——AdaLIN,能够自动调节Instance Norm和Layer Norm的比重,再结合attention机制能够实现精美的人像日漫风格转换。

与夸张的日漫风不同,我们的卡通风格更偏写实,要求既有卡通画的简洁Q萌,又有明确的身份信息。为此我们增加了Face ID Loss,使用预训练的人脸识别模型提取照片和卡通画的ID特征,通过余弦距离来约束生成的卡通画。

此外,我们提出了一种Soft-AdaLIN(Soft Adaptive Layer-Instance Normalization)归一化方法,在反规范化时将编码器的均值方差(照片特征)与解码器的均值方差(卡通特征)相融合。

模型结构方面,在U-GAT-IT的基础上,我们在编码器之前和解码器之后各增加了2个hourglass模块,渐进地提升模型特征抽象和重建能力。

由于实验数据较为匮乏,为了降低训练难度,我们将数据处理成固定的模式。首先检测图像中的人脸及关键点,根据人脸关键点旋转校正图像,并按统一标准裁剪,再将裁剪后的头像输入人像分割模型去除背景。

【效果展示】

同时也实现了摄像头实时检测功能

【部分实现代码】

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 = null;
        P2CManager detector = new P2CManager();

        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 resultImg = detector.Inference(src);
            pictureBox2.Image = OpenCvSharp.Extensions.BitmapConverter.ToBitmap(resultImg);
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            detector.LoadWeights(Application.StartupPath+ "\\weights\\photo2cartoon_weights.onnx");
        }

        private void button3_Click(object sender, EventArgs e)
        {
            VideoCapture capture = new VideoCapture(0);
            if (!capture.IsOpened())
            {
                Console.WriteLine("video not open!");
                return;
            }
            Mat frame = new Mat();
            var sw = new Stopwatch();
            int fps = 0;
            while (true)
            {

                capture.Read(frame);
                if (frame.Empty())
                {
                    Console.WriteLine("data is empty!");
                    break;
                }
                sw.Start();
                var resultImg = detector.Inference(frame);
                sw.Stop();
                fps = Convert.ToInt32(1 / sw.Elapsed.TotalSeconds);
                sw.Reset();
            
                Cv2.PutText(resultImg, "FPS=" + fps, new OpenCvSharp.Point(30, 30), HersheyFonts.HersheyComplex, 1.0, new Scalar(255, 0, 0), 3);
                //显示结果
                Cv2.ImShow("Result", resultImg);
                int key = Cv2.WaitKey(10);
                if (key == 27)
                    break;
            }

            capture.Release();
        }
    }
}

 【测试通过环境】

vs2019

netframework4.7.2

opencvsharp4.8.0

onnxruntime==1.16.2

【视频演示】

C# 基于winform结合photocartoon算法实现人物卡通化源码实现_哔哩哔哩_bilibili【测试通过环境】vs2019netframework4.7.2opencvsharp4.8.0onnxruntime==1.16.2更多信息参考博文:https://blog.csdn.net/FL1623863129/article/details/141241892, 视频播放量 2、弹幕量 0、点赞数 0、投硬币枚数 0、收藏人数 0、转发人数 0, 视频作者 未来自主研究中心, 作者简介 未来自主研究中心,相关视频:比尔盖茨私密丑闻被曝?私生活混乱还爱去萝莉岛?,基于C# winform调用文心一言大模型实现实时聊天功能,左键连发鼠标左键连点使用教程,自己动手实现一个内网穿透3:MVP版本发布,C# winform YOLO区域入侵检测任意形状区域绘制射线算法实现演示,yolov9+deepsort+pyqt5实现目标追踪结果演示,一分钟教会你如何入侵他人手机,迈出成为黑客的第一步!(网络安全/黑客技术),最神秘的蓬莱仙山可能根本就不是山,而是早已沉入海底的上古文明,DCM文件转换工具使用教程,吴恩达亲授《给初学者的AI Python编程课1:基础篇|AI Python for Beginners:Basics of AI Python》中英字幕(豆包icon-default.png?t=N7T8https://www.bilibili.com/video/BV1LweTesEbi/

【源码下载地址】

https://download.csdn.net/download/FL1623863129/89643872

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

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

相关文章

HDRP管线下的开放世界游戏与跨平台优化,《仙剑世界》万字分享

《仙剑世界》作为仙剑 IP 系列的最新⻓篇⼒作,从故事和剧情上延续了仙剑的精髓。在仙剑 33 年的世界观下,《仙剑世界》打造出了⼀个由浪漫唯美的江南全景、磅礴恢弘的蜀⼭、神秘苗疆等区域构成的 384 平⽅公⾥完整的⽆缝开放⼤世界。以东⽅题材为起点&am…

Java入门-接口:JDK8开始接口新增方法,接口的多继承,接口注意事项

(一)新增接口注意事项: 接口A: package interface_jdk8;public interface A {//1.新增默认方法:必须使用defalut修饰,默认会被public修饰//注意:这种默认方法可以带方法体/*实例方法&#xff1…

openssh升级到9.8

升级步骤 1、查看版本 [rootlocalhost openssh-8.8p1]# ssh -V OpenSSH_8.8p1, OpenSSL 1.0.2k-fips 26 Jan 20172、下载安装包 cd /usr/local/src wget https://www.zlib.net/zlib-1.3.1.tar.gz wget https://www.openssl.org/source/openssl-3.2.1.tar.gz wget https://cdn.…

在小程序添加公司官网访问

在小程序添加公司官网访问 有时候由于业务需要,在小程序上加入自己公司官网的访问地址,点击后跳转到官网。 本文详细讲解整个过程。 一、小程序管理台配置 进入小程序管理台 开发管理-》业务域名 加入你的公司官网域名,具体如下图所示&…

2024新型数字政府综合解决方案(八)

新型数字政府综合解决方案结合人工智能、大数据、区块链与云计算等先进技术,旨在构建一个智能、高效、透明的政务服务体系,通过全面整合各部门的信息资源,实现数据的实时共享与高效管理,从而大幅提升政府应对复杂社会问题的能力&a…

LookupError: Resource averaged_perceptron_tagger not found.解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

如何选择较为安全的第三方依赖版本?

如何选择较为安全的第三方依赖版本? 本文概览1.1 前言1.1.1 学会看第三方开源库的版本发布说明1.1.2 尽可能使用 starer 匹配的第三方开源库1.1.3 参考Maven 中心仓库的安全警告信息 本文概览 本篇博文分享如何选择较为安全的第三方依赖版本的方法。 1.1 前言 众…

学习Flutter时需要了解的背景知识

关键词:Flutter、移动UI框架、跨平台、Widget、高效开发、自定义Widget、热重载、性能优化 摘要:Flutter是Google推出的开源移动UI框架,旨在支持高效构建高质量的原生应用,同时兼容iOS和Android平台。它通过热重载技术实现高效开发…

【机器人学】7-1.六自由度机器人自干涉检测-总体算法介绍

目录 前言 机器人自干涉检测方法 一 机械臂各连杆等效 二 确定一个圆柱体 三 圆柱体的空间变换 四 空间几何分析 五 关键点总结 前言 机器人在运行过程中,可能发生碰撞,碰撞物可以是外界物体,也可以是机器人自己的关节间发生碰撞…

Docker部署Eclipse Mosquitto开源MQTT的消息代理环境步骤(实践)

1.前言 Eclipse Mosquitto是一个开源(EPL/EDL许可)的消息代理,实现了MQTT协议的版本5.0、3.1.1和3.1。Mosquitto是轻量级的,适用于从低功耗单板计算机到完整服务器的所有设备。 MQTT协议提供了一种轻量级的消息传输方法&#xf…

渗透测试-行业术语

1.肉鸡 肉鸡用来比喻哪些可以随意被我们控制的计算机,可以是普通的个人电脑,也可以是大型服务器或者其他网络设备,我们可以像操作自己的电脑一样操作他们而不被发觉。 2.木马 表面上伪装成了正常程序,但是当程序被运行的时候&a…

【gitlab】gitlab-ce:17.3.0-ce.0 1:使用docker engine安装

ce版本必须配置代理。 极狐版本可以直接pull 社区版GitLab不支持Alibaba Cloud Linux 3,本操作以Ubuntu/Debian系统为例进行说明,其他操作系统安装说明,请参见安装社区版GitLab。 docker 环境重启 sudo systemctl daemon-reload sudo systemctl restart docker脚本安装 安裝…

趣味算法------约瑟夫环

目录 问题概述: 问题解析: 图文示意: 处决开始: 第一轮结束: 第二轮结束: 最后一轮: 寻找规律: 最终思路: 具体代码: 总结: 问题概述&…

【Pytorch02】开发环境准备

开发环境准备 安装教程 视频 开发环境 Python 3.7 Anaconda 3.5.1CUDA 10.0Pycharm Community 检测是否安装完毕 conda --version # 检查Anaconda是否安装完毕 nvcc -V # 检查CUDA是否安装完毕

ES-分布式搜索引擎

DSL查询文档 精确查询 、 我附近的人 实例 根据页码跳转无法使用 高亮

Flandre Scarlet的精致蕾丝上半身造型,金发飘逸

Flandre Scarlet戴zun帽,上半身细节极其精致的蕾丝装饰,面带微笑,双臂自然下垂,金色头发飘逸。 正向提示词 Flandre Scarlet,zun hat,extremely detailed lace,:) , upper body,arms at sides,lace,golden hairFlandre Scarlet&…

AI学习记录 - transformers的decoder和encoder中的自注意力矩阵和掩码矩阵的数据处理

掩码掩码,指的是掩盖住后面的词汇的词向量对我当前词汇造成影响。把PAD字符设置成负无穷大,概念上不叫掩码,只是计算方式和掩码一样。 怎么生成掩码,在非掩码注意力矩阵中,把PAD词向量每个维度设置成负无穷大&#xf…

基于web框架的协同过滤的美食推荐系统【数据爬虫、管理系统、数据可更新、样式可调整】

文章目录 有需要本项目的代码或文档以及全部资源,或者部署调试可以私信博主项目介绍研究背景研究的目的与意义协同过滤算法基于用户的协同过滤算法定义基于物品的协同过滤算法的定义 数据库设计db_food(美食信息表)db_collect(美食…

加载torch报错及如何解决

Failed to import pytorch fbgemm.dll or one of its dependencies is missing. 这往往是你的电脑缺少了某些微软的dll文件。所以报错了。 解决办法 前往https://www.dllme.com/dll/files/libomp140_x86_64?sortupload&arch0x8664 点击。 按照你的电脑是否为64位进行选择…

vue3-03-创建响应式数据的几种方法

响应式数据 一、 ref 创建:响应式数据1)ref 创建:基本类型的响应式数据2)ref 创建:对象类型的响应式数据3)volar 插件自动添加 .value4)customRef 自定义 ref 二、 reactive 创建:响…