python SSL:使用预先训练的detectron2模型时,CERTIFICATE_VERIFY_FAILED

vpfxa7rd  于 2023-02-07  发布在  Python
关注(0)|答案(2)|浏览(159)

我尝试在detectron2中对图像使用预先训练的mask_rcnn_R_50_FPN_3x模型,但得到错误ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1131)
我正在使用Linux的Windows子系统。下面的代码产生错误。

from detectron2.config import get_cfg
from detectron2 import model_zoo
from detectron2.engine import DefaultPredictor

cfg = get_cfg()
cfg.merge_from_file(model_zoo.get_config_file("COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_3x.yaml"))
cfg.MODEL.ROI_HEADS.SCORE_THRESH_TEST = 0.5
cfg.MODEL.WEIGHTS = model_zoo.get_checkpoint_url("COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_3x.yaml")
cfg.MODEL.DEVICE='cpu'

predictor = DefaultPredictor(cfg)

我试过更新certifi软件包。
我试过了

sudo apt install ca-certificates
sudo update-ca-certificates --fresh
export SSL_CERT_DIR=/etc/ssl/certs

基于其中一个答案[https://stackoverflow.com/questions/52805115/certificate-verify-failed-unable-to-get-local-issuer-certificate.](https://stackoverflow.com/questions/52805115/certificate-verify-failed-unable-to-get-local-issuer-certificate.%5C)我尝试下载https://dl.fbaipublicfiles.com的证书(在Google Chrome中,单击挂锁符号-〉"连接安全"-〉"证书有效"-〉"详细信息"-〉"复制到文件",然后在"证书路径"选项卡下对不同的证书执行相同的操作),并将其内容复制到cacert.pem文件中。
更新:
这似乎与urllib.request模块有关(尽管我可能误解了一些事情)。

from urllib import request
request.urlretrieve('https://dl.fbaipublicfiles.com')

(the detectron2调用urlretrive函数)会导致相同的错误,而

import requests
requests.get('https://dl.fbaipublicfiles.com')

工作正常。

toe95027

toe950271#

试着把它放在import语句之后:

import certifi
import ssl

def create_context():
    context = ssl.SSLContext(ssl.PROTOCOL_TLS_CLIENT)
    context.load_verify_locations(certifi.where())
    return context
ssl._create_default_https_context = create_context

这告诉urllib使用certifi的证书。

7dl7o3gd

7dl7o3gd2#

解决方案:

import ssl
ssl._create_default_https_context = ssl._create_unverified_context

相关问题