Tiny YOLO for iOS implemented using CoreML but also using the new MPS graph API.

Overview

YOLO with Core ML and MPSNNGraph

This is the source code for my blog post YOLO: Core ML versus MPSNNGraph.

YOLO is an object detection network. It can detect multiple objects in an image and puts bounding boxes around these objects. Read my other blog post about YOLO to learn more about how it works.

YOLO in action

Previously, I implemented YOLO in Metal using the Forge library. Since then Apple released Core ML and MPSNNGraph as part of the iOS 11 beta. So I figured, why not try to get YOLO running on these two other technology stacks too?

In this repo you'll find:

  • TinyYOLO-CoreML: A demo app that runs the Tiny YOLO neural network on Core ML.
  • TinyYOLO-NNGraph: The same demo app but this time it uses the lower-level graph API from Metal Performance Shaders.
  • Convert: The scripts needed to convert the original DarkNet YOLO model to Core ML and MPS format.

To run the app, just open the xcodeproj file in Xcode 9 or later, and run it on a device with iOS 11 or better installed.

The reported "elapsed" time is how long it takes the YOLO neural net to process a single image. The FPS is the actual throughput achieved by the app.

NOTE: Running these kinds of neural networks eats up a lot of battery power. To measure the maximum speed of the model, the setUpCamera() method in ViewController.swift configures the camera to run at 240 FPS, if available. In a real app, you'd use at most 30 FPS and possibly limit the number of times per second it runs the neural net to 15 or less (i.e. only process every other frame).

Tip: Also check out this repo for YOLO v3. It works the same as this repo, but uses the full version of YOLO v3!

iOS 12 and VNRecognizedObjectObservation

The code in my blog post and this repo shows how take the MLMultiArray output from TinyYOLO and interpret it in your app. That was the only way to do it with iOS 11, but as of iOS 12 there is an easier solution.

The Vision framework in iOS 12 directly supports YOLO-like models. The big advantage is that these do the bounding box decoding and non-maximum suppression (NMS) inside the Core ML model. All you need to do is pass in the image and Vision will give you the results as one or more VNRecognizedObjectObservation objects. No more messing around with MLMultiArrays.

It's also really easy to train such models using Turi Create. It combines TinyYOLO v2 and the new NonMaximumSuppression model type into a so-called pipeline model.

The good news is that this new Vision API also supports other object detection models!

I added a chapter to my book Core ML Survival Guide that shows exactly how this works. In the book you’ll see how to add this same functionality to MobileNetV2 + SSDLite, so that you get VNRecognizedObjectObservation predictions for that model too. The book has lots of other great tips on using Core ML, so check it out! 😄

If you're not ready to go all-in on iOS 12 yet, then read on...

Converting the models

NOTE: You don't need to convert the models yourself. Everything you need to run the demo apps is included in the Xcode projects already.

If you're interested in how the conversion was done, there are three conversion scripts:

YAD2K

The original network is in Darknet format. I used YAD2K to convert this to Keras. Since coremltools currently requires Keras 1.2.2, the included YAD2K source code is actually a modified version that runs on Keras 1.2.2 instead of 2.0.

First, set up a virtualenv with Python 3:

virtualenv -p /usr/local/bin/python3 yad2kenv
source yad2kenv/bin/activate
pip3 install tensorflow
pip3 install keras==1.2.2
pip3 install h5py
pip3 install pydot-ng
pip3 install pillow
brew install graphviz

Run the yad2k.py script to convert the Darknet model to Keras:

cd Convert/yad2k
python3 yad2k.py -p ../tiny-yolo-voc.cfg ../tiny-yolo-voc.weights model_data/tiny-yolo-voc.h5

To test the model actually works:

python3 test_yolo.py model_data/tiny-yolo-voc.h5 -a model_data/tiny-yolo-voc_anchors.txt -c model_data/pascal_classes.txt 

This places some images with the computed bounding boxes in the yad2k/images/out folder.

