We can deploy MobileNet on Smartphone by TensorFlow Lite, Caffe2 or OpenCV, and I think Caffe2 will provide the best performance with higher fps. But why? Is the performance gap between them so large? Thanks.
Which is faster when deploying cnn models by TensorFlow Lite, Caffe2 or OpenCV?
1.1k Views Asked by Jeffrey Hao AtThere are 2 best solutions below
blep
On
You should probably go for TensorFlow Lite. Last I looked, Caffe2 had almost zero smartphone GPU support, while TFLite now supports both iOS and many Android devices (all that have OpenGLES >=3.1). Using the GPU generally makes things several times faster, and you can reduce the inference precision to half-float (FP16) with TFLite for even more speed and not too much of a performance hit.
When you can't use the mobile GPU, you'll probably want to quantize your network to int8, which is easily doable with TensorFlow and TensorFlow Lite, whether during or after training. Caffe2 seems to need QNNPACK for quantization, which is claimed to be as much as 2 times faster. The catch is that it only works with two pre-trained models that they released (https://github.com/pytorch/QNNPACK/issues/12), so you can't convert your own model.
So I can't really think of a reason to use Caffe2 over TFLite.
I'm not sure about OpenCV's DNN module, but I seriously doubt it has mobile GPU support. There's a slight chance it has quantization.
Related Questions in OPENCV
- Creating multiple instances of a class with different initializing values in Flutter
- OpenCV2 on CLion
- How to Draw Chinese Characters on a Picture with OpenCV
- Python cv2 imwrite() - RGB or BGR
- AttributeError: 'Sequential' object has no attribute 'predict_classes'. Did you mean: 'predict_step'?
- Search for an icon on an image OpenCV
- DJI Tello won't follow me
- Python OpenCV and PyGame threading issue
- Need help in Converting Python script (Uses Yolo's pose estimation) to an android app
- Line Segmentation Problem: How to detect lines and draw bounding box of that line on handwritten letters Using CV2
- Configure CmakeLists.txt to avoid manually copying dlls
- How to detect the exact boundary of a Sudoku using OpenCV when there are multiple external boundaries?
- AttributeError: 'Results' object has no attribute 'box'. can anyone explain this?
- How to generate a VPI warpmap for polynomial distortion correction?
- I am trying to make a project of object detection on kaggle notebook using yolo. and i am facing this error. here is my code and my error
Related Questions in TENSORFLOW
- A deterministic GPU implementation of fused batch-norm backprop, when training is disabled, is not currently available
- Keras similarity calculation. Enumerating distance between two tensors, which indicates as lists
- Does tensorflow have a way of calculating input importance for simple neural networks
- How to predict input parameters from target parameter in a machine learning model?
- Windows 10 TensorFlow cannot detect Nvidia GPU
- unable to use ignore_class in SparseCategoricalCrossentropy
- Why is this code not working? I've tried everything and everything seems to be fine, but no
- Why convert jpeg into tfrecords?
- ValueError: The shape of the target variable and the shape of the target value in `variable.assign(value)` must match
- The kernel appears to have died. It will restart automatically. whenever i try to run the plt.imshow() and plt.show() function in jupyter notebook
- Pneumonia detection, using transfer learning
- Cannot install tensorflow ver 2.3.0 (distribution not found)
- AttributeError: module 'keras._tf_keras.keras.layers' has no attribute 'experimental'
- Error while loading .keras model: Layer node index out of bounds
- prediction model with python tensorflow and keras, gives error when predicting
Related Questions in CAFFE
- cv2.dnn issue with using SDD in deepface.analyze(): no attribute 'readNetFromCaffe'
- Fatal Error During CMake Build: 'caffe/blob.hpp' File Not Found - Seeking Assistance
- How to convert a .pth file into a .protox.txt and a .caffemodel files?
- How can I subtract 2 arrays (Eltwise) in Caffe?
- How can I fix the 'blob size is zero' error in Python 2.7 while using pose recognition with OpenCV and Caffe models?
- Why does gradient perturbation to input blob in overrided Solver::Callback::after_step() cause the input blob altered
- How to calculate the gradient with respect to "Input" layer in Caffe?
- Calculate Euclidean distance between two blobs via Caffe
- How to multiply two feature map pixel by pixel in caffe?
- ValueError: cannot reshape array of size 0 into shape (16,3,3,3)
- Compilation error while compiling caffe on ubuntu
- Encounter `cudaGetDeviceProperties_v2` when compiling caffe
- OpenCV Vector Subscript out of range error in java
- nvcc fatal : Unsupported gpu architecture 'compute_80'
- Netron:caffemodel weights Tensor data is empty
Related Questions in TENSORFLOW-LITE
- How to add a class to an existing model, reduce the images or classes and limit the objects it can detect at a time
- Comparing analog signal from Electret mic with samples
- How to run tflite interpreter with custom ops of tensorflow_text ops in java android
- Tensorflow Lite error Unity : NullReferenceException: Object reference not set to an instance of an object
- TensorFlowLite Error : ‘Interpreter.GetOutputTensor(int)’ is inaccessible due to its protection level
- Measuring TensorFlow Lite Model Speed
- RangeError when converting Uint8List to ByteBuffer for image processing in Flutter
- TensorflowLite output tensorsor data extraction
- Tensorflow Lite: ImportError: libusb-1.0.so.0: cannot open shared object file: No such file or directory
- How to Verify TensorFlow Lite Model is Using XNNPACK?
- Why does python produce a more accurate result than kotlin when using tensorflow?
- How to compile a Gemma 7b TFLite model for MediaPipe?
- Internal error: Cannot create interpreter: Didn't find op for builtin opcode 'FULLY_CONNECTED' version '9' with firebase ml kit and tensorflow-lite
- ML Kit object detection using custom model how to get bounding box coordinate?
- Can't convert saved keras model to TFLite
Related Questions in CAFFE2
- Caffe2: How to load and use MNIST tutorial model in C++
- Issue when converting ONNX model to Caffe2
- caffe2 no gpu support error: libprotobuf.so.14 [In Progress]
- cmake undefined reference to `pthread_create' installing Caffe2
- How can I get the size of a leveldb dataset using Python?
- How to use sparselengthssum in caffe2 for categorical data ?
- Why USE_OPENCV is OFF in PyTorch installation?
- Caffe2: make ops fails when installing densepose
- AttributeError: module 'caffe2.python._import_c_extension' has no attribute 'get_cudnn_version'
- ValueError: Don't know how to translate op Unsqueeze when running converted PyTorch Model
- Enabling CAFFE2 while building pytorch from source on Windows command prompt
- I can't see the image when using display.Image in pycharm
- LMBD error on caffe2
- Caffe2 extract fc7 features
- what ImagePairData layers means in Caffe?
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
Each framework introduces their own optimizations, the result may be significantly different for different devices.