I was checking the feasibility of number of computer vision model that can run on the android devices simultaneously but could not find any resource for it.
I have two computer vision models, one is doing classification of images about 20 classes and another one I want to integrate is the image depth map model. Both of them will work on real time. Thus I want to know will they able to run on Android devices with limited ram of 1 Giga Byte.
My own experience is that this is highly dependent on hardware as well as the neural network architectures themselves and optimization methods performed on them. So there is not exact answer to your question.
However, I can tell you that 10 FPS will be very hard to achieve, specially with 1GB of RAM on an old device I assume. I have a TFLite Yolov5s model, quantized to INT8 which I pass 320x320 images to, running on an old Samsung tablet from 2015 (3GB of RAM), achieving an average inference time of 0.47 seconds. This is only one model.
Related
I've trained a TensorFlow model which takes my RTX2080 several seconds per action (in addition to 20-30 seconds to initialise the model).
I've been looking into turning this into an iOS/Android app running on tensorflow lite, but apart from the technical challenge of converting the model into a tensorflow lite model and everything else,
I am wondering about the feasibility of this running on phone hardware even on a reasonably modern phone with inbuilt GPU would this still likely be too slow for practical purposes?
Can anyone who has built an iOS/Android app with tensorflow lite where the phone is responsible for computation comment on performance and other practical considerations?
The only other option of having requests served by my own server(s) on AWS, for example, would turn into a major expense if the app had significant use.
I have created an image recognition app in swift using TensorFlow lite and did not find any performance issues with it. The prediction took anywhere from 3 - 5 seconds consistently , which I personally think is not that bad.So I would suggest to go ahead with your app using TF Model.Thanks!
I have developed AIR application for Android in Flash CS6.
But the problem is, the application doesn't run smoothly on mobile phone.
I can't find the solution to my problem. Is it because of too many scenes or too many key frames in a scene?
Thank you so much for the explanation.
at first, take a look at this
when you find issues with only phones, it means that device is not enough strong to execute and render your app as fast as you want:
i know following points strongly change your performance in phone devices
using complex vectors, and trying to update them each frame (scale
is most harmful case)
high definition screen resolution of device (in this case you must avoid full-screen if necessary)
using CPU as render target, it must be changed to GPU (not even
direct)
a 24-30 fps would be best because you have more chance to play and
create everything with same speed as runtime fps
memory management and garbage collection
using bitmap objects instead vector graphics, you can keep storing
vectors in your app for advantage of reducing disk size, but its
possible to rasterizing them in runtime and letting CPU breathing
easily
I was wondering what is the maximum framerate that could be achieved on iOS and Android devices with Unity3d. Can 60 fps and 100 fps be reached?
What FPS should I provide:
Android as a platform aims to provide 60fps as a standard. However, keep in mind this is for Applications which come nowhere near the GPU requirements of a game.
If you can't do all of the calculations you require in 16ms (60fps) you should aim to provide 30fps and provide the user a consistent experience. User's will quickly detect variations in frame rate and interpret this as a performance issue with their phone.
Never over-promise and under-deliver.
Modern phones claim to have quad core processors with other incredible hardware profiles. Rarely are you taking advantage of the full capabilities of a phone, the hardware and Android platform is designed to use as minimal battery as possible and cut corners when it can.
Your user's phone is typically idling and the full potential will be activated for a sparing amount of ms to perform work and catch up on operations.
What is the max performance on Android:
You can search for Android benchmark test's using Unity, keep a very open mind for what each phone puts through as there are more than 12,000 hardware configurations for Android.
Your development phone and those for testing should be expected to be significantly better than your user's phones.
Apologies in advance if the question sounds dumb.Here's my problem
I want to make an OCR app for android smartphones.I am wondering if someone can tell me how much RAM and processor will be enough for image processing involved in it?I am trying to extract all the text from a printed A4 page in one go, how much should be the camera resolution for having a clear image of all characters?
In my experience the most important hardware requirement might not be RAM and processor but rather camera auto-focus feature. If mobile device does not have auto-focus feature then in majority of cases you can't get proper scanning results.
Second, mobile device cameras (at time of this writing) are not suitable for A4 document scanning in one pass (unless you have a very large font on the document :). The quality of scanning results will be poor even with top quality mobile devices. Good results can be achieved with documents that are about one third the size of A4 documents with mid and high-level devices.
Disclaimer: I work for a company that has developed own mobile OCR and other mobile vision software that are used across different industries.
Same as with most questions related to hardware requirements:
You'll probably find out by testing with different hardware setups.
As you'll need to test Android apps with various devices anyway, that should not be a big deal.
We can't know the font size and neither can we estimate the complexity of your algorithms. Also I assume that the font(s) which you use has an important influence, depending on the distinctness of their chars rendering.
Plus, if the image is blurred, that'll negatively influence the resources you need.
I want to transplant a 3D program written in OpenGL on windows platform to Android, but I wonder if it can run smoothly on general Android platforms, so i want to estimate how much hardware resource is sufficient for it to run smoothly. It is some kind like the hardware requirements for a software or 3d game that a company will recommend the users. I don't know how can i get a hardware requirements of my program when transplant to Android.
i used gdebugger and it gave me some information but i don't think that is enough for me. Anyone here have some idea or solution? Many thanks in advance!
If your program is simple enough, you could write up some estimates about texture fill rate, which is a pretty basic (and old) metric of rendering performance. Nearly every 3D chip comes with a theoretical fill rate, so you can get the theoretical numbers of both your desktop system and some Android phones.
The texture memory footprint is another thing that you can estimate, especially using gdebugger. Once again, these numbers are known for most chips.
This is a quick way to produce some numbers, obviously without any real life performance guarantees.
The best way would be to test it on an actual device, and get an idea of what hardware works well. You could distribute a beta app and get some feedback too.
Depends on feature set that you use. For example, if you use FBO, the device will have to support framebuffer extension. If you use MSAA, smooth line, the device will have support corresponding extensions.
After listing down your requirements, you can use glGet to check for the device suppport
http://www.opengl.org/sdk/docs/man/xhtml/glGet.xml