具体代码在之前已经大致讲过了,这里讲讲微调的过程和最终的结果。
一、租借服务器
我的笔记本只有CPU跑的太慢,Google的colab虽然提供免费的GPU资源但是有限制的,基本一天只能用一会然后就中断了……所以还是去租了服务器。
网站:Autodl算力云
注册一个账号,充值一些金额,然后就可以选需要的服务器了。
租用的时候尽量选GPU充足的:
我的配置:
开机之后,可以点击Jupyter lab线上跑,也不用登录,很方便。
直接在jupyter lab中上传自己的数据集、sam原始模型、训练代码。
新建终端
点击新建终端,就会出现这个页面,代表已经在服务器上了。
配置环境
服务器上只有一些基本的包,比如torch之类的,如果需要其他的包需要手动安装:
开始训练
如果训练文件是py,直接终端输入:
python youFileName
像这样:
不过我的是单元格cell,所以我并没有这样做。
二、jupyter lab训练
在初始页面,已经在终端配置好环境了。
所以我就新建了一个jupyter lab的笔记本,把代码copy进去即可。
用单元格最大的好处就是训练过程可以分阶段地中断和开始,而且能够非常容易地显示出我想要的数据。
三、结果展示
在代码中,有几处图像展示,我解释一下他们都是什么。
1
第一处这里展示的是:
- 对图像的预处理正确;
- 对掩码的处理正确;
- 对box的位置提取正确;(我给他留了个margin,让他不要太过于贴近掩码本身)
这张图片能够成功展示就代表着我在前面进行的图像预处理工作已经没问题了。下面就开始训练。
2
到最后能看出来损失值已经很小很小了,只有0.023。
于是我让他打印出了此时sam的预测结果和gt的对比结果,更直观一点:
由于图片比较多,这里只展示部分图片:
从图片也能更直观的看出来,sam预测出的掩码已经和gt非常相似了,准确度非常高,即使是在形状不太规则的时候。
3
根据损失值绘制出折线图:
可以看出,整体趋势还是下降的,准确度不断被提高。
4
最后,我们加载刚刚微调之后的模型和原始的sam模型进行一个预测的对比。
很显然,调过之后的边缘更加平滑,而且掩码的范围也更精准,整体效果还是非常好的。
四、下载模型
训练时我将模型保存了起来:
这样,右键点击下载即可,他就可以和sam之前提供的所有与训练模型一样使用了。
忘了提了,我这里训练的是sam_vit_b。
到此为止,我的微调工作就结束了!