huasca

out-of-the-box computer vision


Keywords
computer-vision
License
MIT
Install
pip install huasca==0.2.0

Documentation

Huasca

Computer vision models OOB (out-of-the-bottle).
                 __
                [__]
   ___        .+'. '+.
   )_(       /:;/ _.+'\
   + +       +:._   .++
 .+'+'+.  _  |:._     |
/+::_..+_[_]_+:._CV   |
)_     /_   _\:._     |
+;:    )_``'_(:._     +
+;::+..+;:.._++.____.+'
`+.._..`+...+'
Step into the cellar and select a bottle of computer visions.
  • Face detection & localization
  • Face classification
    • age
    • gender
  • Object detection & localization
  • Object tracking
  • Object classification w/o localization

Face and object localization include convenient cropping and annotation methods to feed classifiers.

Roadmap

  • v0.3.0 - reduce and combine models to save space
  • v0.4.x - add style transfer
  • v0.4.x - face recognition

Examples

Detection

Detection results include:

  • boxes: Boxes follow PIL format of (left, upper, right, lower)
    • top-left corner is (0,0) and offsets go down/right from there (physics indexing)
  • scores: confidence score for each detected object
  • labels: label description of the object e.g. ['dog','person']
  • portraits: cropped objects from base image (PIL.Image format)
  • base_image: the source image (PIL.Image format)
  • annotated: the source image with objects annotated (PIL.Image format)

Face & Object Detection

# Get a PIL image from somewhere:
image = ...

# Use PIL image as input:
import huasca

faces   = huasca.detect.faces(image)
objects = huasca.detect.objects(image)

# Display the first face
faces.portraits[0].show()

# Check classes
print(objects.labels)

# Retrieve annotated & labeled version of either
faces.annotated.show()
objects.annotated.show()

Face Demographics

# Get a PIL image of a face from face detector:
face = faces.portraits[0]

gender,age = huasca.classify.demographics(face)

Object Tracking

import huasca

data = json.load(json_data)
object_log = huasca.object_tracking.track_objects(data)
output_json = [obj.to_json() for obj in object_log]