<jupyter_start><jupyter_text><jupyter_code># restart (or reset) your virtual machine
#!kill -9 -1<jupyter_output><empty_output><jupyter_text>[Tensorflow Object Detection API](https://github.com/tensorflow/models/tree/master/research/object_detection)<jupyter_code>!git clone https://github.com/tensorflow/models.git<jupyter_output>Cloning into 'models'...
remote: Enumerating objects: 18, done.[K
remote: Counting objects: 100% (18/18), done.[K
remote: Compressing objects: 100% (17/17), done.[K
remote: Total 30176 (delta 7), reused 11 (delta 1), pack-reused 30158[K
Receiving objects: 100% (30176/30176), 510.33 MiB | 15.16 MiB/s, done.
Resolving deltas: 100% (18883/18883), done.
Checking out files: 100% (3061/3061), done.<jupyter_text>COCO API installation<jupyter_code>!git clone https://github.com/cocodataset/cocoapi.git
%cd cocoapi/PythonAPI
!make
!cp -r pycocotools /content/models/research/<jupyter_output>Cloning into 'cocoapi'...
remote: Enumerating objects: 959, done.[K
remote: Total 959 (delta 0), reused 0 (delta 0), pack-reused 959[K
Receiving objects: 100% (959/959), 11.69 MiB | 6.35 MiB/s, done.
Resolving deltas: 100% (571/571), done.
/content/cocoapi/PythonAPI
python setup.py build_ext --inplace
running build_ext
cythoning pycocotools/_mask.pyx to pycocotools/_mask.c
/usr/local/lib/python3.6/dist-packages/Cython/Compiler/Main.py:369: FutureWarning: Cython directive 'language_level' not set, using 2 for now (Py2). This will change in a later release! File: /content/cocoapi/PythonAPI/pycocotools/_mask.pyx
  tree = Parsing.p_module(s, pxd, full_module_name)
building 'pycocotools._mask' extension
creating build
creating build/common
creating build/temp.linux-x86_64-3.6
creating build/temp.linux-x86_64-3.6/pycocotools
x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/usr/l[...]<jupyter_text>Protobuf Compilation<jupyter_code>%cd /content/models/research/
!protoc object_detection/protos/*.proto --python_out=.<jupyter_output>/content/models/research<jupyter_text>Add Libraries to PYTHONPATH<jupyter_code>%cd /content/models/research/
%env PYTHONPATH=/env/python:/content/models/research:/content/models/research/slim:/content/models/research/object_detection
%env<jupyter_output>/content/models/research
env: PYTHONPATH=/env/python:/content/models/research:/content/models/research/slim:/content/models/research/object_detection<jupyter_text>Testing the Installation<jupyter_code>!python object_detection/builders/model_builder_test.py
%cd /content/models/research/object_detection<jupyter_output>/content/models/research/object_detection<jupyter_text>[Tensorflow Face Detector](https://github.com/yeephycho/tensorflow-face-detection)<jupyter_code>%cd /content
!git clone https://github.com/yeephycho/tensorflow-face-detection.git
%cd tensorflow-face-detection
!wget https://storage.googleapis.com/download.tensorflow.org/example_images/grace_hopper.jpg
filename = 'grace_hopper.jpg'
#!python inference_usbCam_face.py grace_hopper.jpg
import sys
import time
import numpy as np
import tensorflow as tf
import cv2

from utils import label_map_util
from utils import visualization_utils_color as vis_util

# Path to frozen detection graph. This is the actual model that is used for the object detection.
PATH_TO_CKPT = './model/frozen_inference_graph_face.pb'

# List of the strings that is used to add correct label for each box.
PATH_TO_LABELS = './protos/face_label_map.pbtxt'

NUM_CLASSES = 2

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)
class TensoflowFaceDector(object):
    def __init__(self, PATH_TO_CKPT):
        """Tensorflow detector
        """

        self.detection_graph = tf.Graph()
        with self.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='')


        with self.detection_graph.as_default():
            config = tf.ConfigProto()
            config.gpu_options.allow_growth = True
            self.sess = tf.Session(graph=self.detection_graph, config=config)
            self.windowNotSet = True


    def run(self, image):
        """image: bgr image
        return (boxes, scores, classes, num_detections)
        """

        image_np = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)

        # the array based representation of the image will be used later in order to prepare the
        # result image with boxes and labels on it.
        # Expand dimensions since the model expects images to have shape: [1, None, None, 3]
        image_np_expanded = np.expand_dims(image_np, axis=0)
        image_tensor = self.detection_graph.get_tensor_by_name('image_tensor:0')
        # Each box represents a part of the image where a particular object was detected.
        boxes = self.detection_graph.get_tensor_by_name('detection_boxes:0')
        # Each score represent how level of confidence for each of the objects.
        # Score is shown on the result image, together with the class label.
        scores = self.detection_graph.get_tensor_by_name('detection_scores:0')
        classes = self.detection_graph.get_tensor_by_name('detection_classes:0')
        num_detections = self.detection_graph.get_tensor_by_name('num_detections:0')
        # Actual detection.
        start_time = time.time()
        (boxes, scores, classes, num_detections) = self.sess.run(
            [boxes, scores, classes, num_detections],
            feed_dict={image_tensor: image_np_expanded})
        elapsed_time = time.time() - start_time
        print('inference time cost: {}'.format(elapsed_time))

        return (boxes, scores, classes, num_detections)
# This is needed to display the images.
%matplotlib inline
tDetector = TensoflowFaceDector(PATH_TO_CKPT)

original = cv2.imread(filename)
image = cv2.cvtColor(original, cv2.COLOR_BGR2RGB)

(boxes, scores, classes, num_detections) = tDetector.run(image)

vis_util.visualize_boxes_and_labels_on_image_array(
    image,
    np.squeeze(boxes),
    np.squeeze(classes).astype(np.int32),
    np.squeeze(scores),
    category_index,
    use_normalized_coordinates=True,
    line_thickness=4)

from matplotlib import pyplot as plt
plt.imshow(image)<jupyter_output>inference time cost: 2.3050696849823
{'fraction_non_alphanumeric': 0.1056507363991584, 'fraction_numerical': 0.026149684400360685, 'mean_word_length': 4.454918032786885, 'pattern_counts': {'":': 0, '<': 23, '<?xml version=': 0, '>': 23, 'https://': 6, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 1, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '7', 'dir': 'jupyter-structured-clean-dedup', 'id': '515', 'license': 'Apache-2.0', 'n_tokens_mistral': 2391, 'n_tokens_neox': 2197, 'n_words': 476, 'path': 'object_detection_face_detector.ipynb', 'repo_name': 'lvisdd/object_detection_tutorial', 'size': '6654'}