Giter Site home page Giter Site logo

Comments (19)

larrylart avatar larrylart commented on May 24, 2024

Tensor flow / lite seems to be go through lots of changes. I had similar issue, where by I did a checkout literally two days latter and I could not get it to compile again.
Try to checkout the version of 25th of april, that worked for me.

from codrive.

larrylart avatar larrylart commented on May 24, 2024

try commit 7051274e6ba1da5eb6c237d981c589c37b382047

from codrive.

wb666greene avatar wb666greene commented on May 24, 2024

I'm not expert at github, but I'm not finding any way to select a "branch" based on either a date or this hash you just posted.

can you give me a clue?

from codrive.

wb666greene avatar wb666greene commented on May 24, 2024

Is this it?
https://github.com/tensorflow/tensorflow/tree/7051274e6ba1da5eb6c237d981c589c37b382047
Not sure how I got there but if its right i grab it and try again.

thanks.

from codrive.

larrylart avatar larrylart commented on May 24, 2024

try git reset --hard 7051274e6ba1da5eb6c237d981c589c37b382047
in the root of your tensor flow clone

from codrive.

wb666greene avatar wb666greene commented on May 24, 2024

I'm lost in the weeds and stuck.

I could not git clone https://github.com/tensorflow/tensorflow/tree/7051274e6ba1da5eb6c237d981c589c37b382047

