环境问题
python :3.10.12
ModuleNotFoundError: No module named ‘torchvision.models.utils
起初pip以下这个包,也没有解决问题;后来发现是版本的问题。
#from torchvision.models.utils import load_state_dict_from_url
from torch.hub import load_state_dict_from_url
将该语句注释掉,换掉下面的即可解决问题。
参考地址
No module named ‘visdom’
- pip该包。
pip install visdom
接着出现该问题:
pip._vendor.urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host=‘files.pythonhosted.org’, port=443): Read timed out.
- pip如下包:
pip install jsonpatch
- 成功后再次执行步骤1即可。
V3+由来
V3+继承了,V3编码的部分,但是V3的解码器部分因为多层卷积,导致分辨率下降,丢失了很多细节,还原为原图相关不太好。因此在解码器部分加了一个简单的操作,既保留了边界特征,还不增大计算量!如图下图模型:
空洞卷积
语义分割网络,通常会经过一系列下采样对图片进行压缩,然后再经过一系列上采样还原图片的大小。通常对于分类任务我们都是对图像进行 32 倍下采样(比如224*224分辨率的图片->变成7*7),然后再经过一系列上采样还原为原图,如果下采样倍率过大时,想要还原为原图像就没那么容易。丢失细节信息,所以在语义分割效果不是那么理想。
==因此要想增大感受野就得下采样,但是下采样会丢失信息。==有没有两全其美的办法呢?
那就是空洞卷积。空洞卷积可以在不改变图片分辨率的情况下,增加感受野。
- 空洞卷积设计之初是为了获取长程,也就是距离较远像素之间的相关信息,采用 rate 较大空洞卷积有利一些大目标分割有效,而对于小目标来说则有弊无利。想要很好同时处理大小目标,则需要设计一个好的空洞网络。
计算卷积\池化\反卷积\空洞卷积后图像大小的方法:
参考链接
前向传播流程:
注意是backbone输出了两个特征。一组是encoder的’out’经过多层卷积,包含着丰富特征的高阶特征,一组是Decoder的’low_level’,只进行了几层的卷积,保留着边界特征的底层特征。
总结
第一次接触,backbone的卷积网络,研究了老半天,才弄懂网络结构,目前只有这么浅显的理解,后续如果有更深入的问题,会继续补充。