【计算机幻觉】windows10+TF复现FashionNet

前言

其实之前一直在企图写一篇用人话讲述卷积层反传,最后把自己都搞混了,就鸽了一个月,现在也不想搞那玩意儿了。
在这里插入图片描述
在找项目复现练练手的时候,突然发现其实详细的推导过程没那么重要,那是科学家研究的事,工程师搞好落地就行了,也许我也会有一天心血来潮,把那个地方补补。
2月10号,不建议后人去复现这个论文,因为里边的模型都过时了, 复现了之后得到的知识也很少。

电脑配置

win10
16g运行内存(显然不够,需要设置虚拟内存,下面会说)
i7-8750h+rtx2080(cuda的版本安装)
python3.6(因为windows的python2.7的已经不支持tf了。大人,食大便了!!!)

预备操作

anaconda:

安装python3.6环境,不要用命令行装哦,用anaconda直接进去装,我感觉这样稳一点。
如图:在这里插入图片描述

下载代码

进网站,直接下载,或者用git,把别人的代码clone下来。
https://github.com/abhishekrana/DeepFashion
文件内容解压如图:
在这里插入图片描述

下载数据集

第一种方式:直接点 dataset_download.sh
第二种方式:百度云 :https://pan.baidu.com/share/init?surl=OmxY1uWeufvfSAKXwQTSdg 密码:vs11
文件来源此处 ,作者:寒武纪元

CUDA和cudnn安装

我的CUDA是V9.0.176。
重点来了:cudnn版本是7.0.5,不然之后会报错,具体安装下载方法网上搜吧,很简单的。

虚拟内存设置(防止出现MemoryError)

之后训练的时候,数据是要一次性整合的,就会造成爆内存(人穷玩不起)。
我的虚拟内存原来是设在c盘的,c盘本来就只剩10g,根本不够用,建议设置在其他盘,具体方法网上有。
我建议初始设置20g,最大40g,不要问我怎么设这么多,问就是稳。
还有另外一种方法,最好一起食用,下面在train.py里会讲的。

pycharm设置

把其中一个文件data_create.py用pycharm打开,我建议是data
在这里插入图片描述点进去,在这里插入图片描述
到这里,就开始找anaconda的环境,一般在anaconda安装目录的envs里面。
我的环境叫test,看这张图片:
在这里插入图片描述
里面有一个python.exe,选中按ok就完事,如图:在这里插入图片描述
然后它会说什么requirements.txt啥的,别管他,让他自己装会出事。

最最最痛苦的来了————安装老版本的库

具体思路:先只装一点,然后直接运行,看它缺啥诡异的module,就照着文件里面的requirements.txt要求的版本装(或者直接用我的)。
在这里插入图片描述
这次用anaconda的命令行来安装,不然会装到其他环境里去。
activate ***(环境名)
pip install --default-timeout=100 -i https://pypi.tuna.tsinghua.edu.cn/simple + (你要安装的东西)
先安装这几个:

tensorflow-gpu==1.5.0(对,就是1.5.0版本,与cuda啥版本保持匹配)
numpy==1.13.1
matplotlib==2.0.2
Keras==2.0.6
h5py==2.7.0

解下来就是直接run 他妈的 data_create.py
看他缺啥库,缺啥,就在anaconda的命令行里装啥。
再他妈的的run
再他妈的装

某些库经常报错的话,可以试试升级。
如:里面有一个selectivesearch= =0.3,我装的是selectivesearch==0.4。
最好照着我的版本来。

非常重要的警告:你补啥的时候,它会突然升级一些附属库,然后就又尼玛的出事了(最典型的就是numpy),不需要卸载它,直接装旧版本就行了。然后在运行。
下面是我的库:
在这里插入图片描述
在这里插入图片描述

代码运行中的错误

(稍稍建议先略读代码,理解每个fuc的作用)

主要参考了
DeepFashion github项目实现】作者:寒武纪元 。
以及
【计算机视觉】(二)DeepFashion成功复现!代码复现碰到的问题和坎坷,包括代码修改和cudnn库的匹配,】作者:ciecus_csdn 。
非常感谢他们!!!

dataset_create.py(我是按最终运行顺序来改的)

1.category_name_generate()

