All Projects → fregu856 → 2d_detection

fregu856 / 2d_detection

Licence: mit
TensorFlow implementation of SqueezeDet, trained on the KITTI dataset.

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to 2d detection

Self Driving Golf Cart
Be Driven 🚘
Stars: ✭ 147 (+11.36%)
Mutual labels:  object-detection, autonomous-driving
Openpcdet
OpenPCDet Toolbox for LiDAR-based 3D Object Detection.
Stars: ✭ 2,199 (+1565.91%)
Mutual labels:  object-detection, autonomous-driving
Robust Detection Benchmark
Code, data and benchmark from the paper "Benchmarking Robustness in Object Detection: Autonomous Driving when Winter is Coming" (NeurIPS 2019 ML4AD)
Stars: ✭ 128 (-3.03%)
Mutual labels:  object-detection, autonomous-driving
3dod thesis
3D Object Detection for Autonomous Driving in PyTorch, trained on the KITTI dataset.
Stars: ✭ 265 (+100.76%)
Mutual labels:  object-detection, autonomous-driving
Mscnn
Caffe implementation of our multi-scale object detection framework
Stars: ✭ 397 (+200.76%)
Mutual labels:  object-detection, autonomous-driving
Autonomous driving
Ros package for basic autonomous lane tracking and object detection
Stars: ✭ 67 (-49.24%)
Mutual labels:  object-detection, autonomous-driving
Autonomousvehiclepaper
无人驾驶相关论文速递
Stars: ✭ 406 (+207.58%)
Mutual labels:  object-detection, autonomous-driving
Driving In The Matrix
Steps to reproduce training results for the paper Driving in the Matrix: Can Virtual Worlds Replace Human-Generated Annotations for Real World Tasks?
Stars: ✭ 96 (-27.27%)
Mutual labels:  object-detection, autonomous-driving
Xcenternet
Fast anchor free Object Detection based on CenterNet (Objects As Points) and TTFNet (Training-Time-Friendly Network). Implemented in TensorFlow 2.4+.
Stars: ✭ 123 (-6.82%)
Mutual labels:  object-detection
Universenet
Object detection. EfficientDet-D5 level COCO AP in 20 epochs. SOTA single-stage detector on Waymo Open Dataset.
Stars: ✭ 128 (-3.03%)
Mutual labels:  object-detection
Deepstack
The World's Leading Cross Platform AI Engine for Edge Devices
Stars: ✭ 120 (-9.09%)
Mutual labels:  object-detection
Epic Kitchens 55 Annotations
🍴 Annotations for the EPIC KITCHENS-55 Dataset.
Stars: ✭ 120 (-9.09%)
Mutual labels:  object-detection
Make Sense
Free to use online tool for labelling photos. https://makesense.ai
Stars: ✭ 2,087 (+1481.06%)
Mutual labels:  object-detection
Leagueai
LeagueAI software framework for League of Legends that provides information about the state of the game based on Image Recognition using OpenCV and Pytorch.
Stars: ✭ 128 (-3.03%)
Mutual labels:  object-detection
Pick Place Robot
Object picking and stowing with a 6-DOF KUKA Robot using ROS
Stars: ✭ 126 (-4.55%)
Mutual labels:  object-detection
Groupsoftmax Simpledet
GroupSoftmax cross entropy loss function for training with multiple different benchmark datasets
Stars: ✭ 121 (-8.33%)
Mutual labels:  object-detection
Object detection demo
How to train an object detection model easy for free
Stars: ✭ 130 (-1.52%)
Mutual labels:  object-detection
Openvehiclevision
An opensource lib. for vehicle vision applications (written by MATLAB), lane marking detection, road segmentation
Stars: ✭ 120 (-9.09%)
Mutual labels:  autonomous-driving
Yolo label
GUI for marking bounded boxes of objects in images for training neural network Yolo v3 and v2 https://github.com/AlexeyAB/darknet, https://github.com/pjreddie/darknet
Stars: ✭ 128 (-3.03%)
Mutual labels:  object-detection
Centernet Tensorflow
CenterNet: Objects as Points in Tensorflow
Stars: ✭ 129 (-2.27%)
Mutual labels:  object-detection

