美文网首页
计算机视觉实战(十七)OpenCV的DNN模型 (附完整代码)

计算机视觉实战(十七)OpenCV的DNN模型 (附完整代码)

作者: 小小何先生 | 来源:发表于2020-01-15 19:38 被阅读0次

      OpenCV加载深度学习模型:

    # Caffe所需配置文件
    net = cv2.dnn.readNetFromCaffe("bvlc_googlenet.prototxt",
       "bvlc_googlenet.caffemodel")
    

    我们也可以使用Tensorflow或者其他的读取方式:

    # 导入工具包
    import utils_paths
    import numpy as np
    import cv2
    
    # 标签文件处理
    rows = open("synset_words.txt").read().strip().split("\n")
    classes = [r[r.find(" ") + 1:].split(",")[0] for r in rows]
    
    # Caffe所需配置文件
    net = cv2.dnn.readNetFromCaffe("bvlc_googlenet.prototxt",
       "bvlc_googlenet.caffemodel")
    
    # 图像路径
    imagePaths = sorted(list(utils_paths.list_images("images/")))
    
    # 图像数据预处理
    image = cv2.imread(imagePaths[0])
    resized = cv2.resize(image, (224, 224))
    # image scalefactor size mean swapRB 
    blob = cv2.dnn.blobFromImage(resized, 1, (224, 224), (104, 117, 123))
    print("First Blob: {}".format(blob.shape))
    
    # 得到预测结果
    net.setInput(blob)
    preds = net.forward()
    
    # 排序,取分类可能性最大的
    idx = np.argsort(preds[0])[::-1][0]
    text = "Label: {}, {:.2f}%".format(classes[idx],
       preds[0][idx] * 100)
    cv2.putText(image, text, (5, 25),  cv2.FONT_HERSHEY_SIMPLEX,
       0.7, (0, 0, 255), 2)
    
    # 显示
    cv2.imshow("Image", image)
    cv2.waitKey(0)
    
    # Batch数据制作
    images = []
    
    # 方法一样,数据是一个batch
    for p in imagePaths[1:]:
       image = cv2.imread(p)
       image = cv2.resize(image, (224, 224))
       images.append(image)
    
    # blobFromImages函数,注意有s
    blob = cv2.dnn.blobFromImages(images, 1, (224, 224), (104, 117, 123))
    print("Second Blob: {}".format(blob.shape))
    
    # 获取预测结果
    net.setInput(blob)
    preds = net.forward()
    for (i, p) in enumerate(imagePaths[1:]):
       image = cv2.imread(p)
       idx = np.argsort(preds[i])[::-1][0]
       text = "Label: {}, {:.2f}%".format(classes[idx],
          preds[i][idx] * 100)
       cv2.putText(image, text, (5, 25),  cv2.FONT_HERSHEY_SIMPLEX,
          0.7, (0, 0, 255), 2)
       cv2.imshow("Image", image)
       cv2.waitKey(0)
    
    image image

      完整代码,后台回复 计算机视觉实战。还有一些啥目标检测和多目标追踪的代码都在里面。

    我的微信公众号名称:深度学习与先进智能决策
    微信公众号ID:MultiAgent1024
    公众号介绍:主要研究分享深度学习、机器博弈、强化学习等相关内容!期待您的关注,欢迎一起学习交流进步!

    相关文章

      网友评论

          本文标题:计算机视觉实战(十七)OpenCV的DNN模型 (附完整代码)

          本文链接:https://www.haomeiwen.com/subject/lfqxzctx.html