• Stars
    star
    128
  • Rank 279,417 (Top 6 %)
  • Language
    Python
  • License
    MIT License
  • Created over 6 years ago
  • Updated over 5 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Keras implementation of the Squeeze Det Object Detection Deep Learning Framework

SqueezeDet on Keras

SqueezeDet: Unified, Small, Low Power Fully Convolutional Neural Networks for Real-Time Object Detection for Autonomous Driving

By Bichen Wu, Alvin Wan, Forrest Iandola, Peter H. Jin, Kurt Keutzer (UC Berkeley & DeepScale)

This repository contains a Keras implementation of SqueezeDet, a convolutional neural network based object detector described in this paper: https://arxiv.org/abs/1612.01051. The original implementation can be found here. If you find this work useful for your research, please consider citing:

@inproceedings{squeezedet,
    Author = {Bichen Wu and Forrest Iandola and Peter H. Jin and Kurt Keutzer},
    Title = {SqueezeDet: Unified, Small, Low Power Fully Convolutional Neural Networks for Real-Time Object Detection for Autonomous Driving},
    Journal = {arXiv:1612.01051},
    Year = {2016}
}

Installation

Please have a look at our Installation Guide

How do I run it?

I will show an example on the KITTI dataset. If you have any doubts, most scripts run with the -h flag give you the arguments you can pass

  • Download the KITTI training example from here and here

  • Unzip them

    unzip data_object_image_2.zip

    unzip data_object_label_2.zip

    You should get a folder called training.

  • Inside the repository folder create a folder for the experiment. If you don't mind or dont want to type .. all the time you can do it in the scripts folder

    cd path/to/squeezeDet

    mkdir experiments

    mkdir experiments/kitti

    cd experiments/kitti

  • SqueezeDet takes a list of images with full paths to the images and the same for labels. It's the same for training and evaluation. Create a list of full path names of images and labels:

    find /path/to/training/image_2/ -name "*png" | sort > images.txt

    find /path/to/training/label_2/ -name "*txt" | sort > labels.txt

  • Create a training test split

    python ../../main/utils/train_val_split.py

    You should get img_train.txt, gt_train.txt, img_val.txt gt_val.txt, img_test.txt, gt_test.txt . Testing set is empty by default.

  • Create a config file

    python ../../main/config/create_config.py

    Depending on the GPU change the batch size inside squeeze.config and other parameters like learning rate.

  • Run training, this starts with pre-trained weights from imagenet

    python ../../scripts/train.py --init ../../main/model/imagenet.h5

  • In another shell, to run evaluation

    • If you have no second GPU or none at all:

      python ../../scripts/eval.py --gpu ""

    • Otherwise:

      python ../../scripts/eval.py

      This will run evaluation in parallel on the second GPU.

  • To run training on multiple GPUS:

    python ../../scripts/train.py --gpus 2 --init ../../main/model/imagenet.h5

    To run on the first 2 GPUS. Then you have to run evaluation on the third or CPU, if you have it.

  • scripts/scheduler.py allows you to run multiple trainings after another. Check out the dummy scripts/schedule.config for an example. Run this with

    python ../../scripts/scheduler.py --schedule ../../scripts/schedule.config --train ../../scripts/train.py --eval ../../scripts/eval.py

Tensorboard visualization

For tensoboard visualization you can can run:

tensorboard --logdir log

Open in your brower localhost:6006 or the IP where you ran the training. On the first page you can see the losses, sublosses and metrics like mean average precision and f1 scores.

Image not found

On the second page, you find visualizations of a couple of validation images with their ground truth bounding boxes and how the predictions change over the course of the training.

Image not found

The third page gives you a nice view over the network graph.

Image not found

More Repositories

1

jsonargparse

Implement minimal boilerplate CLIs derived from type hints and parse from command line, config files and environment variables
Python
316
star
2

research-GANwriting

Source code for ECCV20 "GANwriting: Content-Conditioned Generation of Styled Handwritten Word Images"
Python
67
star
3

research-seq2seq-HTR

Shell
20
star
4

research-WriterAdaptation-HTR

Source code for WACV20 paper "Unsupervised Adaptation for Synthetic-to-Real Handwritten Word Recognition".
Python
14
star
5

pagexml

Library in C++ and a python wrapper for dealing with Page XML files
C++
13
star
6

docker-command-line-interface

Script intended to ease the execution from the command line of commands inside docker containers
Shell
11
star
7

research-ContentDistillation-HTR

Source code for ICFHR20 "Distilling Content from Style for Handwritten Word Recognition"
Python
4
star
8

narchi

A neural network architecture definition package
HTML
4
star
9

research-das2018-joint-text-entities-results

Model and predictions for results presented in the paper "Joint Recognition of Handwritten Text and Named Entities with a Neural End-to-end Model"
Python
3
star
10

research-dataset-sGMB

Synthetic handwritten Groningen Meaning Bank (GMB) dataset for research on full page text and entity recognition
CSS
2
star
11

reconplogger

A python package to ease the standardization of logging within omni:us
Python
1
star
12

pageformat

Repository for the omni:us Pages Format (OPF) XML schema
HTML
1
star
13

omnius-rpa-activities

UiPath activities to invoke omni:us HTR services and process the response
C#
1
star