AI建模师-素养手册(12)-从作品中学习专家创作-GAN模型_第1页
AI建模师-素养手册(12)-从作品中学习专家创作-GAN模型_第2页
AI建模师-素养手册(12)-从作品中学习专家创作-GAN模型_第3页
AI建模师-素养手册(12)-从作品中学习专家创作-GAN模型_第4页
AI建模师-素养手册(12)-从作品中学习专家创作-GAN模型_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

从作品中学习专家创作1AI建模师手册<第12集>从作品中学习专家创作By高焕堂/AI建模师俱乐部会长12.1前言12.2从作品中学习专家创作12.5GAN从人类画作中学习绘画2***本文摘自高焕堂的下列书籍******以及北京【电子世界杂志】连载专栏***IT算机只能向人类的编程(作品)学习到<逻辑性智能>。今天,像绘画、音乐、文学作品等,人类逐渐知道了如何把丰富的直AI从人类作品(如语句、小说诗篇等)学习捕捉创作者的<非逻辑性智人类天生都有一项能力,就是:人人皆有的观察周遭世界的<非逻辑。AI的特长就是使用更接近人类的<非逻辑化>方式去识别周遭的事从作品中学习专家创作3法逻辑化的)的复杂现象,例如新冠AI近人类的<非逻辑化>方式去认识周遭的事物,包括人类看不到的(也因而无法逻辑化的)的复杂现象。所以AI从莎士深的行业专家,其直觉性智慧愈丰富,表与人类专12.2从作品中学习专家创作:AI学习。还是关于<巧媳妇>的资料,还是关于<饭>的资料呢?假设这只是一般家庭的厨房,没有任何食谱。只有锅炉、水、米、饭这样思考,您就能轻易掌握<AI生成>的真谛了。在AIGC潮流下,4的答案是:关于<饭>的资料。因为<饭>是专家(如巧媳妇)的作12.3GAN模型的学习模式典型的GAN架构GAN模型里,包含了两个小模型:判别器与生成器。其中,判别器如同<老师>,而生成器则如同<学生>。从作品中学习专家创作5works6GAN个重要角色:生成器GAN的学习模式:教学相长学生和老师,两者都是从零开始,共同成长。从作品中学习专家创作7虽然老师不会画,但它会拿学生作品来与龙猫漫画书来做特征对比。如果学生作品没有龙猫漫画的重要特征,就会感觉画得不像。8老师发现了学生作品里没有龙猫漫画的重要特征:胡须。老师就要求学生加以改善。从作品中学习专家创作9老师又发现学生作品里少了龙猫漫画的另一项特征:娃娃哭时嘴巴张老师就要求学生加以改进。两者互相较量,又协同创新、教学相长。像上述的协同创作机制,特别称为生成对抗网络(Generative从作品中学习专家创作11例如下图里,左图是鉴赏者所握有的原图,而右图则是创作者所生成(数据源:/uai2017/media/tutorials/shakir.pdf)GAN是一种能够生成新数据的神经网络。你可以输入一点随机噪音GAN网络模型,是由生成器和判别器两部分组成,以非监督式机器GAN模型最后会收敛并生成自然外观逼真的图像。我们使用真画作(假品)。为了让您更容易理解上述的共同成长过程,于此特别拿<射飞镖>的12.4以GAN学习<射飞镖>为例在上一节里,您已经熟悉了GAN模型的两个主要角色是:判别器r<射飞镖>的范来说明之。阅读完本节,您将很熟悉如何训练GAN模型,并且进12.4.1AI从作品中学习<射飞镖>教练的智慧从作品中学习专家创作13此时,两人都还没有学习过射飞镖的技能。于是,就请一位教练(即专室,回家去了。请您想一想,此时这位格格学习射飞镖呢?由于这位教练已经离去了,所以他不能亲自指教格(2)我们也无法藉由设定T(目标值)的方式,把他的专家(射飞镖)智从作品中学习专家创作1512.4.2以Pytorch实现<射飞镖>的GAN模型##px07_03.pyimportnumpyasnpporttorchorchnnasnnimportmatplotlib.pyplotaspltdefsigmoid(y):return1/(1+np.exp(-y))NoiseSize=16noise=torch.rand(NoiseSize)*15.0#准备真品(教练投镖)real_data=np.array([[0,0],[-0.2,-0.3],[0.2,-0.3]]).flatten() real_X=torch.tensor(real_data).float()ones#定义D(丫环)模型lerselfinitrnnLinearLineardefforward(self,X):H=torch.relu(self.layer1(X))Y=self.layer2(H)turntorchsigmoidY#定义G(格格)模型superGeneratorselfinit__()selflayer=nn.Linear(NoiseSize,32)Lineardefforward(self,N):Y=torch.relu(self.layer1(N))returnselflayer2(Y)inatorG=Generator()#损失函数soptimizer_d=torch.optim.Adam(D.parameters(),lr=0.0002)optimizer_g=torch.optim.Adam(G.parameters(),lr=0.0002)TZ=D(X)从作品中学习专家创作从作品中学习专家创作17optimizer_d.zero_grad()ssbackwardretaingraphTrueoptimizer_d.step()deftrain_G(N,T):Y=G(N)new_X=YZ=D(new_X)optimizer_g.zero_grad()optimizer_g.step()deftrain(epochs,steps):forepinrange(epochs):new_X=G(N)welifif(ep%steps==0):ounddlossnpgloss", ax=np.reshape(real_data,(3,2))#把随机构想(噪音)给格格,生成新品(假品)new_X=G(N)fx=new_X.detach().numpy()fx=np.reshape(fx,(3,2))ltylimpltscatteraxax1],c='red')pltscatterfx[:,0],fx[:,1],c='blue')tshow#ENDe从作品中学习专家创作19defforwardselfNein20train(50,10)从作品中学习专家创作21train(1000,200)22***************************************从作品中学习专家创作2312.5GAN从人类画作中学习绘画24#px07_05.pyimportnumpyasnpporttorchorchnnasnnfromtorchvisionimporttransformsttorchvisionutilsasvutilsimportmatplotlib.pyplotaspltimporttorch.optimasoptimfromPILimportImageimportosimportglobtorch.manual_seed(1)noise_size=100#生成噪音从从作品中学习专家创作25returntorch.randn(1,noise_size)transform=transforms.Compose([transformsResize,128)),transforms.ToTensor(),transforms.Normalize([0.5,0.5,0.5],0.5,0.5,0.5])])#实际读取*.png图片forimageNameinglob.glob('c:/oopc/animal_zebras_data/train/class0/*.png'):image=Image.open(imageName).convert('RGB')image=transform(image)face_images.append(image)#实际读取*.jpg图片zebraimages]forimageNameinglob.glob('c:/oopc/animal_zebras_data/train/class1/*.jpg'):image=Image.open(imageName).convert('RGB')image=transform(image)zebra_images.append(image)cond_0=torch.zeros(1,1).long()ngltorchones226classname=m.__class__.__name__ifclassname.find('Conv')!=-1:torch.nn.init.normal_(m.weight,0.0,0.02)elifclassname.find('BatchNorm')!=-1:torch.nn.init.normal_(m.weight,1.0,0.02)torch.nn.init.zeros_(m.bias)lerselfinitself.cond=nn.Sequential(nnLinear)self.model=nn.Sequential(nn.Conv2d(6,64,4,2,1,bias=False),nnLeakyReLU2,inplace=True),nn.Conv2d(64,128,4,3,2,bias=False),nn.BatchNorm2d(128,momentum=0.1,eps=0.8),nnLeakyReLU2,inplace=True),nn.Conv2d(128,256,4,3,2,bias=False),nn.BatchNorm2d(256,momentum=0.1,eps=0.8),nnLeakyReLU2,inplace=True),nn.Conv2d(256,512,4,3,2,bias=False),nn.BatchNorm2d(512,momentum=0.1,eps=0.8),从从作品中学习专家创作27nnLeakyReLU2,inplace=True),nn.Sigmoid())defforward(self,x):image,cond=xc=self.cond(cond)c=c.view(-1,3,128,128)concat=torch.cat((image,c),dim=1)z=self.model(concat)superGeneratorselfinit__()self.cond=nn.Sequential(self.noise=nn.Sequential(nn.Linear(noise_size,4*4*512),nnLeakyReLU2,inplace=True))self.model=nn.Sequential(nn.ConvTranspose2d(513,512,4,2,1,bias=False),nn.BatchNorm2d(512,momentum=0.1,eps=0.8),nn.ConvTranspose2d(512,256,4,2,1,bias=False),228nn.BatchNorm2d(256,momentum=0.1,eps=0.8),nn.ConvTranspose2d(256,128,4,2,1,bias=False),nn.BatchNorm2d(128,momentum=0.1,eps=0.8),nn.ConvTranspose2d(128,64,4,2,1,bias=False),nn.BatchNorm2d(64,momentum=0.1,eps=0.8),nn.ConvTranspose2d(64,3,4,2,1,bias=False),defforward(self,x):noise,cond=xn=self.noise(noise)n=n.view(-1,512,4,4)c=self.cond(cond)c=c.view(-1,1,4,4)ncattorchcatncdimimage=self.model(concat)inatorG=Generator()optimizer_g=optim.Adam(G.parameters(),lr=0.0005,betas=(0.5,0.999))optimizer_d=optim.Adam(D.parameters(),lr=0.0005,betas=(0.5,0.999))从从作品中学习专家创作29TZ=D(XC)optimizer_d.zero_grad()ssbackward

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论