• 图像分类


    from openvino.inference_engine import IECore
    import numpy as np
    import cv2 as cv
    
    ie = IECore()                                                   #推理引擎
    for device in ie.available_devices:                             #可用设备
        print(device)
    
    with open('imagenet_classes.txt') as f:
        labels = [line.strip() for line in f.readlines()]
    
    model_xml = "resnet18.xml"
    model_bin = "resnet18.bin"
    
    net = ie.read_network(model=model_xml, weights= model_bin)     #读取模型
    input_blob = next(iter(net.input_info))                        #输入
    out_blob = next(iter(net.outputs))                             #输出
    
    print("input layout: ",net.input_info[input_blob].layout)           #模型输入格式NCHW
    print("input precision: ",net.input_info[input_blob].precision)     #模型精度F32
    print("input shape: ",net.input_info[input_blob].tensor_desc.dims)  #模型输入shape[1,3,224,224]
    
    print("output layout: ",net.outputs[out_blob].layout)         #模型输出格式NC
    print("output precision: ",net.outputs[out_blob].precision)   #模型精度F32
    print("output shape: ",net.outputs[out_blob].shape)           #模型输出shape[1,1000]
    
    n, c, h, w = net.input_info[input_blob].input_data.shape      #模型输入shape
    print(n, c, h, w)
    
    src = cv.imread("001.jpg")                                    #HWC
    image = cv.resize(src, (w, h))                                #改变大小到输入大小
    image = np.float32(image) / 255.0                             #归一化
    image[:, :, ] -= (np.float32(0.485), np.float32(0.456), np.float32(0.406))
    image[:, :, ] /= (np.float32(0.229), np.float32(0.224), np.float32(0.225))
    image = image.transpose(2, 0, 1)                              #HWC->CHW
    
    exec_net = ie.load_network(network=net, device_name="CPU")    #加载模型
    res = exec_net.infer(inputs={input_blob:[image]})             #推理
    
    res = res[out_blob]                                           #推理结果 (1,1000)
    print(res.shape)
    label_index = np.argmax(res, 1)[0]                            #获取最大概率
    print(label_index, labels[label_index])
    cv.putText(src, labels[label_index], (50, 50), cv.FONT_HERSHEY_SIMPLEX, 1.0, (0, 0, 255), 2, 8)
    cv.imshow("image classification", src)
    cv.waitKey(0)
    
    
    
  • 相关阅读:
    从OkHttp的源码来看 HTTP
    从Retrofit的源码来看 HTTP
    登录授权、TCP/IP、HTTPS
    编码、加密、Hash
    java获取当前系统时间
    mybatis自动生成
    rabbitMQ权限相关命令
    在Spring Boot中使用Spring Security实现权限控制
    学习sharding-jdbc 分库分表扩展框架
    Jenkins的关闭、重启
  • 原文地址:https://www.cnblogs.com/wuyuan2011woaini/p/15926551.html
Copyright © 2020-2023  润新知