coreml.py

The coreml.py script takes the tiny-yolo-voc.h5 model created by YAD2K and converts it to TinyYOLO.mlmodel. Note: this script requires Python 2.7 from /usr/bin/python (i.e. the one that comes with macOS).

To set up the virtual environment:

virtualenv -p /usr/bin/python2.7 coreml
source coreml/bin/activate
pip install tensorflow
pip install keras==1.2.2
pip install h5py
pip install coremltools

Run the coreml.py script to do the conversion (the paths to the model file and the output folder are hardcoded in the script):

python coreml.py

nngraph.py

The nngraph.py script takes the tiny-yolo-voc.h5 model created by YAD2K and converts it to weights files used by MPSNNGraph. Requires Python 3 and Keras 1.2.2.

Comments
  • The conversion doesn't seem to work for me

    The conversion doesn't seem to work for me

    Hi!

    I have a darknet model that is based on tiny-yolo-voc and finds license plates pretty accurately (checked that many times with darknet's detector command).

    Your conversion mechanism works pretty well for your model (just like you write in readme).

    However, when I apply your conversion process to my darknet model, the resulting coreml model doesn't seem to be able to recognise anything.

    Would you be kind enough to help me in any way?

    opened by pawartur 41
  • Compatibility with YOLOV2

    Compatibility with YOLOV2

    Hi there, Thank you very much for you work on this. I am attempting to use my YOLOv2 model on the app in pursuit of a higher accuracy. I am able to successfully convert the YOLO weights into a mlCore model, but when I add the model onto the xcode, there is no recognition happening. I know the model is loaded because the FPS dropped from ~19 while using tiny-yolo to ~3 on my iPhone 8. Is there any other change that needs to be made when working with a yolo model? The model size is about 280mb and I have already made changes to reflect in the number of classes and their labels. Thank you.

    opened by vvkv 12
  • No bounding-box is detected on iphone6

    No bounding-box is detected on iphone6

    Hi, hollance, Thanks a lot for providing this great example. I am trying to reproduce on my iphone. This is my procedure below:

    1. I tested the keras model, it produces the bbox as expected
    2. I converted the keras model to coreML and put the coreML model in the project, when I launch the the app on iphone, there is no bbox is detected, then I printed the size of the predictions for each frame, it is 0. The confidence score is just very low around 10e-15, I guess it is filtered by the threshold.

    I used your coreML model from github directly as well, the same results. Could you please provide some suggestions.

    Thanks

    opened by rainmancao 10
  • Convert yolo failed using your way

    Convert yolo failed using your way

    Hi

    I meet a problem when I convert yolo.weight (not tinyyolo) and hope you can help me.

    Environment Python 3.5.2 + Python 2.7.13

    pip2 list

    coremltools (0.4.0)
    funcsigs (1.0.2)
    h5py (2.7.0)
    Keras (2.0.4)
    mock (2.0.0)
    numpy (1.13.1)
    pbr (3.1.1)
    pip (9.0.1)
    protobuf (3.3.0)
    PyYAML (3.12)
    scipy (0.19.1)
    setuptools (32.1.0)
    six (1.10.0)
    tensorflow (1.0.1)
    Theano (0.9.0)
    wheel (0.29.0)
    

    pip3 list

    h5py (2.7.0)
    Keras (2.0.4)
    numpy (1.13.1)
    olefile (0.44)
    Pillow (4.2.1)
    pip (8.1.2)
    protobuf (3.3.0)
    pydot-ng (1.0.0)
    pyparsing (2.2.0)
    PyYAML (3.12)
    scipy (0.19.1)
    setuptools (25.2.0)
    six (1.10.0)
    tensorflow (1.0.1)
    Theano (0.9.0)
    wheel (0.29.0)
    

    Step 1 Convert yolo.weights to yolo.h5 success. And I've tested the .h5 can work normally.

    Step 2 Convert yolo.h5 to coreml command: python2 coreml_yolo.py output:

    Traceback (most recent call last):
      File "coreml_yolo.py", line 12, in <module>
        coreml_model = coremltools.converters.keras.convert('yad2k/model_data/yolo.h5')
      File "/usr/local/lib/python2.7/site-packages/coremltools/converters/keras/_keras_converter.py", line 477, in convert
        predicted_feature_name = predicted_feature_name)
      File "/usr/local/lib/python2.7/site-packages/coremltools/converters/keras/_keras2_converter.py", line 149, in _convert
        model = _keras.models.load_model(model)
      File "/usr/local/lib/python2.7/site-packages/keras/models.py", line 240, in load_model
        model = model_from_config(model_config, custom_objects=custom_objects)
      File "/usr/local/lib/python2.7/site-packages/keras/models.py", line 304, in model_from_config
        return layer_module.deserialize(config, custom_objects=custom_objects)
      File "/usr/local/lib/python2.7/site-packages/keras/layers/__init__.py", line 54, in deserialize
        printable_module_name='layer')
      File "/usr/local/lib/python2.7/site-packages/keras/utils/generic_utils.py", line 140, in deserialize_keras_object
        list(custom_objects.items())))
      File "/usr/local/lib/python2.7/site-packages/keras/engine/topology.py", line 2416, in from_config
        process_layer(layer_data)
      File "/usr/local/lib/python2.7/site-packages/keras/engine/topology.py", line 2385, in process_layer
        custom_objects=custom_objects)
      File "/usr/local/lib/python2.7/site-packages/keras/layers/__init__.py", line 54, in deserialize
        printable_module_name='layer')
      File "/usr/local/lib/python2.7/site-packages/keras/utils/generic_utils.py", line 140, in deserialize_keras_object
        list(custom_objects.items())))
      File "/usr/local/lib/python2.7/site-packages/keras/layers/core.py", line 706, in from_config
        function = func_load(config['function'], globs=globs)
      File "/usr/local/lib/python2.7/site-packages/keras/utils/generic_utils.py", line 198, in func_load
        code = marshal.loads(code.encode('raw_unicode_escape'))
    ValueError: bad marshal data (unknown type code)
    

    I also tried Keras version 1.2.2, same problem.

    opened by lumenghz 10
  • Adding your own model

    Adding your own model

    Thank you for this! How can we take this a step further and add our own model (still YOLO but trained with custom classes - https://github.com/AlexeyAB/darknet)

    I have managed to convert the trained model to the .mlmodel format.

    Thanks

    opened by vvkv 8
  • Failed to load Keras model .h5

    Failed to load Keras model .h5

    Hi I always getting the issue when trying to convert Keras to CoreML. I tried multiple solutions like switching among Keras 1.2.2 , 2.0.6 and 2.0.8. The Keras model is my own trained model using darknet and yolo-voc.2.0.cfg and It was converted to Keras successfully as the first step of your tutorial.

    File "coreml.py", line 11, in image_scale=1/255.) File "/Users/ln160c/Downloads/YOLO-CoreML-MPSNNGraph-master/Convert/coreml/lib/python2.7/site-packages/coremltools/converters/keras/_keras_converter.py", line 489, in convert predicted_probabilities_output = predicted_probabilities_output) File "/Users/ln160c/Downloads/YOLO-CoreML-MPSNNGraph-master/Convert/coreml/lib/python2.7/site-packages/coremltools/converters/keras/_keras_converter.py", line 158, in _convert model = _keras.models.load_model(model) File "/Users/ln160c/Downloads/YOLO-CoreML-MPSNNGraph-master/Convert/coreml/lib/python2.7/site-packages/keras/models.py", line 142, in load_model model = model_from_config(model_config, custom_objects=custom_objects) File "/Users/ln160c/Downloads/YOLO-CoreML-MPSNNGraph-master/Convert/coreml/lib/python2.7/site-packages/keras/models.py", line 193, in model_from_config return layer_from_config(config, custom_objects=custom_objects) File "/Users/ln160c/Downloads/YOLO-CoreML-MPSNNGraph-master/Convert/coreml/lib/python2.7/site-packages/keras/utils/layer_utils.py", line 40, in layer_from_config custom_objects=custom_objects) File "/Users/ln160c/Downloads/YOLO-CoreML-MPSNNGraph-master/Convert/coreml/lib/python2.7/site-packages/keras/engine/topology.py", line 2582, in from_config process_layer(layer_data) File "/Users/ln160c/Downloads/YOLO-CoreML-MPSNNGraph-master/Convert/coreml/lib/python2.7/site-packages/keras/engine/topology.py", line 2560, in process_layer custom_objects=custom_objects) File "/Users/ln160c/Downloads/YOLO-CoreML-MPSNNGraph-master/Convert/coreml/lib/python2.7/site-packages/keras/utils/layer_utils.py", line 40, in layer_from_config custom_objects=custom_objects) File "/Users/ln160c/Downloads/YOLO-CoreML-MPSNNGraph-master/Convert/coreml/lib/python2.7/site-packages/keras/layers/core.py", line 682, in from_config function = func_load(config['function'], globs=globs) File "/Users/ln160c/Downloads/YOLO-CoreML-MPSNNGraph-master/Convert/coreml/lib/python2.7/site-packages/keras/utils/generic_utils.py", line 183, in func_load code = marshal.loads(code.encode('raw_unicode_escape')) ValueError: bad marshal data (unknown type code)

    opened by oishi89 8
  • I would like to improve detection performance

    I would like to improve detection performance

    Hi guys,

    I use Yolo for localization object on image. But when a person is on the side Yolo don't detect as a person.. No detection.. how to perform that ?

    The version of Yolo use is V1 ? How to use the new version fo Yolo (V3) ?

    Thank you for your answer.

    opened by JGProg 6
  • Too many weights?

    Too many weights?

    when converting my weights file to h5, I get the following:

    Read 15867885 of 50676062.0 from Darknet weights.
    Traceback (most recent call last):
      File "yad2k.py", line 271, in <module>
        _main(parser.parse_args())
      File "yad2k.py", line 263, in _main
        print('Warning: {} unused weights'.format(len(remaining_weights)))
    TypeError: object of type 'float' has no len()
    

    When using the downloaded weights-file it works as all the weights are read:

    Saved Keras model to model_data/tiny-yolo-voc.h5
    Read 15867885 of 15867885.0 from Darknet weights.
    Saved model plot to model_data/tiny-yolo-voc.png
    

    What am I doing wrong?

    opened by haemi 5
  • throws error -  'float' has no len()

    throws error - 'float' has no len()

    Error Message: Traceback (most recent call last): File "yad2k.py", line 271, in _main(parser.parse_args()) File "yad2k.py", line 263, in _main print('Warning: {} unused weights'.format(len(remaining_weights))) TypeError: object of type 'float' has no len()

    Possible correction/suggestion: In line 263 replace,

    print('Warning: {} unused weights'.format(len(remaining_weights)))

    with print('Warning: {} unused weights'.format(remaining_weights))

    opened by RRathna 5
  • Lower input sizes issues

    Lower input sizes issues

      public static let inputWidth = 416
      public static let inputHeight = 416
    

    I tried to set smaller values

      public static let inputWidth = 256
      public static let inputHeight = 256
    

    but the rects aren't drawn correctly

    opened by anonym24 5
  • Route and Reorg layers with MPSNNGraph

    Route and Reorg layers with MPSNNGraph

    Hi, Thanks for the great writeup and tutorial. I was trying to implement full V2 version of YOLO with 30 layers . The previous way, by using MPSTemporaryImages, we would use the offset in source and destinationFeatureOffset parameters for the reorg and route layers(concatenation). But in the MPSNNGraph, with each layer being a MPSCNNConvolutionNode or MPSCNNPoolingMaxNode , there is no way to specify these params for these nodes. So would the solution be to add MPSTemporaryImages inbetween these layers whenever needed to create the same effect as the route and reorg layers?

    opened by CorgiSpectre 5
  • Get multiple outputs from MPSNNGraph

    Get multiple outputs from MPSNNGraph

    Hello!, Is there a way to get multiple MPSNNImageNode from a MPSNNGraph?

    We can use this function to specify multiple result images:

    let graph = MPSNNGraph(device: commandQueue.device, resultImages: [...], resultsAreNeeded: &returnImages)
    

    However, to run the graph the function:

    graph.executeAsync(withSourceImages: [inputImage]) { (outputImage, error) in ...
    

    Only has one MPSImage output.

    And I can only get the first MPSNNImageNode from the resultImages array in the graph.executeAsync function.

    Is there a way to get all the MPSNNImageNode from the resultImages array?

    opened by vincent1bt 1
  • assert(features[0].count == 255 * 13 * 13) crash

    assert(features[0].count == 255 * 13 * 13) crash

    Hi @hollance, thank you for this wonderful demo.

    I tried to add the implementation you did for YOLO to my own model, and the line below crashed in the YOLO.swift file.

    assert(features[0].count == 255 * 13 * 13)

    If I comment out the assert, I can see the bounding box in the app, but are not placed correctly.

    Please what do I need to look into that could cause the assert method to fail, and also why the bounding box are not correctly placed on the object I'm detecting.

    Thank you.

    opened by moderateepheezy 1
  • Error converting from h5 to Core ML

    Error converting from h5 to Core ML

    Error: ValueError: Invalid layer: Functional

    (coreml) (base) MacBook-Pro-78:Convert michaelt$ python coreml.py WARNING:root:TensorFlow version 1.15.0 detected. Last version known to be fully compatible is 1.5.0 . Traceback (most recent call last): File "coreml.py", line 11, in image_scale=1/255.) File "/Users/michaelt/Downloads/YOLO-CoreML-MPSNNGraph-master/Convert/coreml/lib/python2.7/site-packages/coremltools/converters/keras/_keras_converter.py", line 752, in convert custom_conversion_functions=custom_conversion_functions) File "/Users/michaelt/Downloads/YOLO-CoreML-MPSNNGraph-master/Convert/coreml/lib/python2.7/site-packages/coremltools/converters/keras/_keras_converter.py", line 532, in convertToSpec custom_objects=custom_objects) File "/Users/michaelt/Downloads/YOLO-CoreML-MPSNNGraph-master/Convert/coreml/lib/python2.7/site-packages/coremltools/converters/keras/_keras_converter.py", line 168, in _convert model = _keras.models.load_model(model, custom_objects = custom_objects) File "/Users/michaelt/Downloads/YOLO-CoreML-MPSNNGraph-master/Convert/coreml/lib/python2.7/site-packages/keras/models.py", line 142, in load_model model = model_from_config(model_config, custom_objects=custom_objects) File "/Users/michaelt/Downloads/YOLO-CoreML-MPSNNGraph-master/Convert/coreml/lib/python2.7/site-packages/keras/models.py", line 193, in model_from_config return layer_from_config(config, custom_objects=custom_objects) File "/Users/michaelt/Downloads/YOLO-CoreML-MPSNNGraph-master/Convert/coreml/lib/python2.7/site-packages/keras/utils/layer_utils.py", line 35, in layer_from_config instantiate=False) File "/Users/michaelt/Downloads/YOLO-CoreML-MPSNNGraph-master/Convert/coreml/lib/python2.7/site-packages/keras/utils/generic_utils.py", line 125, in get_from_module str(identifier)) ValueError: Invalid layer: Functional

    opened by m1chaelt1 1
  • Error trying to convert model to CoreML

    Error trying to convert model to CoreML

    Hi, first of all, thanks for you amazing.

    I'm facing an error trying to convert tiny-yolo to CoreML suing the procedures explained in the repo. I manage to get the .h5 representation but when I try to export it to CoreML I get this error:

    Traceback (most recent call last):
      File "coreml.py", line 17, in <module>
        coreml_model.input_description['image'] = 'Input image'
      File "/home/rsanchez/.local/share/virtualenvs/Convert-r3iBw4lK/lib/python2.7/site-packages/coremltools/models/model.py", line 79, in __setitem__
        raise AttributeError("No feature with name %s." % key)
    AttributeError: No feature with name image.
    

    Could it be due to package versions? I have a virtual Python 3 environment for the Darknet -> Keras transformation and another Python 2.7 environment for the Keras -> CoreML transformation. The only pinned version is Keras but I suppose tensorflow has to be 1.x version. Actually, my packages versions are:

    • Tensorflow 1.15.0
    • Keras 1.2.2
    • coremltools 4.0
    • Python 2.7
    opened by raulsf6 4
  • __init__() got an unexpected keyword argument 'dtype'

    __init__() got an unexpected keyword argument 'dtype'

    what should I do now? I am getting this error, I have resolved the earlier errors by degrading the python from 3.8.1 to 3.7.6, and using keras version 2.0.1. This seems like dead end to me.

    File "person.py", line 13, in model = load_model('E:/python files/body measurements proj/Background-Removal-master/Background-Removal-master/main_model_2.hdf5') File "C:\Users\user\AppData\Roaming\Python\Python37\site-packages\keras\models.py", line 140, in load_model model = model_from_config(model_config, custom_objects=custom_objects) File "C:\Users\user\AppData\Roaming\Python\Python37\site-packages\keras\models.py", line 190, in model_from_config return layer_from_config(config, custom_objects=custom_objects) File "C:\Users\user\AppData\Roaming\Python\Python37\site-packages\keras\utils\layer_utils.py", line 38, in layer_from_config return layer_class.from_config(config['config'], custom_objects=custom_objects) File "C:\Users\user\AppData\Roaming\Python\Python37\site-packages\keras\engine\topology.py", line 2575, in from_config process_layer(layer_data) File "C:\Users\user\AppData\Roaming\Python\Python37\site-packages\keras\engine\topology.py", line 2553, in process_layer custom_objects=custom_objects) File "C:\Users\user\AppData\Roaming\Python\Python37\site-packages\keras\utils\layer_utils.py", line 40, in layer_from_config return layer_class.from_config(config['config']) File "C:\Users\user\AppData\Roaming\Python\Python37\site-packages\keras\engine\topology.py", line 1016, in from_config return cls(**config) TypeError: init() got an unexpected keyword argument 'dtype'

    opened by shantanu848 1
