【官方框架】
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》中英字幕(豆包https://www.bilibili.com/video/BV1LweTesEbi/
【源码下载地址】
https://download.csdn.net/download/FL1623863129/89643872