#反光去除,Intel黑客松!
  qYp7nXc4HVnW 2023年11月22日 15 0

1. 问题背景以及竞赛选题

图像反光去除是指在拍摄或采集图像时,由于光线的反射和折射等原因,图像中出现了反光现象,导致图像质量降低。这种问题常见于照片、视频、医学图像等领域。


Intel AI套件以及Openvino模型推理加速


在开发图像反光去除模型时,需要考虑以下几个方面:


反光类型:不同类型的反光需要采用不同的处理方法。例如,平面镜面反光和非平面镜面反光需要采用不同的处理方法。


反光强度:反光强度越强,去除难度越大。因此,需要在模型中考虑如何处理不同强度的反光。



2. 模型选择


反光去除模型的设计和实现方式有很多种,以下是其中一种常见的模型:


基于深度学习的模型:这种模型通常使用卷积神经网络(CNN)或生成对抗网络(GAN)等深度学习技术来进行反光去除。例如,可以使用U-Net网络结构来实现反光去除,或者使用GAN框架来训练生成器和判别器模型。


反光去除模型的设计和实现方式有很多种,需要根据具体问题选择合适的方法和技术。



3. 模型训练

def bilinear_up_and_concat(x1, x2, output_channels, in_channels, scope):

    with tf.variable_scope(scope):

        upconv = tf.image.resize_images(x1, [tf.shape(x1)[1]*2, tf.shape(x1)[2]*2])

        upconv.set_shape([None, None, None, in_channels])

        upconv = slim.conv2d(upconv,output_channels,[3,3], rate=1, activation_fn=None, weights_initializer=tf.contrib.layers.xavier_initializer(),scope='up_conv1')

        upconv_output =  tf.concat([upconv, x2], axis=3)

        upconv_output.set_shape([None, None, None, output_channels*2])

    return upconv_output



# def conv2upconcat(conv_a, conv_b, output_channel, ext):

#     up6 =  bilinear_up_and_concat( conv_b, conv_a, output_channel, output_channel*2, scope=ext+"g_up_1" )

#     conv6=slim.conv2d(up6,  output_channel,[3,3], rate=1, activation_fn=lrelu, scope=ext+'g_conv6_1')

#     conv6=slim.conv2d(conv6,output_channel,[3,3], rate=1, activation_fn=lrelu, scope=ext+'g_conv6_2')

#     return conv6




def bilinear_resize_and_concat(x1, x2, output_channel, scope):

    with tf.variable_scope(scope) as variable_scope:

        upconv = tf.image.resize_images(x1, [tf.shape(x1)[1] * 2, tf.shape(x1)[2] * 2])

        upconv = slim.conv2d(upconv, output_channel, [3, 3], rate=1, activation_fn=None,

                             weights_initializer=ini, scope="upconv1")

        upconv = tf.concat([upconv, x2], axis=3)

    return upconv




4. 模型测试


通过一些在日常生活中经常遇见的反光情况,看一下模型测试的效果


可以看到反光去除的效果较好。

#反光去除,Intel黑客松!_2d

#反光去除,Intel黑客松!_2d_02

















5. Intel架构


1. 安装Intel One API工具包,并配置相应的环境变量。

2. 加载训练数据集和测试数据集,并将其转换为One API支持的格式。

3. 定义模型,并将其转换为One API支持的格式。

4. 定义损失函数和优化器,并将其转换为One API支持的格式。

5. 将模型和数据加载器放入设备内存中。

6. 在设备上执行训练循环,使用One API提供的函数进行前向计算、反向传播和参数更新等操作。


6. 总结

在这次比赛中,我使用了图像处理网络来对一些反光的图像进行一些反光的去除以及修复,并且通过我们的Intel架构实现了模型推理的加速以及模型的转换,支持放在更多的设备中来实现前向计算反向传播等过程。实在是一个宝贵的比赛经验。

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月22日 0

暂无评论

推荐阅读
  ApTxpH0CpnLS   2023年11月13日   22   0   0 sedhtmljavaAPI
  zNxK8cIqmu7p   2023年11月19日   18   0   0 ServerAPIPod
  jLXKB6vexBrB   2023年11月13日   20   0   0 API