Code Monkey home page Code Monkey logo

orangelib's Introduction

Orangelib

This is the official github repository of Orangelib.. Orangelib is a library built to simplify the implementation of computer vision in real problems. It is a library for classifying oranges, apples and bananas.

The models for classifying oranges, bananas and apples are trained with MobilleNetV2. Both the trained models and the dataset used in training the models are available as releases in this repository.

Install Orangelib with:

pip install orangelib

Upgrade Orangelib with:

pip install orangelib --upgrade

Implementing Orangeclassifier With Orangelib:

Orangeclassifier is used to classify ripe and unripe oranges.

The code to implement the classification of a single image with orangelib:

from orangelib.model import OrangeClassifier

classifier = OrangeClassifier("trained_model.h5")

fruit_name, confidence = classifier.predict("path_to_image")

print(" Fruit Name: ",fruit_name)
print("Prediction Confidence: ",confidence)

Looking into each line of code:

from orangelib.model import OrangeClassifier

We import in the class for classifying oranges from orangelib

classifier = OrangeClassifier("trained_model.h5")

The path to model used for classifying oranges is loaded.

fruit_name, confidence = classifier.predict("path_to_image")

The path to image to be predicted is loaded

print(" Fruit Name: ",fruit_name)
print("Prediction Confidence: ",confidence)

The fruit name and the level of confidence of the class predicted are printed out

orange_sample1

alt_test1

fruit_name, confidence = classifier.predict("photos/sample1.jpg")

output1

Fruit Name:  unripe orange
Prediction Confidence: 99.92031

orange_sample2

alt_test2

fruit_name, confidence = classifier.predict("photos/sample2.jpg")

output2

Fruit Name:  ripe orange
Prediction Confidence: 99.99995 

orange_sample3

alt_test3

fruit_name, confidence = classifier.predict("photos/sample3.jpg")

output3

Fruit Name:  ripe orange
Prediction Confidence: 99.99991 0.9999149

orange_sample4

alt_test4

fruit_name, confidence = classifier.predict("photos/sample4.jpg")

output4

Fruit Name:  unripe orange
Prediction Confidence: 99.99999

We may not to stress ourselves predicting a single image, when we intend to predict multiple images.

Code for implementing multiple predictions with Orangelib


from orangelib.model import OrangeClassifier

classifier = OrangeClassifier("orange_model.h5")


fruit_names_list, confidence_list = classifier.predictBatch(["sample1.jpg","sample2.jpg","sample3.jpg", "sample4.jpg"])

for fruit_names, confidence in zip(fruit_names_list,confidence_list):
    print("Fruit Name: ",fruit_names)
    print("Prediction Confidence: ", confidence)
fruit_names_list, confidence_list = classifier.predictBatch(["sample1.jpg","sample2.jpg","sample3.jpg", "sample4.jpg"])

We perform predictions on an array of images using the predictBatch function

Note:

There is no limit to the number of images that can be predicted using the predictBatch function

for fruit_names, confidence in zip(fruit_names_list,confidence_list):
    print("Fruit Name: ",fruit_names)
    print("Prediction Confidence: ", confidence)

We loop through the array of predictions and print it out the predictions for each of the images.

Outputs:

Fruit Name:  unripe orange
Prediction Confidence: 99.92031 

Fruit Name:  ripe orange
Prediction Confidence: 99.99995

Fruit Name:  ripe orange
Prediction Confidence: 99.99991

Fruit Name:  unripe orange
Prediction Confidence: 99.99999

It gives the same level of predictions for the images just as when they were predicted individually.

We are able to classify ripe and unripe oranges with over 99percent accuracy.

Implementing BananaClassifier With Orangelib:

Bananaclassifier is used to classify ripe and unripe bananas.

banana_sample1

alt_test5

The code to implement the classification of a single banana image with orangelib:

from orangelib.model import BananaClassifierClassifier

classifier = BananaClassifier("banana_model.h5")

fruit_name, confidence = classifier.predict("bananas/sample5.jpg")

print(" Fruit Name: ",fruit_name)
print("Prediction Confidence: ",confidence)

Little modifications to the code are:

We import in the class BananaClassifier from Orangelib and load the trained banana model.

Output1

Fruit Name:  ripe banana
Prediction Confidence:  99.99983

banana_sample2

alt_test6

fruit_name, confidence = classifier.predict("bananas/sample6.jpg")

output2

Fruit Name:  unripe banana
Prediction Confidence:  99.87182

banana_sample3

alt_test7

fruit_name, confidence = classifier.predict("bananas/sample7.jpg")

output3

Fruit Name:  ripe banana
Prediction Confidence:  99.99490

banana_sample4

alt_test8

fruit_name, confidence = classifier.predict("bananas/sample8.jpg")

