Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/broadinstitute/keras-rcnn

Keras package for region-based convolutional neural networks (RCNNs)
https://github.com/broadinstitute/keras-rcnn

cntk deep-learning image-segmentation object-detection tensorflow theano

Last synced: 1 day ago
JSON representation

Keras package for region-based convolutional neural networks (RCNNs)

Awesome Lists containing this project

README

        

Keras-RCNN
==========

.. image:: https://travis-ci.org/broadinstitute/keras-rcnn.svg?branch=master
:target: https://travis-ci.org/broadinstitute/keras-rcnn

.. image:: https://codecov.io/gh/broadinstitute/keras-rcnn/branch/master/graph/badge.svg
:target: https://codecov.io/gh/broadinstitute/keras-rcnn

keras-rcnn is *the* Keras package for region-based convolutional
neural networks.

Requirements
---------------
Python 3

keras-resnet==0.2.0

numpy==1.16.2

tensorflow==1.13.1

Keras==2.2.4

scikit-image==0.15.0

Getting Started
---------------

Let’s read and inspect some data:

.. code:: python

training_dictionary, test_dictionary = keras_rcnn.datasets.shape.load_data()

categories = {"circle": 1, "rectangle": 2, "triangle": 3}

generator = keras_rcnn.preprocessing.ObjectDetectionGenerator()

generator = generator.flow_from_dictionary(
dictionary=training_dictionary,
categories=categories,
target_size=(224, 224)
)

validation_data = keras_rcnn.preprocessing.ObjectDetectionGenerator()

validation_data = validation_data.flow_from_dictionary(
dictionary=test_dictionary,
categories=categories,
target_size=(224, 224)
)

target, _ = generator.next()

target_bounding_boxes, target_categories, target_images, target_masks, target_metadata = target

target_bounding_boxes = numpy.squeeze(target_bounding_boxes)

target_images = numpy.squeeze(target_images)

target_categories = numpy.argmax(target_categories, -1)

target_categories = numpy.squeeze(target_categories)

keras_rcnn.utils.show_bounding_boxes(target_images, target_bounding_boxes, target_categories)

Let’s create an RCNN instance:

.. code:: python

model = keras_rcnn.models.RCNN((224, 224, 3), ["circle", "rectangle", "triangle"])

and pass our preferred optimizer to the `compile` method:

.. code:: python

optimizer = keras.optimizers.Adam(0.0001)

model.compile(optimizer)

Finally, let’s use the `fit_generator` method to train our network:

.. code:: python

model.fit_generator(
epochs=10,
generator=generator,
validation_data=validation_data
)

External Data
-------------

The data is made up of a list of dictionaries corresponding to images.

* For each image, add a dictionary with keys 'image', 'objects'
* 'image' is a dictionary, which contains keys 'checksum', 'pathname', and 'shape'
* 'checksum' is the md5 checksum of the image
* 'pathname' is the pathname of the image, put in full pathname
* 'shape' is a dictionary with keys 'r', 'c', and 'channels'
* 'c': number of columns
* 'r': number of rows
* 'channels': number of channels
* 'objects' is a list of dictionaries, where each dictionary has keys 'bounding_box', 'category'
* 'bounding_box' is a dictionary with keys 'minimum' and 'maximum'
* 'minimum': dictionary with keys 'r' and 'c'
* 'r': smallest bounding box row
* 'c': smallest bounding box column
* 'maximum': dictionary with keys 'r' and 'c'
* 'r': largest bounding box row
* 'c': largest bounding box column
* 'category' is a string denoting the class name

Suppose this data is save in a file called training.json. To load data,

.. code:: python

import json

with open('training.json') as f:
d = json.load(f)

Slack
-----

We’ve been meeting in the #keras-rcnn channel on the keras.io Slack
server.

You can join the server by inviting yourself from the following website:

https://keras-slack-autojoin.herokuapp.com/