极智AI | GAN应用于玻璃表面水珠样本生成

简介: 大家好,我是极智视界,本文介绍一下 GAN 应用于玻璃表面水珠样本生成的方法。

大家好,我是极智视界,本文介绍一下 GAN 应用于玻璃表面水珠样本生成的方法。

在分类任务中,若类别数量不平衡,则分类结果会向样本量明显多的类别倾斜,造成分类结果准确率不高。在实际项目中,往往某一类特殊的样本复现程度低,比较难收集,在做分类任务的时候就容易造成样本不均衡的问题。下面使用 pytorch 搭建 GAN 网络进行玻璃表面样本生成。GAN有生成器和判别器两个模型,生成器不断生成样本,判别器来判断生成样本的好坏,并反馈给生成器以调整参数生成更好的样本,目的是迷惑判别器的判断,两者互相博弈,循序渐进,直至平衡。


1 生成器结构

class NetG(nn.Module):
    def __init__(self, ngf, nz):
        super(NetG, self).__init__()
        # layer1 输入的是一个 100x1x1 的随机噪声, 输出尺寸 (ngf*8)x4x4
        self.layer1 = nn.Sequential(
            nn.ConvTranspose2d(nz, ngf * 8, kernel_size=4, stride=1, padding=0, bias=False),
            nn.BatchNorm2d(ngf * 8),
            nn.ReLU(inplace=True)
        )
        # layer2 输出尺寸 (ngf*4)x8x8
        self.layer2 = nn.Sequential(
            nn.ConvTranspose2d(ngf * 8, ngf * 4, 4, 2, 1, bias=False),
            nn.BatchNorm2d(ngf * 4),
            nn.ReLU(inplace=True)
        )        # layer3 输出尺寸 (ngf*2)x16x16
        self.layer3 = nn.Sequential(
            nn.ConvTranspose2d(ngf * 4, ngf * 2, 4, 2, 1, bias=False),
            nn.BatchNorm2d(ngf * 2),
            nn.ReLU(inplace=True)
        )
        # layer4 输出尺寸 (ngf)x32x32
        self.layer4 = nn.Sequential(
            nn.ConvTranspose2d(ngf * 2, ngf, 4, 2, 1, bias=False),
            nn.BatchNorm2d(ngf),
            nn.ReLU(inplace=True)
        )
        # layer5 输出尺寸 3x96x96
        self.layer5 = nn.Sequential(
            nn.ConvTranspose2d(ngf, 3, 5, 3, 1, bias=False),
            nn.Tanh()
        )
    # 定义 NetG 的前向传播
    def forward(self, x):
        out = self.layer1(x)
        out = self.layer2(out)
        out = self.layer3(out)
        out = self.layer4(out)
        out = self.layer5(out)
        return out


2 判别器结构

# 定义鉴别器网络 D
class NetD(nn.Module):
    def __init__(self, ndf):
        super(NetD, self).__init__()  # 对继承自父类的属性进行初始化
        # layer1 输入 3 x 96 x 96, 输出 (ndf) x 32 x 32
        self.layer1 = nn.Sequential(
            nn.Conv2d(3, ndf, kernel_size=5, stride=3, padding=1, bias=False),
            nn.BatchNorm2d(ndf),
            nn.LeakyReLU(0.2, inplace=True)
        )
        # layer2 输出 (ndf*2) x 16 x 16
        self.layer2 = nn.Sequential(
            nn.Conv2d(ndf, ndf * 2, 4, 2, 1, bias=False),
            nn.BatchNorm2d(ndf * 2),
            nn.LeakyReLU(0.2, inplace=True)
        )
        # layer3 输出 (ndf*4) x 8 x 8
        self.layer3 = nn.Sequential(
            nn.Conv2d(ndf * 2, ndf * 4, 4, 2, 1, bias=False),
            nn.BatchNorm2d(ndf * 4),
            nn.LeakyReLU(0.2, inplace=True)
        )
        # layer4 输出 (ndf*8) x 4 x 4
        self.layer4 = nn.Sequential(
            nn.Conv2d(ndf * 4, ndf * 8, 4, 2, 1, bias=False),
            nn.BatchNorm2d(ndf * 8),
            nn.LeakyReLU(0.2, inplace=True)
        )
        # layer5 输出一个数(概率)
        self.layer5 = nn.Sequential(
            nn.Conv2d(ndf * 8, 1, 4, 1, 0, bias=False),
            nn.Sigmoid()  # 也是一个激活函数,二分类问题中,是真是假
            # sigmoid 可以将实数映射到【0,1】,作为概率值,
            # 多分类用 softmax 函数
        )
    # 定义 NetD 的前向传播
    def forward(self,x):
        out = self.layer1(x)
        out = self.layer2(out)
        out = self.layer3(out)
        out = self.layer4(out)
        out = self.layer5(out)
        return out


