当我运行这段代码时,我得到一个导入错误
import numpy as np
import os
import six.moves.urllib as urllib
import sys
import tarfile
import tensorflow as tf
import zipfile
from collections import defaultdict
from io import StringIO
from matplotlib import pyplot as plt
from PIL import Image
import cv2
cap = cv2.VideoCapture("ipr.mp4")
from utils import label_map_util
from utils import visualization_utils as vis_util
MODEL_NAME = 'ssd_mobilenet_v1_coco_11_06_2017'
MODEL_FILE = MODEL_NAME + '.tar.gz'
DOWNLOAD_BASE = 'http://download.tensorflow.org/models/object_detection/'
PATH_TO_CKPT = MODEL_NAME + '/frozen_inference_graph.pb'
PATH_TO_LABELS = os.path.join('data', 'mscoco_label_map.pbtxt')
NUM_CLASSES = 90
opener = urllib.request.URLopener()
opener.retrieve(DOWNLOAD_BASE + MODEL_FILE, MODEL_FILE)
tar_file = tarfile.open(MODEL_FILE)
for file in tar_file.getmembers():
file_name = os.path.basename(file.name)
if 'frozen_inference_graph.pb' in file_name:
tar_file.extract(file, os.getcwd())
detection_graph = tf.Graph()
with detection_graph.as_default():
od_graph_def = tf.GraphDef()
with tf.gfile.GFile(PATH_TO_CKPT, 'rb') as fid:
serialized_graph = fid.read()
od_graph_def.ParseFromString(serialized_graph)
tf.import_graph_def(od_graph_def, name='')
label_map = label_map_util.load_labelmap(PATH_TO_LABELS)
categories = label_map_util.convert_label_map_to_categories(label_map, max_num_classes=NUM_CLASSES, use_display_name=True)
category_index = label_map_util.create_category_index(categories)
def load_image_into_numpy_array(image):
(im_width, im_height) = image.size
return np.array(image.getdata()).reshape(
(im_height, im_width, 3)).astype(np.uint8)
PATH_TO_TEST_IMAGES_DIR = 'test_images'
TEST_IMAGE_PATHS = [ os.path.join(PATH_TO_TEST_IMAGES_DIR, 'image{}.jpg'.format(i)) for i in range(1, 3) ]
IMAGE_SIZE = (12, 8)
with detection_graph.as_default():
with tf.Session(graph=detection_graph) as sess:
while True:
ret, image_np = cap.read()
image_np_expanded = np.expand_dims(image_np, axis=0)
image_tensor = detection_graph.get_tensor_by_name('image_tensor:0')
boxes = detection_graph.get_tensor_by_name('detection_boxes:0')
scores = detection_graph.get_tensor_by_name('detection_scores:0')
classes = detection_graph.get_tensor_by_name('detection_classes:0')
num_detections = detection_graph.get_tensor_by_name('num_detections:0')
(boxes, scores, classes, num_detections) = sess.run(
[boxes, scores, classes, num_detections],
feed_dict={image_tensor: image_np_expanded})
vis_util.visualize_boxes_and_labels_on_image_array(
image_np,
np.squeeze(boxes),
np.squeeze(classes).astype(np.int32),
np.squeeze(scores),
category_index,
use_normalized_coordinates=True,
line_thickness=8)
cv2.imshow('object detection', cv2.resize(image_np, (800,600)))
if cv2.waitKey(25) & 0xFF == ord('q'):
cv2.destroyAllWindows()
break
错误:
警告:打开文件时出错 (/build/opencv/modules/videoio/src/cap_ffmpeg_impl.hpp:834)警告: ipr.mp4(/build/opencv/modules/videoio/src/cap_ffmpeg_impl.hpp:835) 追溯(最近一次通话):文件“ test.py”,第31行,在 从utils导入label_map_util ImportError:无法导入名称'label_map_util'
答案 0 :(得分:2)
CD到object_detection目录
import( os )
os.chdir( 'D:\\projects\\data core\\helmet detection\\models\\research\\object_detection' )
并更改这些行
from utils import label_map_util
from utils import visualization_utils as vis_util
到以下几行
from object_detection.utils import label_map_util
from object_detection.utils import visualization_utils as vis_util
它将起作用。
答案 1 :(得分:0)
这对我有用。但是,为了使其正常工作,我必须执行以下操作:
使用以下命令创建虚拟环境: i)OpenCV 4.0.1 ii)Python 3.6 iii)tensorflow v1.12
分别安装和/或更新各种依赖项: 康达安装scipy pip install-升级sklearn pip install-升级熊猫 pip install --upgrade熊猫数据读取器 pip install-升级matplotlib 点安装-升级枕头 pip install-升级请求 pip install-升级h5py pip install-升级pyyaml pip install-升级psutil 点安装--upgrade tensorflow == 1.12.0 pip安装-升级lxml pip安装opencv-contrib-python
编译所有协议缓冲区定义文件: 我)CD到模型/研究文件夹 ii)protoc object_detection / protos / *。proto --python_out =。
4。导出正确的PYTHONPATH变量路径:
i)导出PYTHONPATH = $ PYTHONPATH:pwd
:pwd
/ slim
ii)回显$ PYTHONPATH
答案 2 :(得分:0)
pip install tensorflow-object-detection-api
答案 3 :(得分:-1)
代码多大了?您正在使用哪个版本的utils?您使用的是最新版本的https://github.com/haaksmash/pyutils吗?如果已安装该版本,则将看到没有名为label_map_util
或visualization_utils
的文件夹或类。