output4

Fruit Name:  unripe banana
Prediction Confidence:  99.99660

Code for implementing multiple predictions with Orangelib Using BananaClassifier


from orangelib.model import BananaClassifier

classifier = OrangeClassifier("banana_model.h5")


fruit_names_list, confidence_list = classifier.predictBatch(["banana/sample5.jpg","bananas/sample6.jpg","bananas/sample7.jpg", "banana/sample8.jpg"])

for fruit_names, confidence in zip(fruit_names_list,confidence_list):
    print("Fruit Name: ",fruit_names)
    print("Prediction Confidence: ", confidence)
fruit_names_list, confidence_list = classifier.predictBatch(["bananas/sample5.jpg","bananas/sample6.jpg","bananas/sample7.jpg", "bananas/sample8.jpg"])

We perform predictions on an array of images using the predictBatch function.

for fruit_names, confidence in zip(fruit_names_list,confidence_list):
    print("Fruit Name: ",fruit_names)
    print("Prediction Confidence: ", confidence)

We loop through the array of predictions and print it out the predictions for each of the images.

Outputs:

Fruit Name:  ripe banana
Prediction Confidence:  99.99983

Fruit Name:  unripe banana
Prediction Confidence:  99.87182


Fruit Name:  ripe banana
Prediction Confidence:  99.99490


Fruit Name:  unripe banana
Prediction Confidence:  99.99660

It gives the same level of predictions for the images just as when they were predicted individually.

We are able to classify ripe and unripe bananas with over 99percent accuracy.

Implementing AppleClassifier With Orangelib:

Appleclassifier is used to classify green and red apples.

apple_sample1

alt_test9

The code to implement the classification of a single banana image with orangelib:

from orangelib.model import AppleClassifier

classifier = AppleClassifier("apple_model.h5")

fruit_name, confidence = classifier.predict("apples/sample3.jpg")

print(" Fruit Name: ",fruit_name)
print("Prediction Confidence: ",confidence)

Little modifications to the code are: We import in the class AppleClassifier from Orangelib and load the trained apple model.

Output1

Fruit Name:  green apple
Prediction Confidence:  99.94303

apple_sample2

alt_test10

fruit_name, confidence = classifier.predict("apples/sample6.jpg")

output2

Fruit Name: red apple
Prediction Confidence:  100.0

apple_sample3

alt_test11

fruit_name, confidence = classifier.predict("apples/sample7.jpg")

output3

Fruit Name:  green apple
Prediction Confidence:  99.88158

apple_sample4

alt_test12

fruit_name, confidence = classifier.predict("apples/sample8.jpg")

output4

FruitName:red apple
Prediction Confidence: 100.0

Code for implementing multiple predictions with Orangelib Using AppleClassifier


from orangelib.model import AppleClassifier

classifier = AppleClassifier("apple_model.h5")


fruit_names_list, confidence_list = classifier.predictBatch(["apples/sample3.jpg","apples/sample6.jpg","apples/sample7.jpg", "apples/sample8.jpg"])

for fruit_names, confidence in zip(fruit_names_list,confidence_list):
    print("Fruit Name: ",fruit_names)
    print("Prediction Confidence: ", confidence)
fruit_names_list, confidence_list = classifier.predictBatch(["bananas/sample5.jpg","bananas/sample6.jpg","bananas/sample7.jpg", "bananas/sample8.jpg"])

We perform predictions on an array of images using predictBatch function

for fruit_names, confidence in zip(fruit_names_list,confidence_list):
    print("Fruit Name: ",fruit_names)
    print("Prediction Confidence: ", confidence)

We loop through the array of predictions and print it out the predictions for each of the images.

Outputs:

Fruit Name:  green apple
Prediction Confidence:  99.91635084152222


Fruit Name:  red apple
Prediction Confidence:  100.0

Fruit Name:  green apple
Prediction Confidence:  99.88158941268921

FruitName:red apple
Prediction Confidence: 100.0

It gives the same level of predictions for the images just as when they were predicted individually.

We are able to classify green apples with over 99percent surprisingly! It classified the red apples with 100% accuracy.

Excellent Results! With all the fruit classifiers available in Orangelib.

Install Orangelib and test it with many images of oranges, bananas and apples.

References

  1. Building an Image Recognition Model for Mobile using Depthwise Convolutions. https://heartbeat.fritz.ai/building-an-image-recognition-model-for-mobile-using-depthwise-convolutions-643d70e0f7e2

  2. MobileNetV2: Inverted Residuals and Linear Bottlenecks. https://arxiv.org/abs/1801.04381

Back to top

orangelib's People

Contributors

ayoolaolafenwa avatar

Watchers

James Cloos avatar

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.