图像修复 deepfill v2: Free-Form Image Inpainting with Gated Convolution ------ 使用多GPU进行训练

Free-Form Image Inpainting with Gated Convolution 是 JIAHUI YU 大神最新的图像修复文章,可以用来修复含不规则mask的图像,也称deepfill v2。改版代码还没开放,但有很多人复现了,GitHub上找到一个复现的代码:https://github.com/avalonstrel/GatedConvolution。感谢大神的复现,让我可以快速炼丹。

这里主要记录一下如何使用多GPU进行训练,参数太多,训练速度实在是太慢了。。。后面还会尝试一下如何提升训练速度。

经评论提醒原作代码已放出来了,已测试,效果棒棒,大家快去围观https://github.com/JiahuiYu/generative_inpainting

首先,把代码下载下来https://github.com/avalonstrel/GatedConvolution。实现多GPU训练需要修改的地方如下:

1. 在train.py中,将下面这段代码

    trainer = Trainer(
        optimizer=g_optimizer,
        var_list=g_vars,
        max_iters=config.MAX_ITERS,
        graph_def=multigpu_graph_def,
        grads_summary=config.GRADS_SUMMARY,
        gradient_processor=gradient_processor,
        graph_def_kwargs={
            'model': model, 'data_mask_data': data_mask_data, "guides":None, 'config': config, 'loss_type': 'g'},
        spe=config.TRAIN_SPE,
        log_dir=log_prefix,
    )

为:

trainer = ng.train.MultiGPUTrainer(
        num_gpus=config.NUM_GPUS,
        optimizer=g_optimizer,
        var_list=g_vars,
        max_iters=config.MAX_ITERS,
        graph_def=multigpu_graph_def,
        grads_summary=config.GRADS_SUMMARY,
        gradient_processor=gradient_processor,
        graph_def_kwargs={
            'model': model, 'data_mask_data': data_mask_data, "guides":None, 'config': config, 'loss_type': 'g'},
        spe=config.TRAIN_SPE,
        log_dir=log_prefix,
    )

可以看到,主要是把 trainer = Trainer 修改成了 trainer = ng.train.MultiGPUTrainer,然后添加了num_gpus=config.NUM_GPUS

2. 修改 inpaint.yml 文件中的NUM_GPUS和GPU_ID就可以了,下面是我自己的修改。

NUM_GPUS: 2
GPU_ID: [2,3]  # -1 indicate select any available one, otherwise select gpu ID, e.g. [0,1,3]

 

顺便提一下上一版deepfill v1的论文叫做Generative Image Inpainting with Contextual Attention,代码已经放出来了https://github.com/JiahuiYu/generative_inpainting。讨论区中有关于deepfill v2复现的讨论,值得一看。 

deepfill v1主页:http://jiahuiyu.com/deepfill/

deepfill v2主页:http://jiahuiyu.com/deepfill2/

你可能感兴趣的:(image,Inpainting)