For mobile, is tflite always best? - mobile

As TensorFlow Lite is a set of tools that enables on-device machine learning by helping developers run their models on mobile (https://www.tensorflow.org/lite/guide), is tflite the optimal file type for mobile?
If there is a decent model (pb file or whatever file type) then always need to be converted to tflite file for mobile?

Related

DB solution for hybrid-mobile-app

I am going to build hybrid-mobile-app with Ionic, Angular and Cordova and port it to Android and iOS. One of the main features of the app will be offline storage/capability to store and view app content offline.
Content that I want to save in local DB may be even over 50MB, so local storage is not an option.
So far I found sqlite and indexdb. But I wonder if any of you have previous experience with similar problem to solve and could suggest some other options? Or maybe which option (sqlite or indexdb) will be better solution for my app?
You should also know that localStorage isn't a viable option for permanent device storage if you're going to build for iOS. The OS will wipe out localStorage data when device memory is low. IndexDB may be volatile too because it's stored within the context of the webview.
I develop an Ionic app which has some data stored (not a large amount at the moment) in SQLite. I chose localForage with SQLite driver. It works well for what I need because it stores the data to a database file in the filesystem which is safe from OS deletion. What's nice is that the functions are similar to what you get with localStorage; the biggest difference being that the functions use promises.
This is the stack of components that I used in order to implement what I have now:
Bower components
angular-localForage
localforage
localForage-cordovaSQLiteDriver
You will also need the Cordova-sqlite-storage plugin.
You may also have a look at LokiJS and PouchDB (blog articles from "GoneHybrid", implementing those 2 libs).
I would personally go for LokiJS (http://lokijs.org/) and its JSON file, even if both have adapters for WebSQL, SQLite, IndexedDB.
I was part of a team that built a successful Cordova / Sencha Touch (the UI framework doesn't really matter here) / SQLite app for iOS and Android. We had over 100Mb of data to store in the database, had to encrypt it and transfer it from a server into the app.
SQLite performed well, we also used some custom functions that we wrote to move some of the data crunching we needed into the database engine and out of Javascript.
Another member of the team wrote a short blog article about some of our experiences with this stack.
Overall given my experience, I'd say SQLite is a sound choice, but I don't have experience with IndexDB.

How can I store more than 5MB data on a Phonegap HTML5 offline application?

I am working on an HTML5 application. This app must store data (lots of JSON & Base64 pictures) until the user synchronises it with our server. I must keep data stored on the device for a month after a sync.
I will use Phonegap for building the app. I know there is a limit of 5MB, so I'll certainly have to store my data in a different way. What are the best solutions? What would you recommend me?
Edit:
I forgot to say, but I will have physically all the devices used by my company for installing the application, so maybe there is a way to overpass the restriction by tricking the Android pad?
That stands for localStorage and the built in SQLite database. I would suggest you taking a look at the File API, which would allow you to store files in the device.
There's a neat SQLite plugin here I'm using in an iOS/Android Phonegap application. I've tested it and found it's methods to work well on both platforms.
As for syncing JSON data and Base64 images, I'm doing this same thing with a SQLite DB managed through this plugin. I only have a couple hundred smaller images I'm working with but I've found the SQLite DB to be pretty reliable for this purpose.
Thanks to the authors of that plugin.

Silverlight streaming video

I'm creating a web platform destined to the customers of a certain company. The company requires that the platform allows the streaming of videos.
It's important to note that the company will be the one to add the videos to the platform, dinamically, from a software built by me for that purpose, and each video will be referenced on a sql server table.
I've never done streaming before so I'm asking 2 things:
The first is about some guidance in silverlight streaming(tutorials, articles, examples, etc)
The other is my main concern. I have a few video samples from the company, and all of them are over 200 MBytes and can go up to 2GB, so I know I have to re-encode them to become smaller. But, how do I do this... I mean, do I have to re-enconde them, manually, one at a time, or is there a way to do it automatically as a new video is added?
I have Expression Studio Encoder 4 pro, but never really used it, and as far as I can tell, I have to manually add each video to do the enconding. Again... is there a way to do this dinamically??
Thanks
Not all video formats and encodings are supported by Silverlight. See this page for a list of supported formats. You will probably need to recompress your videos not only to reduce their size but also to normalize the format.
The recompression could be done in a windows service running in the background, the more appropriated libraries to be used will probably depend on the target format you will use. For wmv files I would recommend using Windows Media Format SDK,the (currently deprecated) Windows Media Encoder SDK or its succesor Expression Studio Encoder SDK. For using H264 as target I would recommend using ffmepg.
You should decide on a delivery protocol depending on the number of users you can forsee for your website. HTTP might not be the best choice, since there are other protocols like RTTP, usually more suitable for video streaming.

Video capture and recording from a web page

I am trying to build a web application that can capture audio and video from a web cam and upload it to our server. The solution should work with both Windows and Mac. Supporting mobile devices would be a plus, but is not required. My boss would prefer if the platform/framework was from Microsoft.
My initial impulse was to start looking into SilverLight... Interestingly, there were plenty of demos showing how to capture video and display it to the user, followed by many comments suggesting that for the application to be useful we need some way to save/upload the video, followed by the original poster saying that of COURSE it's possible and easy and that he is working on an updated demo that does just that, followed by silence. As far as I can tell SilverLight will not record video.
I already have a component that can record video in a winforms application using DirectShow, but the goal is to build something that is cross-platform so that our program will work for Mac users as well as Windows users. A desktop application is not out of the question, but we would much prefer to stick to a web page.
I am aware that Flash can record video from within a browser, but the higher ups would prefer to avoid flash. Is there any other way to record video captured from a user's webcam from within a web browser?
To build a cross-platform solution you shall consider either one of :
VLCj
Xuggler
JMF
I have been working lately with VLCj.
I am aware that Flash can record video from within a browser, but the higher ups would prefer to avoid flash. Is there any other way to record video captured from a user's webcam from within a web browser?
Unfortunately on the desktop there is no other production ready way to record video in a web page except a Flash client linked to a media server like Red5 or Wowza. The Flash client captures and encodes the video and audio and the media server stores the encoded data in .flv or .f4v/.mp4 files.
On mobile you could use HTML Media Capture which, for recording video, is widely supported on all mobile browsers. The downside is that you'd end up with .mov files from iOS and .mp4 and .3gp files from Android devices. The .mov and .3gp files need to be transcoded before they can be used on other platforms.
Quick commercial solutions that implement the above include HDFVR (downloadable) and Pipe (cloud video recording).

Local data sources for GIS Map plugin?

I am developing an ASP.NET intranet application that needs to have an interactive map interface.
There are some pretty neat Silverlight mapping plugins that I think could work well, specifically:
ArcGIS Silverlight API: http://resources.esri.com/arcgisserver/apis/silverlight/
DeepEarth mapping framework: http://www.codeplex.com/deepearth
There are no doubt many more plugins out there that will allow easy interaction between ASP.NET and the mapping interface (please suggest some if I've missed the major players).
My major concern however is using these tools with local data sources. What is the best option here? All I need is some basic satellite imagery of moderate resolution and some overlays of cities and country borders. Can I download a dataset of these images? I dont really care if they are up to date or not, so long as the photos were taken in the last 20 years.
I want to be able to use local data sources because external internet connections could be very slow due to the nature of the organisation's work, Intranet communication will always be much faster.
To summarise:
1.) where can I find a dataset of moderate quality global satellite imagery?
2.) Which web based mapping plugin will allow me to plug into such a data source?
If I can get something like the DeepEarth demo (http://www.codeplex.com/deepearth) but grabbing the data from internal company servers I would be very happy.
You can check out the free geodata listing at:
- http://www.freegis.org/database/?cat=1
Or have a look at:
http://downloads.cloudmade.com/
where cloudmade provides downloadable openstreetmap data converted to shape files.

Resources