목차
1. 환경을 준비하세요
2. 네트워크 모델
3.Loss
4. Training
기술 주변기기 일체 포함 생성적 적대 네트워크, AI가 사진을 만화 스타일로 변환합니다.

생성적 적대 네트워크, AI가 사진을 만화 스타일로 변환합니다.

Apr 11, 2023 pm 09:58 PM
그림 ai gan

안녕하세요 여러분.

모두가 최근 AI 그림을 가지고 놀고 있습니다. GitHub에서 공유할 오픈 소스 프로젝트를 찾았습니다.

생성적 적대 네트워크, AI가 사진을 만화 스타일로 변환합니다.

오늘 공유한 프로젝트는 GAN Generative Adversarial Network를 사용하여 구현되었습니다. GAN의 원리와 실제에 대해 이전에 많은 기사를 공유한 적이 있습니다. 더 알고 싶은 친구들은 역사적인 기사를 읽어보세요.

소스 코드와 데이터 세트는 기사 끝 부분에서 확인할 수 있습니다. 프로젝트를 훈련하고 실행하는 방법을 공유해 보겠습니다.

1. 환경을 준비하세요

tensorflow-gpu 1.15.0을 설치하고, GPU 그래픽카드는 2080Ti, cuda 버전 10.0을 사용하세요.

git에서 프로젝트 AnimeGANv2 소스 코드를 다운로드하세요.

환경을 설정한 후에도 데이터 세트와 vgg19를 준비해야 합니다.

생성적 적대 네트워크, AI가 사진을 만화 스타일로 변환합니다.

GAN 훈련을 위한 6k 실제 사진과 2k 만화 사진이 포함된 Dataset.zip 압축 파일을 다운로드하세요.

생성적 적대 네트워크, AI가 사진을 만화 스타일로 변환합니다.

vgg19는 손실을 계산하는 데 사용되며, 이에 대해서는 아래에서 자세히 소개하겠습니다.

2. 네트워크 모델

생성적 적대 네트워크는 두 가지 모델을 정의해야 합니다. 하나는 생성자이고 다른 하나는 판별자입니다.

생성기 네트워크는 다음과 같이 정의됩니다.

with tf.variable_scope('A'):
inputs = Conv2DNormLReLU(inputs, 32, 7)
inputs = Conv2DNormLReLU(inputs, 64, strides=2)
inputs = Conv2DNormLReLU(inputs, 64)

with tf.variable_scope('B'):
inputs = Conv2DNormLReLU(inputs, 128, strides=2)
inputs = Conv2DNormLReLU(inputs, 128)

with tf.variable_scope('C'):
inputs = Conv2DNormLReLU(inputs, 128)
inputs = self.InvertedRes_block(inputs, 2, 256, 1, 'r1')
inputs = self.InvertedRes_block(inputs, 2, 256, 1, 'r2')
inputs = self.InvertedRes_block(inputs, 2, 256, 1, 'r3')
inputs = self.InvertedRes_block(inputs, 2, 256, 1, 'r4')
inputs = Conv2DNormLReLU(inputs, 128)

with tf.variable_scope('D'):
inputs = Unsample(inputs, 128)
inputs = Conv2DNormLReLU(inputs, 128)

with tf.variable_scope('E'):
inputs = Unsample(inputs,64)
inputs = Conv2DNormLReLU(inputs, 64)
inputs = Conv2DNormLReLU(inputs, 32, 7)
with tf.variable_scope('out_layer'):
out = Conv2D(inputs, filters =3, kernel_size=1, strides=1)
self.fake = tf.tanh(out)
로그인 후 복사

생성기의 메인 모듈은 역 잔차 블록입니다

생성적 적대 네트워크, AI가 사진을 만화 스타일로 변환합니다.

잔차 구조(a)와 역 잔차 블록(b)

판별기 네트워크 구조는 다음과 같습니다.

def D_net(x_init,ch, n_dis,sn, scope, reuse):
channel = ch // 2
with tf.variable_scope(scope, reuse=reuse):
x = conv(x_init, channel, kernel=3, stride=1, pad=1, use_bias=False, sn=sn, scope='conv_0')
x = lrelu(x, 0.2)

for i in range(1, n_dis):
x = conv(x, channel * 2, kernel=3, stride=2, pad=1, use_bias=False, sn=sn, scope='conv_s2_' + str(i))
x = lrelu(x, 0.2)

