在训练以lsknet为backnone时报以下错误:

Traceback (most recent call last): File "/root/.conda/envs/openmmlab/lib/python3.8/urllib/request.py", line 1354, in do_open h.request(req.get_method(), req.selector, req.data, headers, File "/root/.conda/envs/openmmlab/lib/python3.8/http/client.py", line 1256, in request self._send_request(method, url, body, headers, encode_chunked) File "/root/.conda/envs/openmmlab/lib/python3.8/http/client.py", line 1302, in _send_request self.endheaders(body, encode_chunked=encode_chunked) File "/root/.conda/envs/openmmlab/lib/python3.8/http/client.py", line 1251, in endheaders self._send_output(message_body, encode_chunked=encode_chunked) File "/root/.conda/envs/openmmlab/lib/python3.8/http/client.py", line 1011, in _send_output self.send(msg) File "/root/.conda/envs/openmmlab/lib/python3.8/http/client.py", line 951, in send self.connect() File "/root/.conda/envs/openmmlab/lib/python3.8/http/client.py", line 1425, in connect self.sock = self._context.wrap_socket(self.sock, File "/root/.conda/envs/openmmlab/lib/python3.8/ssl.py", line 500, in wrap_socket return self.sslsocket_class._create( File "/root/.conda/envs/openmmlab/lib/python3.8/ssl.py", line 1073, in _create self.do_handshake() File "/root/.conda/envs/openmmlab/lib/python3.8/ssl.py", line 1342, in do_handshake self._sslobj.do_handshake() ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: certificate has expired (_ssl.c:1149) During handling of the above exception, another exception occurred: Traceback (most recent call last): File "tools/train.py", line 125, in <module> main() File "tools/train.py", line 121, in main runner.train() File "/root/.conda/envs/openmmlab/lib/python3.8/site-packages/mmengine/runner/runner.py", line 1748, in train self._init_model_weights() File "/root/.conda/envs/openmmlab/lib/python3.8/site-packages/mmengine/runner/runner.py", line 923, in _init_model_weights model.init_weights() File "/root/.conda/envs/openmmlab/lib/python3.8/site-packages/mmengine/model/base_module.py", line 136, in init_weights m.init_weights() File "/root/OrientedFormer-main/projects/LSKNet/lsknet/lsknet.py", line 324, in init_weights super(LSKNet, self).init_weights() File "/root/.conda/envs/openmmlab/lib/python3.8/site-packages/mmengine/model/base_module.py", line 144, in init_weights initialize(self, pretrained_cfg) File "/root/.conda/envs/openmmlab/lib/python3.8/site-packages/mmengine/model/weight_init.py", line 610, in initialize _initialize(module, cp_cfg) File "/root/.conda/envs/openmmlab/lib/python3.8/site-packages/mmengine/model/weight_init.py", line 518, in _initialize func(module) File "/root/.conda/envs/openmmlab/lib/python3.8/site-packages/mmengine/model/weight_init.py", line 490, in __call__ load_checkpoint( File "/root/.conda/envs/openmmlab/lib/python3.8/site-packages/mmengine/runner/checkpoint.py", line 636, in load_checkpoint checkpoint = _load_checkpoint(filename, map_location, logger) File "/root/.conda/envs/openmmlab/lib/python3.8/site-packages/mmengine/runner/checkpoint.py", line 548, in _load_checkpoint return CheckpointLoader.load_checkpoint(filename, map_location, logger) File "/root/.conda/envs/openmmlab/lib/python3.8/site-packages/mmengine/runner/checkpoint.py", line 330, in load_checkpoint return checkpoint_loader(filename, map_location) File "/root/.conda/envs/openmmlab/lib/python3.8/site-packages/mmengine/runner/checkpoint.py", line 371, in load_from_http checkpoint = load_url( File "/root/.conda/envs/openmmlab/lib/python3.8/site-packages/torch/hub.py", line 524, in load_state_dict_from_url download_url_to_file(url, cached_file, hash_prefix, progress=progress) File "/root/.conda/envs/openmmlab/lib/python3.8/site-packages/torch/hub.py", line 394, in download_url_to_file u = urlopen(req) File "/root/.conda/envs/openmmlab/lib/python3.8/urllib/request.py", line 222, in urlopen return opener.open(url, data, timeout) File "/root/.conda/envs/openmmlab/lib/python3.8/urllib/request.py", line 525, in open response = self._open(req, data) File "/root/.conda/envs/openmmlab/lib/python3.8/urllib/request.py", line 542, in _open result = self._call_chain(self.handle_open, protocol, protocol + File "/root/.conda/envs/openmmlab/lib/python3.8/urllib/request.py", line 502, in _call_chain result = func(*args) File "/root/.conda/envs/openmmlab/lib/python3.8/urllib/request.py", line 1397, in https_open return self.do_open(http.client.HTTPSConnection, req, File "/root/.conda/envs/openmmlab/lib/python3.8/urllib/request.py", line 1357, in do_open raise URLError(err) urllib.error.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: certificate has expired (_ssl.c:1149)>

解决方法:

1. 更新证书包

如果你系统上的证书已经过期,尝试更新证书包:

对于 Ubuntu 或 Debian 系统:

运行以下命令更新证书:

sudo apt update

sudo apt install --reinstall ca-certificates
对于 CentOS 或 RHEL 系统:
sudo yum reinstall ca-certificates

2. 使用 certifi 强制使用最新证书

你可以通过 Python 的 certifi 库来指定一个有效的证书文件路径,确保 urllib 在请求时使用的是最新的证书:

首先,安装 certifi 库:

pip install certifi

然后,修改你的代码,使 urllib 使用 certifi 提供的证书:

import ssl
import urllib.request

ssl._create_default_https_context = ssl._create_unverified_context
urllib.request.urlopen('https://example.com')

我插入代码的地方在train.py 开头加入

import ssl
ssl._create_default_https_context = ssl._create_unverified_context

重新训练 成功了

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