Owner
Matthijs Hollemans
Matthijs Hollemans
WhatPet - A basic app that classifies images of dogs, cats and rabbits using CoreML

WhatPet ✓ A basic app that classifies images of dogs, cats and rabbits using Cor

Micaella Morales 0 Jan 6, 2022
An example of CoreML using a pre-trained VGG16 model

CoreMLExample In this example we use AVFoundation to continuously get image data from the back camera, and try to detect the dominant objects present

Aleph Retamal 34 Apr 22, 2022
A Swift library for creating and exporting CoreML Models in Swift

SwiftCoreMLTools A Swift Library for creating CoreML models in Swift. Work in progress This library expose a (function builder based) DSL as well as a

Jacopo Mangiavacchi 140 Dec 5, 2022
CoreMLSample - CoreML Example for in app model and download model

CoreMLSample Sample for CoreML This project is CoreML Example for in app model a

Kim Seonghun 2 Aug 31, 2022
A powerful SwiftUI Architecture that merges Redux to the functional world of Swift. While bringing powerful workflows to streamline CoreML/Metal/IPFS usage in the Apple ecosystem.

GraniteUI - v0.0 - WIP A powerful SwiftUI Architecture that merges Redux event handling and state management with functional programming. While bringi

Kala 2 Dec 22, 2022
Flutter Piano Audio Detection implemented with Tensorflow Lite Model (Google Magenta)