2D_detection

TensorFlow implementation of SqueezeDet (https://arxiv.org/pdf/1612.01051.pdf) based on the official implementation (https://github.com/BichenWuUCB/squeezeDet), trained on the KITTI dataset (http://www.cvlibs.net/datasets/kitti/).

  • Youtube video of results (https://youtu.be/5BBwjvlUULI):

  • demo video with results

  • The results in the video can obviously be improved, but because of limited computing resources (personally funded Azure VM) I did not perform any further hyperparameter tuning.


Documentation:

preprocess_data.py:

  • ASSUMES: that all KITTI training images have been placed in data_dir/KITTI/data_object/training/image_2, that all corresponding labels have been placed in data_dir/KITTI/data_object/training/label_2 and that data_dir/KITTI/data_tracking/testing/image_02 contains the 0000, 0001, 0004 and 0012 sequence directories.
  • DOES: script for performing all necessary preprocessing of images and labels.

model.py:

  • ASSUMES: that caffemodel_weights.pkl has been placed in 2D_detection/data.
  • DOES: contains the SqueezeDet_model class.

utilities.py:

  • ASSUMES: -
  • DOES: contains a number of functions used in different parts of the project.

train.py:

  • ASSUMES: that preprocess_data.py has already been run.
  • DOES: script for training the model.

run_on_KITTI_sequence.py:

  • ASSUMES: that preprocess_data.py has already been run.
  • DOES: runs a model checkpoint (set in line 45) on all frames in a KITTI test sequence (set in line 28) and creates a video of the result.

Training details:

  • The SqueezeNet network was initialized with the pretrained model in https://github.com/DeepScale/SqueezeNet/tree/master/SqueezeNet_v1.0 (squeezenet_v1.0.caffemodel and deploy.prototxt). To load these weights into TensorFlow, one needs to have pycaffe installed (must be able to run "import caffe"). Run get_caffemodel_weights in utilities.py and save the output as caffemodel_weights.pkl in 2D_detection/data using cPickle. These files (caffemodel_weights.pkl, squeezenet_v1.0.caffemodel and deploy.prototxt) are also included in 2D_detection/data in the repo.

  • Batch size: 32.

  • For all other hyperparameters I used the same values as in the paper.

  • Training loss:

  • training loss

  • Validation loss:

  • validation loss

  • The results in the video above was obtained with the model at epoch 58, for which a checkpoint is included in 2D_detection/training_logs/best_model in the repo.


Training on Microsoft Azure:

To train the model, I used an NC6 virtual machine on Microsoft Azure. Below I have listed what I needed to do in order to get started, and some things I found useful. For reference, my username was 'fregu856':

#!/bin/bash

# DEFAULT VALUES
GPUIDS="0"
NAME="fregu856_GPU"


NV_GPU="$GPUIDS" nvidia-docker run -it --rm \
        -p 5584:5584 \
        --name "$NAME""$GPUIDS" \
        -v /home/fregu856:/root/ \
        tensorflow/tensorflow:latest-gpu bash
  • /root/ will now be mapped to /home/fregu856 (i.e., $ cd -- takes you to the regular home folder).

  • To start the image:

    • $ sudo sh start_docker_image.sh
  • To commit changes to the image:

    • Open a new terminal window.
    • $ sudo docker commit fregu856_GPU0 tensorflow/tensorflow:latest-gpu
  • To stop the image when it’s running:

    • $ sudo docker stop fregu856_GPU0
  • To exit the image without killing running code:

    • Ctrl-P + Q
  • To get back into a running image:

    • $ sudo docker attach fregu856_GPU0
  • To open more than one terminal window at the same time:

    • $ sudo docker exec -it fregu856_GPU0 bash
  • To install the needed software inside the docker image:

    • $ apt-get update
    • $ apt-get install nano
    • $ apt-get install sudo
    • $ apt-get install wget
    • $ sudo apt-get install libopencv-dev python-opencv
    • Commit changes to the image (otherwise, the installed packages will be removed at exit!)
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].