x = conv(x, channel * 4, kernel=3, stride=1, pad=1, use_bias=False, sn=sn, scope='conv_s1_' + str(i))
x = layer_norm(x, scope='1_norm_' + str(i))
x = lrelu(x, 0.2)

channel = channel * 2

x = conv(x, channel * 2, kernel=3, stride=1, pad=1, use_bias=False, sn=sn, scope='last_conv')
x = layer_norm(x, scope='2_ins_norm')
x = lrelu(x, 0.2)

x = conv(x, channels=1, kernel=3, stride=1, pad=1, use_bias=False, sn=sn, scope='D_logit')

return x
로그인 후 복사

3.Loss

손실을 계산하기 전에 VGG19 네트워크를 사용하여 이미지를 벡터화합니다. 이 프로세스는 NLP의 Embedding 작업과 약간 비슷합니다.

Eembedding​은 단어를 벡터로 변환하는 것이고, VGG19는 그림을 벡터로 변환하는 것입니다.

생성적 적대 네트워크, AI가 사진을 만화 스타일로 변환합니다.

VGG19 정의

손실 부분 계산 논리는 다음과 같습니다.

def con_sty_loss(vgg, real, anime, fake):

# 真实생성적 적대 네트워크, AI가 사진을 만화 스타일로 변환합니다.向量化
vgg.build(real)
real_feature_map = vgg.conv4_4_no_activation

# 生成생성적 적대 네트워크, AI가 사진을 만화 스타일로 변환합니다.向量化
vgg.build(fake)
fake_feature_map = vgg.conv4_4_no_activation

# 漫画风格向量化
vgg.build(anime[:fake_feature_map.shape[0]])
anime_feature_map = vgg.conv4_4_no_activation

# 真实생성적 적대 네트워크, AI가 사진을 만화 스타일로 변환합니다.与生成생성적 적대 네트워크, AI가 사진을 만화 스타일로 변환합니다.的损失
c_loss = L1_loss(real_feature_map, fake_feature_map)
# 漫画风格与生成생성적 적대 네트워크, AI가 사진을 만화 스타일로 변환합니다.的损失
s_loss = style_loss(anime_feature_map, fake_feature_map)

return c_loss, s_loss
로그인 후 복사

여기서 vgg19는 실제 이미지(매개변수 real)와 생성된 이미지(매개변수 fake)의 손실을 각각 계산하는 데 사용됩니다. 생성된 이미지(매개변수 가짜) 및 만화 스타일 손실(매개변수 애니메이션).

c_loss, s_loss = con_sty_loss(self.vgg, self.real, self.anime_gray, self.generated)
t_loss = self.con_weight * c_loss + self.sty_weight * s_loss + color_loss(self.real,self.generated) * self.color_weight + tv_loss
로그인 후 복사

마지막으로 이 두 손실에 서로 다른 가중치를 부여하여 생성기에 의해 생성된 그림이 실제 그림의 모양을 유지할 뿐만 아니라 만화 스타일로 마이그레이션되도록 합니다

4. Training

에서 다음 명령을 실행합니다. 프로젝트 디렉토리 training

python train.py --dataset Hayao --epoch 101 --init_epoch 10
로그인 후 복사

을 시작하고 성공적으로 실행하면 데이터를 볼 수 있습니다.

생성적 적대 네트워크, AI가 사진을 만화 스타일로 변환합니다.

동시에 손실도 줄어들고 있는 것을 확인할 수 있습니다.

소스 코드와 데이터 세트가 패키지되어 있습니다. 필요한 경우 댓글 영역에 메시지를 남겨주세요.

이 글이 도움이 되셨다면 클릭하셔서 읽어보시고 앞으로도 훌륭한 Python+AI 프로젝트를 계속 공유하도록 격려해 주세요.

위 내용은 생성적 적대 네트워크, AI가 사진을 만화 스타일로 변환합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

SQL 삽입 문에 최신 자습서를 작성하는 방법 SQL 삽입 문에 최신 자습서를 작성하는 방법 Apr 09, 2025 pm 01:48 PM

SQL Insert 문은 데이터베이스 테이블에 새 행을 추가하는 데 사용되며 구문은 다음과 같습니다. TABLE_NAME (column1, column2, ..., columnn) 값 (value1, value2, ..., valuen); 이 명령문은 여러 값 삽입을 지원하고 널 값을 열에 삽입 할 수 있지만 삽입 된 값이 고유성 제약을 위반하지 않도록 열의 데이터 유형과 호환되도록해야합니다.

SQL에서 새 열을 추가하는 방법 SQL에서 새 열을 추가하는 방법 Apr 09, 2025 pm 02:09 PM