FlutterPianoAudioDetection Plugin Flutter Piano Audio Detection implemented with Tensorflow Lite Model (Google Magenta) Android Implementation iOS/iPa

WonyJeong 27 Dec 29, 2022
BrainCore is a simple but fast neural network framework written in Swift.

BrainCore is a simple but fast neural network framework written in Swift. It uses Metal which makes it screamin' fast. If you want to see it

Alejandro Isaza 377 Jun 29, 2022
A simple Swift package which acts as an OpenAI client for the GPT-3 API.

SwiftyGPT3 A simple Swift package which acts as an OpenAI client for GPT-3 brought to you by the Airgift Crew. Supports GPT-3 Codex! Requirements iOS

Airgift 23 Dec 25, 2022
DL4S provides a high-level API for many accelerated operations common in neural networks and deep learning.

DL4S provides a high-level API for many accelerated operations common in neural networks and deep learning. It furthermore has automatic differentiati

DL4S Team 2 Dec 5, 2021
TensorFlow C API Class Wrapper in Server Side Swift.

Perfect TensorFlow 简体中文 This project is an experimental wrapper of TensorFlow C API which enables Machine Learning in Server Side Swift. This package

PerfectlySoft Inc. 169 Dec 11, 2022
Realtime yoga pose detection and classification plugin for Flutter using MLKit

