DeepFill v2踩坑记录

在跑著名的deepfill_v2时,遇到了一点麻烦,在此记录一下,如果能帮到遇到相同问题的朋友就再好不过了(*^▽^*)

论文:Free-Form Image Inpainting with Gated Convolution(https://arxiv.org/abs/1806.03589

项目地址:https://github.com/JiahuiYu/generative_inpainting

言归正传:

1.Prepare training images filelist

作者给出了例子,有代码能力的朋友应该都能看懂,这里贴一下我改写的代码(基本没改(●—●)):


import os
from random import shuffle


folder_path = '/media/david/comvision/YZW/dataset/celebaHQ_256'	# 数据集地址
train_filename = './data_flist/train_shuffled.flist'	# 训练用flist
validation_filename = './data_flist/test_shuffled.flist'	# 测试用flist
is_shuffled = 1	# 数据打乱,默认为1(打乱)
print(type(is_shuffled))

if __name__ == "__main__":

    # get the list of directories and separate them into 2 types: training and validation
    training_dirs = os.listdir(folder_path + "/train_pic")	# 训练集
    validation_dirs = os.listdir(folder_path + "/test_pic")	# 测试集

    # make 2 lists to save file paths
    training_file_names = []
    validation_file_names = []

    # append all files into 2 lists
    for training_dir in training_dirs:
        # append each file into the list file names
        training_folder = os.listdir(folder_path + "/train_pic" + "/" + training_dir)
        for training_item in training_folder:
            # modify to full path -> directory
            training_item = folder_path + "/train_pic" + "/" + training_dir + "/" + training_item
            training_file_names.append(training_item)

    # append all files into 2 lists
    for validation_dir in validation_dirs:
        # append each file into the list file names
        validation_folder = os.listdir(folder_path + "/test_pic" + "/" + validation_dir)
        for validation_item in validation_folder:
            # modify to full path -> directory
            validation_item = folder_path + "/test_pic" + "/" + validation_dir + "/" + validation_item
            validation_file_names.append(validation_item)

    # print all file paths
    for i in training_file_names:
        print(i)
    for i in validation_file_names:
        print(i)

    # shuffle file names if set
    if is_shuffled == 1:
        shuffle(training_file_names)
        shuffle(validation_file_names)

    # make output file if not existed
    if not os.path.exists(train_filename):
        os.mknod(train_filename)

    if not os.path.exists(validation_filename):
        os.mknod(validation_filename)

    # write to file
    fo = open(train_filename, "w")
    fo.write("\n".join(training_file_names))
    fo.close()

    fo = open(validation_filename, "w")
    fo.write("\n".join(validation_file_names))
    fo.close()

    # print process
    print("Written file is: ", train_filename, ", is_shuffle: ", is_shuffled)

唯一需要注意的是数据集的层次结构:

- model_logs
- neuralgym_logs
- training_data
  -- training
    --- <folder1>
    --- <folder2>
    --- .....
  -- validation
    --- <val_folder1>
    --- <val_folder2>
    --- .....
- <this_file.py>

2.配置环境

用Pycharm来运行代码的小伙伴可能会遇到这个报错:

 ImportError: libcublas.so.9.0: cannot open shared object file: No such file

这里要分两种情况讨论:

1) 你的TensorFlow和cuda的版本真的没有配置对,这种情况很容易解决啦,这里就不多加赘述。

2) Pycharm自己的问题

这类情况表现为在终端和 Pycharm console 运行并不会出现该错误,只有在Pycharm在导入时出现错误,那么有两种解决方案:

(1) 配置 Pycharm 中的环境变量(Environment variables)

      在Pycharm 运行的脚本的配置界面添加环境变量:

      [1] - Edit configurations - (在 Run/Debug Configurations 界面)

      [2] - Environment variables - (在 Environment 项组)

      [3] - 新增环境变量 LD_LIBRARY_PATH=/usr/local/你的cuda文件夹名/lib64

(2)修改 pycharm.sh,以确保 pycharm 具有读取 .bashrc 环境变量文件的权限。

     在 pycharm.sh 文件中 IFS="$(printf '\n\t')" 的后面一行添加如下内容: 

LD_LIBRARY_PATH="/usr/local/cuda/lib64:/usr/local/cuda-9.0/lib64:/usr/local/cuda-9.0/extras/CUPTI/lib64"

 

致谢与参考:

https://github.com/JiahuiYu/generative_inpainting

https://github.com/JiahuiYu/generative_inpainting/issues/15

https://www.aiuai.cn/aifarm678.html

 

  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值