# lib/__init__.py # 完整导入 lib 目录下所有模块的公共接口,确保无未定义引用 # ====================================== # 1. 导入 pvtv2.py 中的类和模型 # ====================================== from .pvtv2 import ( # 基础组件类 Mlp, Attention, Block, OverlapPatchEmbed, PyramidVisionTransformerImpr, DWConv, # PVTv2 模型实例 pvt_v2_b0, pvt_v2_b1, pvt_v2_b2, pvt_v2_b3, pvt_v2_b4, pvt_v2_b5 ) # ====================================== # 2. 导入 resnet.py 中的类和模型 # ====================================== from .resnet import ( # ResNet 基础类 ResNet, # ResNet 模型实例 resnet18, resnet34, resnet50, resnet101, resnet152 ) # ====================================== # 3. 导入 networks.py 中的模型类(关键:按实际类名调整) # ====================================== # 注意:如果 networks.py 中的主模型类是 EMCADNet,保留以下导入; # 如果是其他名称(如 EMCAD),请替换为实际类名(与 networks.py 完全一致) from .networks import EMCADNet # ====================================== # 4. 导入 decoders.py 中的类和函数(基于你提供的完整代码) # ====================================== from .decoders import ( # 工具函数 gcd, _init_weights, act_layer, channel_shuffle, MSCBLayer, # 解码模块类 MSDC, MSCB, EUCB, LGAG, CAB, SAB, EMCAD # decoders.py 中定义的 EMCAD 解码模块 ) # ====================================== # 全局公共接口:定义可通过 from lib import * 导入的内容 # ====================================== __all__ = [ # ------------------------------ # pvtv2.py # ------------------------------ 'Mlp', 'Attention', 'Block', 'OverlapPatchEmbed', 'PyramidVisionTransformerImpr', 'DWConv', 'pvt_v2_b0', 'pvt_v2_b1', 'pvt_v2_b2', 'pvt_v2_b3', 'pvt_v2_b4', 'pvt_v2_b5', # ------------------------------ # resnet.py # ------------------------------ 'ResNet', 'resnet18', 'resnet34', 'resnet50', 'resnet101', 'resnet152', # ------------------------------ # networks.py # ------------------------------ 'EMCADNet', # 与 networks.py 中的类名保持一致 # ------------------------------ # decoders.py # ------------------------------ 'gcd', '_init_weights', 'act_layer', 'channel_shuffle', 'MSCBLayer', 'MSDC', 'MSCB', 'EUCB', 'LGAG', 'CAB', 'SAB', 'EMCAD' ]