手撕代码1:deep image matting

 2022-01-07 

前言

本系列文章就是为了解决一个特别坑的问题:下载下来的github模型该怎么去看懂。毕竟大多数从论文学代码的家伙的基础都是。。。差不多的拉。。。所以就把这个笔记作为一个记录弄上来了。

代码github地址:https://github.com/foamliu/Deep-Image-Matting-PyTorch

论文地址:https://arxiv.org/abs/1703.03872???????????

这篇论文被称为深度学习抠图的开山之作,在之后的深度学习抠图的算法来说都当作标杆一样的进行比对,虽然是2017年cvpr的久远论文,但是开创了抠图的新思路,那就是纯粹按照损失函数进行比对来抠。后续的算法不管结构多么神奇堆叠,本质思想是从他开始的。

算法结构:

简单粗暴的encoder和decoder模型架构,仅仅就是用了卷积就达到了文章所说的效果,这个模型本身就极为神奇。放到现在天花乱坠的拼搭的画风简直就是一股子清流。那么现在就开始手撕模型代码然后再讲具体是咋回事。

手撕代码

第一步:看说明文档

说明文档里面会有这份模型对应的论文地址以及数据集外加一些事项,所以先看说明文档的话会节省很多不必要的时间浪费。(ps:最开始就因为缺少数据集足足白费了太多预处理的时间)

一般说明文档会在github页面上显示。本身这一套代码里面也有readme文档

这一块说的就是模型需要的数据集,除了第一条dim官方数据集需要自己找之外,其余的点击链接就能下载。

这一部分说的就是这篇代码怎么使用了,后序手撕代码也得在这里面进行一点一点的抠。

pre-process.py:数据集的预处理

train.py :训练数据集

要进行训练第一步就是需要将数据集预处理,结束之后才能进行模型的训练(cpu炼丹)。但是这里面还有一个坑,直接进行训练的话会报错出现缺少train_name.txt,代码结构里也没有,那就得在预处理结束之后运行data_gen.py才会生成。

有的模型会提供训练好的文件进行使用,直接使用checkpoint会省下很多时间,但是很不幸,这个checkpoint损坏了,就得老老实实自己从头练

下一篇将会从头到尾进行第一阶段的代码手撕,在手撕的过程中进行对论文架构的解读。