ML Kit Pose Detection Plugin Flutter plugin for realtime pose detection using MLKit's Blazepose. License Copyright (c) 2021 Souvik Biswas, Bharat Bira

Souvik Biswas 8 May 5, 2022
Sample code for Core ML using ResNet50 provided by Apple and a custom model generated by coremltools.

CoreML-samples This is the sample code for Core ML using ResNet50 provided by Apple. ResNet50 can categorize the input image to 1000 pre-trained categ

Yuta Akizuki 39 Nov 11, 2022
Joint Face Detection and Alignment using Multi-task Cascaded Convolutional Neural Networks

mtcnn-caffe Joint Face Detection and Alignment using Multi-task Cascaded Convolutional Neural Networks. This project provide you a method to update mu

Weilin Cong 500 Oct 30, 2022
Automatic spoken language identification (LID) using deep learning.

iLID Automatic spoken language identification (LID) using deep learning. Motivation We wanted to classify the spoken language within audio files, a pr

Thomas Werkmeister 85 Apr 3, 2022
Automatic colorization using deep neural networks. Colorful Image Colorization. In ECCV, 2016.

Colorful Image Colorization [Project Page] Richard Zhang, Phillip Isola, Alexei A. Efros. In ECCV, 2016. + automatic colorization functionality for Re

Richard Zhang 3k Dec 27, 2022
Text-cli - Command line tool for extracting text from images using Apple's Vision framework

text-cli Command line tool for extracting text from images using Apple's Vision

San Francisco International Airport Museum 9 Aug 29, 2022
Mobile-ios-ml - SBB Mobile Machine Learning for iOS devices

ESTA library: Machine Learning for iOS This framework simplifies the integration

Swiss Federal Railways (SBB) 9 Jul 16, 2022
Largest list of models for Core ML (for iOS 11+)

Since iOS 11, Apple released Core ML framework to help developers integrate machine learning models into applications. The official documentation We'v

Kedan Li 5.6k Jan 3, 2023
BetterMood is an iOS app that uses Tensorflow to recognize user’s emotions

BetterMood is an iOS app that uses Tensorflow to recognize user’s emotions, convert it into categories then send via our api along with the user’s date of birth and name, to end up with a emotion analyse and horoscope prediction.

Yosri 2 Sep 30, 2021