3 生成效果展示

利用 1000 张左右原始玻璃表面水珠样本,使用GAN迭代 600000 次后生成的假样本示意,可以看出十分逼真,可用于分类样本扩充。


好了,以上分享了 GAN 应用于玻璃表面水珠样本生成的方法,希望我的分享能对你的学习有一点帮助。


logo_show.gif

相关文章
|
1天前
|
机器学习/深度学习 人工智能 监控
构建未来:AI在个性化学习路径设计中的应用
【4月更文挑战第29天】 随着人工智能(AI)的飞速发展,教育领域正经历一场由数据驱动的变革。本文聚焦于AI技术在个性化学习路径设计中的应用,探讨其如何通过精准分析学习者的行为和表现来优化教学策略和内容。我们展示了利用机器学习模型来预测学习成果、识别学习障碍以及提供即时反馈的潜力。文章还讨论了实施个性化学习所面临的挑战,包括数据隐私保护和技术整合问题,并提出了相应的解决策略。
|
1天前
|
机器学习/深度学习 人工智能 测试技术
自动化测试中AI与机器学习的融合应用
【4月更文挑战第29天】 随着技术的不断进步,人工智能(AI)和机器学习(ML)在软件测试中的应用越来越广泛。本文将探讨AI和ML如何改变自动化测试领域,提高测试效率和质量。我们将讨论AI和ML的基本概念,以及它们如何应用于自动化测试,包括智能测试用例生成,缺陷预测,测试执行优化等方面。最后,我们还将讨论AI和ML在自动化测试中的挑战和未来发展趋势。
|
3天前
|
机器学习/深度学习 人工智能 自然语言处理
构建未来:AI在持续学习系统中的创新应用
【4月更文挑战第27天】 随着人工智能(AI)技术的飞速发展,其在自我进化的持续学习系统中扮演的角色日益重要。本文探讨了AI如何通过创新算法、自适应策略和交互式学习环境来优化其学习能力。重点分析了深度学习、增强学习和迁移学习等技术如何共同作用于AI系统,使其能够不断从新数据中提取知识,适应不断变化的任务要求,并实现跨领域的知识转移。此外,文章还探讨了在设计这些系统时面临的挑战,包括数据隐私、算法偏见和系统的可解释性问题。
|
4天前
|
人工智能 边缘计算 Kubernetes
阿里云边缘容器云帮助AI推理应用快速落地
2024全球分布式云大会·北京站,阿里云徐若晨演讲内容分享
14 0
|
4天前
|
人工智能 自动驾驶 安全
破壁人AI百度:科技公司反内卷的典型样本
破壁人AI百度:科技公司反内卷的典型样本
10 0
|
7天前
|
人工智能 Oracle 关系型数据库
【AI Agent系列】【LangGraph】0. 快速上手:协同LangChain,LangGraph帮你用图结构轻松构建多智能体应用
【AI Agent系列】【LangGraph】0. 快速上手:协同LangChain,LangGraph帮你用图结构轻松构建多智能体应用
20 0
|
7天前
|
存储 人工智能 数据库
【AI大模型应用开发】以LangChain为例:从短期记忆实战,到如何让AI应用保持长期记忆的探索
【AI大模型应用开发】以LangChain为例:从短期记忆实战,到如何让AI应用保持长期记忆的探索
16 0
|
7天前
|
存储 人工智能 自然语言处理
【AI大模型应用开发】【RAG评估】2. 实战:LangChain x RAGAs x LangSmith联合评估RAG应用,兼看如何借助LangSmith有效学习LangChain
【AI大模型应用开发】【RAG评估】2. 实战:LangChain x RAGAs x LangSmith联合评估RAG应用,兼看如何借助LangSmith有效学习LangChain
17 0
|
7天前
|
人工智能 Python
【AI大模型应用开发】【RAG评估】1. 通俗易懂:深度理解RAGAS评估方法的原理与应用
【AI大模型应用开发】【RAG评估】1. 通俗易懂:深度理解RAGAS评估方法的原理与应用
23 0
|
7天前
|
人工智能 监控 数据处理
【AI大模型应用开发】【LangSmith: 生产级AI应用维护平台】1. 快速上手数据集与测试评估过程
【AI大模型应用开发】【LangSmith: 生产级AI应用维护平台】1. 快速上手数据集与测试评估过程
26 0