在这里插入图片描述这里不需要改,只是提示。
最先看到的是这个玩意儿,默认的是category_name_generate=[‘Coat’, ‘Kaftan’, ‘Robe’],意思是只处理这三个的数据。我一开始作死,直接选了个最多的50个种类的那个,跑了一天一夜图片都没分类完(只分了1/4)。
如果想作多种识别,只能每种类型数据少一点,我建议先选3种练练手,将所有代码通读一遍后,再自行修改一些地方(dataset_creat),限制数据集的制作。
我的方法很low,不吹不黑,真的很low,主要是对当时的我来说,要改已经来不及了,只能凑合着用了,牛逼的人建建议改改dataset_create.py里面的iou相关部分,通过if限制iou,限制一下切割图片的数量。
所以我就不放出来了。。。

2.calculate_bbox_score_and_save_img()

第一处
在这里插入图片描述 你可以直接搜索(ctrl + F)上一行,直接定位,我的行数并不准确。

image_save_path = dataset_image_path.rsplit('/', 1)[0]
if not os.path.exists(image_save_path):# 修改项
    os.makedirs(image_save_path)

多加个if啥的是为了防止第二次run用的时候报错,说什么文件已存在。

第二处
下面这个if也是同理,加try是因为有的时候图片box会分割错误,出现OSError。在这里插入图片描述

image_save_path_name = image_save_path + '/' + image_save_name + '_crop_' +  str(x) + '-' + str(y) + '-' + str(x+w) + '-' + str(y+h) + '_iou_' +  str(iou) + '.jpg'
    logging.debug('image_save_path_name {}'.format(image_save_path_name))
    if not os.path.exists(image_save_path_name):
        try:
            img_crop.save(image_save_path_name)
        except:
            pass
    continue
    logging.debug('img_crop {} {} {}'.format(img_crop.format, img_crop.size, img_crop.mode))
3.display_category_data()

在这里插入图片描述这里是新旧版本问题,把next()改为__next__()就行

这部分运行完大概15-20min。

train.py

这部分分为制作数据集,和训练数据。

save_bottleneck()

先import gc,然后在每个循环后加个gc.collect(),土豪随意,这是防止溢出的另一个方法。
第一处
在这里插入图片描述这里是VGG16模型下载速度慢的问题,不需要改代码。
文章与下载地址

第二处:
在这里插入图片描述这里是在括号里面多加一个/*,因为要的是文件夹里的文件。

train_model()

第一处

for btl_train_image in btl_train_list:
    train_labels_class.append(btl_train_image.split('\\')[2]) # 修改处
    iou_value = np.round(np.float(btl_train_image.split('_')[-1].split('.jpg')[0]), 2)
    train_labels_iou.append(iou_value)
    del iou_value
    gc.collect()

这里是盘符识别问题,乌班图与windows的不同之处。

第二处

for btl_val_image in btl_val_list:
    val_labels_class.append(btl_val_image.split('\\')[2])
    val = np.round(np.float(btl_val_image.split('_')[-1].split('.jpg')[0] ), 2)
    val_labels_iou.append(val)
    del val
    gc.collect()

和第一处同理。

这里还要修改学习率,在config.py里面,在最后几行,叫learn_rate。

predict.py

要先塞张图片,具体位置看get_images()代码。

if name == ‘main’:

预测的图片较大,就激活resize_image(images_path_name),把#去掉。

crop_bbox

这个是在utils.py里面的

def crop_bbox(image_path_name, bboxes):
    image_path_name_list = image_path_name[0].split('\\')#修改处
    image_path_name_=image_path_name_list[0]+'/'+image_path_name_list[1]#修改处
    # image_path_name_ = image_path_name
    logging.debug('image_path_name_ {}'.format(image_path_name_))
加载的model参数问题

把config.py里的top_model_weights_path_load参数改成自己训练出来的参数名字。

预测的字体问题

在控制面板下面有个字体,选一个复制到我们文件夹里的fonts里面。
在这里插入图片描述
然后在util.py里面的display_bbox_text(img, bbox, text)修改字体位置,应该是在117行。

完事!!!

结果

在这里插入图片描述淘宝上找的,会不会侵权?(#滑稽)

欢迎提出问题,记性不好,可能没写全。

也可以参考一下https://blog.csdn.net/weixin_40085833/article/details/83584473#windows10%2Bpycharmhttps://blog.csdn.net/ciecus_csdn/article/details/87826844

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值