4
votes

I'm submitting this to Stack Overflow instead of as a Tensorflow issue because, based on the issues submitted to Tensorflow (e.g. here), people are able to get past where I am stuck. The reason I'm submitting in Tensorflow issue format is not because I'm copy-pasting from my own post there, but instead to make my problem clear to you, dear reader. Many thanks in advance for your help.

System information

What is the top-level directory of the model you are using: lstm_object_detection

Have I written custom code (as opposed to using a stock example script provided in TensorFlow): no

OS Platform and Distribution (e.g., Linux Ubuntu 16.04): Ubuntu 18.04

Python version: 3.6.7

Anaconda version: 4.6.7

TensorFlow installed from (source or binary): binary

TensorFlow version (use command below): 1.10.0 (also tried with 1.12)

Bazel version (if compiling from source): N/A

CUDA/cuDNN version: 10.0 (9.2 when using Tensorflow 1.12)

GPU model and memory: GTX 2080 ti, 11gb

Exact command to reproduce: protoc lstm_object_detection/protos/*.proto --python_out=.

Description

I'm trying to compile the proto files in this folder, which is part of lstm_object_detection, ultimately to be used with the Tensorflow Object Detection API. I am able to compile the proto files in the object_detection folder, as per the Object Detection API installation instructions. The Object Detection API tests pass. Sadly though, when I execute the analogous instructions for compiling the lstm_object_detection protos, I get the following error.

object_detection/protos/input_reader.proto: File not found.
protos/input_reader_google.proto: Import "object_detection/protos/input_reader.proto" was not found or had errors.
protos/input_reader_google.proto:8:10: "object_detection.protos.ExternalInputReader" is not defined.

To be abundantly clear, my shell command executed from .../tensorflow/models/research is:

protoc lstm_object_detection/protos/*.proto --python_out=.

And just for kicks I tried:

protoc \
    lstm_object_detection/protos/*.proto \
    --python_out=lstm_object_detection/protos/

I thought maybe lstm_object_detection isn't seeing my object_detection folder, so I added it to my Anaconda path by executing conda develop . in models/research/, and just in case also in models/research/object_detection. I also tried adding it to my PYTHONPATH, even though this shouldn't make a difference since Anaconda doesn't use the PYTHONPATH.

Question: How do I get these protos outside of the object_detection/protos subdirectory to compile?

1
You might have to upgrade your protoc version (check it using "protoc --version"). Make sure your protoc version is greater than 3.2. Also please take a look at this issue and let me know if it helps.Tensorflow Support
Hey there, thanks for following up, and I apologize for the late response. I haven't worked on this in a bit, but this weekend I'll implement your suggestion and get back to you.Vladimir Shteyn
Update: It works now! 🎉 Thanks for your help. Command was ``` protoc \ lstm_object_detection/protos/*.proto \ --python_out=. ``` In the original question, the arguments to protoc were incorrect.Vladimir Shteyn

1 Answers

0
votes

Mentioning the Solution in this (Answer) Section (even though it is present in Comments Section), for the benefit of the Community.

The Correct Command is,

protoc lstm_object_detection/protos/*.proto --python_out=.