Alter Table 문을 사용하여 SQL의 기존 테이블에 새 열을 추가하십시오. 특정 단계에는 다음이 포함됩니다. 테이블 이름 및 열 정보 결정, Alter Table 문 작성 및 진술 실행. 예를 들어, 고객 테이블에 이메일 열을 추가하십시오 (Varchar (50)) : Alter Table 고객 이메일 추가 Varchar (50);

SQL에서 열을 추가하기위한 구문은 무엇입니까? SQL에서 열을 추가하기위한 구문은 무엇입니까? Apr 09, 2025 pm 02:51 PM

SQL에서 열을 추가하기위한 구문은 Alter Table_Name ADD CORMEN_NAME DATY_TYPE [NOT NULL] [DEFAULT DEFAULT_VALUE]; 여기서 table_name은 테이블 이름이고 column_name은 새 열 이름, data_type는 데이터 유형이며 NULL은 NULL 값이 허용되는지 여부를 지정하고 기본값 기본값을 지정합니다.

다른 데이터베이스 시스템에서 열을 추가하는 구문이 동일합니까? 다른 데이터베이스 시스템에서 열을 추가하는 구문이 동일합니까? Apr 09, 2025 pm 12:51 PM

다른 데이터베이스 시스템에서 열을 추가하기위한 구문은 크게 다르며 데이터베이스마다 다릅니다. 예를 들어 : MySQL : Alter Table 사용자는 열 이메일 Varchar (255)를 추가합니다. Postgresql : Alter Table 사용자는 열을 추가하여 varchar (255)가 널 고유하지 않음; Oracle : Alter Table 사용자 이메일 추가 Varchar2 (255); SQL Server : Alter Table 사용자는 이메일 VARCH 추가

SQL에서 열을 추가 할 때 기본값을 설정하는 방법 SQL에서 열을 추가 할 때 기본값을 설정하는 방법 Apr 09, 2025 pm 02:45 PM

새로 추가 된 열에 대한 기본값을 설정하고 Alter Table 문을 사용하십시오. 문 : 열 추가를 지정하고 기본값을 설정하십시오. Alter Table_Name Add Column_name Data_Type Default_value; 구속 조건 조항을 사용하여 기본값을 지정하십시오. ALTER TABLE TABLE_NAME CORMENT CORMEN_NAME DATA DATA DATA DATA DATA DATA DATA DATAY_TYPE 제한 DEFAULT_COSSTRANT DEFAULT DEFAULT_VALUE;

SQL 클리어 테이블 : 성능 최적화 팁 SQL 클리어 테이블 : 성능 최적화 팁 Apr 09, 2025 pm 02:54 PM

SQL 테이블 개선 성능을 개선하기위한 팁 : 삭제 대신 Truncate 테이블을 사용하고 공간을 확보하고 ID 열을 재설정하십시오. 계단식 삭제를 방지하기 위해 외국의 주요 제약 조건을 비활성화하십시오. 트랜잭션 캡슐화 작업을 사용하여 데이터 일관성을 보장합니다. 배치는 빅 데이터를 삭제하고 한계를 통해 행 수를 제한합니다. 쿼리 효율성을 향상시키기 위해 지우고 지수를 재구성하십시오.

SQL Classic 50 질문 답변 SQL Classic 50 질문 답변 Apr 09, 2025 pm 01:33 PM

SQL (구조화 된 쿼리 언어)은 데이터베이스를 작성, 관리 및 쿼리하는 데 사용되는 프로그래밍 언어입니다. 주요 기능에는 데이터베이스 및 테이블 만들기, 데이터 삽입, 업데이트 및 삭제, 분류 및 필터링 결과, 기능 집계 기능, 테이블 결합, 하위 Queries, 운영자, 기능, 키워드, 키워드/정의/제어 언어, 연결 유형, 쿼리 최적화, 보안, 도구, 리소스, 버전, 일반적인 오류, 모범 사례, 트롤링 및 로우 위에있는 오류.

삭제 명령문을 사용하여 SQL 테이블을 지우십시오 삭제 명령문을 사용하여 SQL 테이블을 지우십시오 Apr 09, 2025 pm 03:00 PM

예, 삭제 명령문은 SQL 테이블을 지우는 데 사용될 수 있습니다. 단계는 다음과 같습니다. 삭제 명령문 사용 : table_name에서 삭제; TABLE_NAME을 제거 할 테이블 이름으로 바꾸십시오.

See all articles