But I could "Download Zip" to my desktop, scp it to the Odroid and unzip. Unfortunatley doing the build threw the exact same error :(

Permuting variations of the git reset --hard command in my root dir (where I downloaded the zip file) or in the unzipped directory give the error:
fatal: Not a git repository (or any of the parent directories): .git

In each location I tried:
git reset --hard 7051274e6ba1da5eb6c237d981c589c37b382047

and
git reset --hard tensorflow-7051274e6ba1da5eb6c237d981c589c37b382047

from codrive.

wb666greene avatar wb666greene commented on May 24, 2024

I did get the reset command to apparently work by giving it in the directory of the original git clone directory.

Unfortunately the build again stops with the flatbuffers.h error.
:(

from codrive.

larrylart avatar larrylart commented on May 24, 2024

Ahh sorry!! I forgot that you need to do this before tools/make/build_rpi_lib.sh:
tools/make/download_dependencies.sh

To revert to that specific commit on the xu4 do:
git clone https://github.com/tensorflow/tensorflow.git
cd tensorflow
git reset --hard 7051274e6ba1da5eb6c237d981c589c37b382047

from codrive.

larrylart avatar larrylart commented on May 24, 2024

Ah, on other thing I remember it will fail on benchmark tools so you might want top edit tools/make/Makefile and change all like this:

#all: $(LIB_PATH) $(MINIMAL_BINARY) $(BENCHMARK_BINARY)
all: $(LIB_PATH) $(MINIMAL_BINARY)

from codrive.

wb666greene avatar wb666greene commented on May 24, 2024

BINGO sort of. It compiled for quite some time and finally stopped with:

collect2: error: ld returned 1 exit status
tensorflow/lite/tools/make/Makefile:244: recipe for target '/home/odroid/tensorflow.git/tensorflow/lite/tools/make/gen/rpi_armv7l/bin/benchmark_model' failed
make: *** [/home/odroid/tensorflow.git/tensorflow/lite/tools/make/gen/rpi_armv7l/bin/benchmark_model] Error 1

Presumably its trying to build a library your code uses.

from codrive.

larrylart avatar larrylart commented on May 24, 2024

no, I don't need the benchmark tools only tools/make/gen/rpi_armv7l/lib/libtensorflow-lite.a static library, see comment above.
You need to copy that under the project as lib/libtensorflow-lite_armv7l.a or adjuste the Makefile accordingly - if you don't want to use the lib I already included in this repo

from codrive.

wb666greene avatar wb666greene commented on May 24, 2024

Do you expect that Library to work on Odroid Mate16?
Edit: It did appear to create the tools/make/gen/rpi_armv7l/lib/libtensorflow-lite.a so I guess enough of the build completed.

If so, I'll give it a try, but running make dies horribly:
~/codrive/hw_sampling/google_coral$ make
Package opencv4 was not found in the pkg-config search path.
Perhaps you should add the directory containing `opencv4.pc'
to the PKG_CONFIG_PATH environment variable
No package 'opencv4' found
arm-linux-gnueabihf-g++ -o obj/tpu_obj_detect.o -O3 --std=c++11 -march=armv7-a -mfpu=neon-vfpv4 -funsafe-math-optimizations -ftree-vectorize -fPIC -I. -I/root/kits/tensorflow/ -I./lib/ -I/root/kits/tensorflow//tensorflow/lite/tools/make/downloads/flatbuffers/include/ -c tpu_obj_detect.cpp
cc1plus: error: /root/kits/tensorflow/: Permission denied
cc1plus: error: /root/kits/tensorflow//tensorflow/lite/tools/make/downloads/flatbuffers/include/: Permission denied
Makefile:41: recipe for target 'obj/tpu_obj_detect.o' failed
make: *** [obj/tpu_obj_detect.o] Error 1

Looks like my fairly minimal Odroid Mate16 (and Mate18) systems are missing a lot of what you are using. But they do compile and run the OpenVINO C++ Movidius sample code which is what got me here after reporting the Mate18 vs Mate16 performance decrement.

Thanks for your help.

from codrive.

larrylart avatar larrylart commented on May 24, 2024

True, I will need to improve the building process
You need to edit the Makefile in ~/codrive/hw_sampling/google_coral and change
TF_PATH=/root/kits/tensorflow/
to point to your tensorflow path

from codrive.

wb666greene avatar wb666greene commented on May 24, 2024

I've gotten further, but looks like linking is failing:
odroid@XU16:~/codrive/hw_sampling/google_coral$ make arm-linux-gnueabihf-g++ -o tpu_obj_detect obj/tpu_obj_detect.o obj/tpu_worker.o ./lib/libtensorflow-lite_armv7l.a -lpthread -lm -ldl -L/home/odroid/edgetpu_api/libedgetpu/libedgetpu_arm32.so -L/home/odroid/inference_engine_vpu_arm/opencv/lib/libopencv_videoio.so.4.1.0 -L/home/odroid/inference_engine_vpu_arm/opencv/lib/libopencv_imgcodecs.so.4.1.0 -L/home/odroid/inference_engine_vpu_arm/opencv/lib/libopencv_imgproc.so.4.1.0 -L/home/odroid/inference_engine_vpu_arm/opencv/lib/libopencv_core.so.4.1.0 obj/tpu_obj_detect.o: In function annotateImage(cv::Mat&, std::vector<networkResult, std::allocator >, bool)':
tpu_obj_detect.cpp:(.text+0x12a): undefined reference to cv::putText(cv::_InputOutputArray const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, cv::Point_<int>, int, double, cv::Scalar_<double>, int, int, bool)' tpu_obj_detect.cpp:(.text+0x1d4): undefined reference to cv::rectangle(cv::InputOutputArray const&, cv::Rect, cv::Scalar_ const&, int, int, int)'
`

I'm trying to use the OpenCV 4.1.0 that was installed as part of OpenVINO

Here is my attempt at editing your Makefile (markdown is not helping!):

Makefile.txt

Maybe sharing the results of:
pkg-config opencv --cflags
pkg-config opencv4 --libs

Would give me a clue.

Of course its possible your version of openCV and mine are hopelessly incompatible, in which case I'm done.

from codrive.

larrylart avatar larrylart commented on May 24, 2024

You need to link -lopencv_imgproc -lopencv_highgui -lopencv_core -lopencv_videoio -lopencv_imgcodecs

My pkg-config will be different since I compiled opencv with world (I don't recall openvino include it)

pkg-config opencv4 --libs
-L/usr/local/lib -lopencv_world

pkg-config opencv4 --cflags
-I/usr/local/include/opencv4/opencv -I/usr/local/include/opencv4

from codrive.

larrylart avatar larrylart commented on May 24, 2024

If opencv not compatible, entirely possible as well, I didn't check what openvino includes exactly as I usually insist in compiling my own, here is the build/cmake (not you need to change the paths for opencv_contrib)

First get release of opencv_4.1.0 and opencv_contrib-4.1.0
cd opencv-4.1.0/
mkdir build
cd build

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_GENERATE_PKGCONFIG=YES -D WITH_V4L=ON -D INSTALL_C_EXAMPLES=ON -DBUILD_opencv_world=ON -D INSTALL_PYTHON_EXAMPLES=OFF -D OPENCV_EXTRA_MODULES_PATH=/root/kits/opencv_contrib-4.1.0/modules -D WITH_OPENCL=ON -D WITH_GTK=ON -D WITH_TBB=ON -D WITH_OPENGL=ON -D WITH_OPENMP=ON -D BUILD_EXAMPLES=ON -D ENABLE_NEON=ON -D OPENCV_ENABLE_NONFREE=ON -D WITH_FFMPEG=ON -D WITH_GTK_2_X=ON -D WITH_LIBV4L=ON -D WITH_XINE=ON -D WITH_GSTREAMER=ON -D WITH_GDAL=ON -D WITH_HALIDE=ON -D ENABLE_PRECOMPILED_HEADERS=OFF -D BUILD_PERF_TESTS=OFF -D BUILD_TESTS=OFF -D ENABLE_CXX11=ON -DEXTRA_C_FLAGS="-O3 -march=native -mcpu=cortex-a15.cortex-a7 -mtune=cortex-a15.cortex-a7 -mfpu=neon-vfpv4 -mfloat-abi=hard -fomit-frame-pointer -ffast-math" -DEXTRA_CXX_FLAGS="-O3 -std=c++11 -march=native -mcpu=cortex-a15.cortex-a7 -mtune=cortex-a15.cortex-a7 -mfpu=neon-vfpv4 -mfloat-abi=hard -fomit-frame-pointer -ffast-math" -DWITH_JPEG=ON ..

make -j5
make install

from codrive.

wb666greene avatar wb666greene commented on May 24, 2024

I'm not in any position to build openCV right now, but I think you gave me enough clues to get the Makefile past the openCV linking. It looks like it compiled using your ./lib/libtensorflow-lite_armv7l.a

Thanks!

FYI here is the Makefile that appears to have worked using the Raspbian OpenVINO openCV (l_openvino_toolkit_raspbi_p_2019.1.094.tgz):
Makefile.txt

Code appears to be running:

odroid@XU16:~/codrive/hw_sampling/google_coral$ ./tpu_obj_detect --camera_device=0
open camera: 0
INFO: Initialized TensorFlow Lite runtime.
W0520 22:36:10.166466 21990 package_registry.cc:65] Minimum runtime version required by package (5) is lower than expected (10).
FPS/I: 11.00 / 67.59 (15ms) : time : 1.00 s :: OBJECT(0.42) :83: book :: (315,412,327,465)
FPS/I: 13.00 / 66.36 (15ms) : time : 2.00 s :: OBJECT(0.58) :83: book :: (345,419,355,471)
FPS/I: 13.67 / 66.56 (15ms) : time : 3.00 s :: OBJECT(0.42) :81: refrigerator :: (102,200,264,476)
FPS/I: 17.75 / 65.76 (15ms) : time : 4.00 s :: OBJECT(0.34) :81: refrigerator :: (110,193,314,475)
FPS/I: 20.20 / 70.33 (14ms) : time : 5.00 s :: OBJECT(0.34) :83: book :: (526,153,534,208)
FPS/I: 21.83 / 65.98 (15ms) : time : 6.00 s :: OBJECT(0.42) :81: refrigerator :: (100,194,238,475)
FPS/I: 23.00 / 67.26 (15ms) : time : 7.00 s :: OBJECT(0.42) :81: refrigerator :: (100,194,238,475)
FPS/I: 23.88 / 67.52 (15ms) : time : 8.00 s :: OBJECT(0.42) :83: book :: (345,416,355,471)
FPS/I: 24.56 / 67.75 (15ms) : time : 9.00 s :: OBJECT(0.42) :83: book :: (344,417,354,472)
FPS/I: 25.10 / 67.20 (15ms) : time : 10.00 s :: OBJECT(0.42) :83: book :: (344,416,355,471)
FPS/I: 25.55 / 66.93 (15ms) : time : 11.00 s :: OBJECT(0.42) :83: book :: (318,410,328,466)
FPS/I: 25.92 / 67.37 (15ms) : time : 12.00 s :: OBJECT(0.27) :83: book :: (343,416,355,471)
FPS/I: 26.23 / 67.38 (15ms) : time : 13.00 s :: OBJECT(0.66) :0: person :: (121,139,393,479)
FPS/I: 26.50 / 67.17 (15ms) : time : 14.00 s :: OBJECT(0.73) :0: person :: (154,131,427,477)
FPS/I: 26.73 / 66.53 (15ms) : time : 15.00 s :: OBJECT(0.58) :0: person :: (81,93,267,480)
FPS/I: 26.94 / 66.44 (15ms) : time : 16.00 s :: OBJECT(0.34) :81: refrigerator :: (104,198,266,474)
FPS/I: 27.12 / 68.35 (15ms) : time : 17.00 s :: OBJECT(0.42) :83: book :: (344,416,355,471)
FPS/I: 27.28 / 67.36 (15ms) : time : 18.00 s :: OBJECT(0.34) :81: refrigerator :: (106,194,277,479)
FPS/I: 27.42 / 66.94 (15ms) : time : 19.00 s :: OBJECT(0.42) :81: refrigerator :: (96,194,249,479)
FPS/I: 27.55 / 67.31 (15ms) : time : 20.00 s :: OBJECT(0.42) :83: book :: (345,415,355,471)
FPS/I: 27.67 / 66.52 (15ms) : time : 21.00 s :: OBJECT(0.27) :81: refrigerator :: (104,192,275,477)
FPS/I: 27.77 / 67.82 (15ms) : time : 22.00 s :: OBJECT(0.42) :83: book :: (345,416,355,471)
FPS/I: 27.87 / 67.26 (15ms) : time : 23.00 s :: OBJECT(0.34) :81: refrigerator :: (106,196,277,477)
FPS/I: 27.96 / 67.20 (15ms) : time : 24.00 s :: OBJECT(0.34) :83: book :: (343,415,355,471)
FPS/I: 28.04 / 67.59 (15ms) : time : 25.00 s :: OBJECT(0.34) :81: refrigerator :: (103,204,234,479)
FPS/I: 28.12 / 67.68 (15ms) : time : 26.00 s :: OBJECT(0.42) :83: book :: (344,415,355,471)
FPS/I: 28.19 / 67.76 (15ms) : time : 27.00 s :: OBJECT(0.34) :81: refrigerator :: (104,196,238,477)
FPS/I: 28.25 / 67.11 (15ms) : time : 28.00 s :: OBJECT(0.42) :83: book :: (345,416,355,471)
FPS/I: 28.31 / 66.22 (15ms) : time : 29.00 s :: OBJECT(0.34) :81: refrigerator :: (104,194,278,479)
FPS/I: 28.37 / 67.28 (15ms) : time : 30.00 s :: OBJECT(0.42) :83: book :: (315,411,327,467)
FPS/I: 28.42 / 66.69 (15ms) : time : 31.00 s :: OBJECT(0.34) :81: refrigerator :: (102,196,238,477)
qFPS/I: 28.47 / 69.47 (14ms) : time : 32.00 s :: OBJECT(0.42) :83: book :: (344,417,355,471)
FPS/I: 28.52 / 67.95 (15ms) : time : 33.00 s :: OBJECT(0.42) :83: book :: (344,415,355,471)
FPS/I: 28.56 / 66.25 (15ms) : time : 34.00 s :: OBJECT(0.27) :83: book :: (525,154,534,209)
FPS/I: 28.60 / 66.04 (15ms) : time : 35.00 s :: OBJECT(0.34) :81: refrigerator :: (103,194,280,479)
^C

But I had to stop it with Ctrl-c I'm not sure how it compares to what you report for Ubuntu 18.04:
**odroid xu4 + TPU + Logitech 920 WEBCAM**: 6.1 W - 24.89 Real FPS / 42.90 Inference FPS (23ms) - load average: 0.52

My entire purpose is to get results on Ubuntu 16.04 to compare with your 18.04.

from codrive.

larrylart avatar larrylart commented on May 24, 2024

Actually the average you got, 15ms/67 FPS inference time, is slightly better then what I got 17ms, I see you are using the the TPU direct, not throttled mode, so you reference to that figure. Then again I have the NCS2 hanging off the usb port and that might interfere - I have not tried with a clean slate.
In any case performance looks very good almost on par with Google coral dev board, where they integrated the TPU in SOC - with that you get 12-13ms inference time.
I have to say that the overall performance for ubuntu 18.04 / 14.4 kernel is better then 16, better compatibility with various devices and more stable.
In the case of NCS2, the regresion you see might be due to Intel's reluctance to offer proper ARM support, and by that I mean opensource drivers as the original NCSDK - It might as well be the way they compiled the libmyriad.so that works better against 16 then 18.

from codrive.

wb666greene avatar wb666greene commented on May 24, 2024

@larrylart

Thanks for all your help.
You've answered my question.

Its been a very long time since I had to hack on a Makefile, I'd have given up without your assistance.

Having followed the OpenVINO versions for almost a year now, the evolution of the install scripts makes it clear they are working on 18.04 support, but none is official yet. I'd guess the performance regression is not intentional or malicious on their part

from codrive.

Related Issues (8)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.