A Kitti Road Segmentation model implemented in tensorflow.

Overview

KittiSeg

KittiSeg performs segmentation of roads by utilizing an FCN based model. The model achieved first place on the Kitti Road Detection Benchmark at submission time. Check out our paper for a detailed model description.

The model is designed to perform well on small datasets. The training is done using just 250 densely labelled images. Despite this a state-of-the art MaxF1 score of over 96% is achieved. The model is usable for real-time application. Inference can be performed at the impressive speed of 95ms per image.

The repository contains code for training, evaluating and visualizing semantic segmentation in TensorFlow. It is build to be compatible with the TensorVision back end which allows to organize experiments in a very clean way. Also check out KittiBox a similar projects to perform state-of-the art detection. And finally the MultiNet repository contains code to jointly train segmentation, classification and detection. KittiSeg and KittiBox are utilized as submodules in MultiNet.

Requirements

The code requires Tensorflow 1.0, python 2.7 as well as the following python libraries:

  • matplotlib
  • numpy
  • Pillow
  • scipy
  • commentjson

Those modules can be installed using: pip install numpy scipy pillow matplotlib commentjson or pip install -r requirements.txt.

Setup

  1. Clone this repository: git clone https://github.com/MarvinTeichmann/KittiSeg.git
  2. Initialize all submodules: git submodule update --init --recursive
  3. [Optional] Download Kitti Road Data:
    1. Retrieve kitti data url here: http://www.cvlibs.net/download.php?file=data_road.zip
    2. Call python download_data.py --kitti_url URL_YOU_RETRIEVED

Running the model using demo.py does not require you to download kitti data (step 3). Step 3 is only required if you want to train your own model using train.py or bench a model agains the official evaluation score evaluate.py. Also note, that I recommend using download_data.py instead of downloading the data yourself. The script will also extract and prepare the data. See Section Manage data storage if you like to control where the data is stored.

To update an existing installation do:
  1. Pull all patches: git pull
  2. Update all submodules: git submodule update --init --recursive

If you forget the second step you might end up with an inconstant repository state. You will already have the new code for KittiSeg but run it old submodule versions code. This can work, but I do not run any tests to verify this.

Tutorial

Getting started

Run: python demo.py --input_image data/demo/demo.png to obtain a prediction using demo.png as input.

Run: python evaluate.py to evaluate a trained model.

Run: python train.py --hypes hypes/KittiSeg.json to train a model using Kitti Data.

If you like to understand the code, I would recommend looking at demo.py first. I have documented each step as thoroughly as possible in this file.

Manage Data Storage

KittiSeg allows to separate data storage from code. This is very useful in many server environments. By default, the data is stored in the folder KittiSeg/DATA and the output of runs in KittiSeg/RUNS. This behaviour can be changed by setting the bash environment variables: $TV_DIR_DATA and $TV_DIR_RUNS.

Include export TV_DIR_DATA="/MY/LARGE/HDD/DATA" in your .profile and the all data will be downloaded to /MY/LARGE/HDD/DATA/data_road. Include export TV_DIR_RUNS="/MY/LARGE/HDD/RUNS" in your .profile and all runs will be saved to /MY/LARGE/HDD/RUNS/KittiSeg

RUNDIR and Experiment Organization

KittiSeg helps you to organize large number of experiments. To do so the output of each run is stored in its own rundir. Each rundir contains:

  • output.log a copy of the training output which was printed to your screen
  • tensorflow events tensorboard can be run in rundir
  • tensorflow checkpoints the trained model can be loaded from rundir
  • [dir] images a folder containing example output images. image_iter controls how often the whole validation set is dumped
  • [dir] model_files A copy of all source code need to build the model. This can be very useful of you have many versions of the model.

To keep track of all the experiments, you can give each rundir a unique name with the --name flag. The --project flag will store the run in a separate subfolder allowing to run different series of experiments. As an example, python train.py --project batch_size_bench --name size_5 will use the following dir as rundir: $TV_DIR_RUNS/KittiSeg/batch_size_bench/size_5_KittiSeg_2017_02_08_13.12.

The flag --nosave is very useful to not spam your rundir.

Modifying Model & Train on your own data

The model is controlled by the file hypes/KittiSeg.json. Modifying this file should be enough to train the model on your own data and adjust the architecture according to your needs. A description of the expected input format can be found here.

For advanced modifications, the code is controlled by 5 different modules, which are specified in hypes/KittiSeg.json.

"model": {
   "input_file": "../inputs/kitti_seg_input.py",
   "architecture_file" : "../encoder/fcn8_vgg.py",
   "objective_file" : "../decoder/kitti_multiloss.py",
   "optimizer_file" : "../optimizer/generic_optimizer.py",
   "evaluator_file" : "../evals/kitti_eval.py"
},

Those modules operate independently. This allows easy experiments with different datasets (input_file), encoder networks (architecture_file), etc. Also see TensorVision for a specification of each of those files.

Utilize TensorVision backend

KittiSeg is build on top of the TensorVision TensorVision backend. TensorVision modularizes computer vision training and helps organizing experiments.

To utilize the entire TensorVision functionality install it using

$ cd KittiSeg/submodules/TensorVision
$ python setup.py install

Now you can use the TensorVision command line tools, which includes:

tv-train --hypes hypes/KittiSeg.json trains a json model.
tv-continue --logdir PATH/TO/RUNDIR trains the model in RUNDIR, starting from the last saved checkpoint. Can be used for fine tuning by increasing max_steps in model_files/hypes.json .
tv-analyze --logdir PATH/TO/RUNDIR evaluates the model in RUNDIR

Useful Flags & Variabels

Here are some Flags which will be useful when working with KittiSeg and TensorVision. All flags are available across all scripts.

--hypes : specify which hype-file to use
--logdir : specify which logdir to use
--gpus : specify on which GPUs to run the code
--name : assign a name to the run
--project : assign a project to the run
--nosave : debug run, logdir will be set to debug

In addition the following TensorVision environment Variables will be useful:

$TV_DIR_DATA: specify meta directory for data
$TV_DIR_RUNS: specify meta directory for output
$TV_USE_GPUS: specify default GPU behaviour.

On a cluster it is useful to set $TV_USE_GPUS=force. This will make the flag --gpus mandatory and ensure, that run will be executed on the right GPU.

Questions?

Please have a look into the FAQ. Also feel free to open an issue to discuss any questions not covered so far.

Citation

If you benefit from this code, please cite our paper:

@article{teichmann2016multinet,
  title={MultiNet: Real-time Joint Semantic Reasoning for Autonomous Driving},
  author={Teichmann, Marvin and Weber, Michael and Zoellner, Marius and Cipolla, Roberto and Urtasun, Raquel},
  journal={arXiv preprint arXiv:1612.07695},
  year={2016}
}
Comments
  • increase descriptions of input files for us lay people

    increase descriptions of input files for us lay people

    Could you perhaps provide a description of val3.txt and train3.txt? For instance, is the file nomenclature somehow significant?

    It is not entirely clear on how one would make their own training images.

    I looked at the examples in TensorVision, but it too does not really explain what the masks are. It just labels them GT:

        {
            "raw": "/home/moose/GitHub/MediSeg/DATA/OP1/img_00.png",
            "mask": "/home/moose/GitHub/MediSeg/DATA/OP1/img_00_GT.png"
        },
        {
            "raw": "/home/moose/GitHub/MediSeg/DATA/OP1/img_01.png",
            "mask": "/home/moose/GitHub/MediSeg/DATA/OP1/img_01_GT.png"
        },
        {
            "raw": "/home/moose/GitHub/MediSeg/DATA/OP1/img_02.png",
            "mask": "/home/moose/GitHub/MediSeg/DATA/OP1/img_02_GT.png
    }
    ]
    

    THANKS

    opened by Steven-N-Hart 31
  • No such file or directory: 'RUNS/KittiSeg_pretrained.zip'

    No such file or directory: 'RUNS/KittiSeg_pretrained.zip'

    Hi,

    After downloading the data, installing the requirements.txt packages and tensorflow I attempted the demo and got this error.

    python demo.py --input_image data/demo/demo.png 2017-03-10 07:50:36,788 INFO No environment variable 'TV_PLUGIN_DIR' found. Set to '/home/lap/tv-plugins'. 2017-03-10 07:50:36,788 INFO No environment variable 'TV_STEP_SHOW' found. Set to '50'. 2017-03-10 07:50:36,788 INFO No environment variable 'TV_STEP_EVAL' found. Set to '250'. 2017-03-10 07:50:36,788 INFO No environment variable 'TV_STEP_WRITE' found. Set to '1000'. 2017-03-10 07:50:36,788 INFO No environment variable 'TV_MAX_KEEP' found. Set to '10'. 2017-03-10 07:50:36,788 INFO No environment variable 'TV_STEP_STR' found. Set to 'Step {step}/{total_steps}: loss = {loss_value:.2f}; lr = {lr_value:.2e}; {sec_per_batch:.3f} sec (per Batch); {examples_per_sec:.1f} imgs/sec'. 2017-03-10 07:50:36,788 INFO Download URL: ftp://mi.eng.cam.ac.uk/pub/mttt2/models/KittiSeg_pretrained.zip 2017-03-10 07:50:36,789 INFO Download DIR: RUNS Traceback (most recent call last): File "demo.py", line 216, in tf.app.run() File "/media/lap/data/.virtualenvs/KittySeg/local/lib/python2.7/site-packages/tensorflow/python/platform/app.py", line 44, in run _sys.exit(main(_sys.argv[:1] + flags_passthrough)) File "demo.py", line 124, in main maybe_download_and_extract(runs_dir) File "demo.py", line 87, in maybe_download_and_extract download_name = tv_utils.download(weights_url, runs_dir) File "incl/tensorvision/utils.py", line 48, in download reporthook=_progress) File "/usr/lib/python2.7/urllib.py", line 98, in urlretrieve return opener.retrieve(url, filename, reporthook, data) File "/usr/lib/python2.7/urllib.py", line 249, in retrieve tfp = open(filename, 'wb') IOError: [Errno 2] No such file or directory: 'RUNS/KittiSeg_pretrained.zip'

    Did I miss a step?

    opened by bubalazi 23
  • Import module 'seg_utils' Error

    Import module 'seg_utils' Error

    I followed the instructions, and downloaded vgg16.npy and data_road.zip successfully, but when I run the command: python demo.py --input_image data/demo/demo.png --output_image data/demo/demo_seg.png I got the error message as following: Traceback (most recent call last): File "demo.py", line 51, in from seg_utils import seg_utils as seg ImportError: No module named 'seg_utils' I use Anaconda3 (64-bit)/Windows 7

    opened by colorfulCloud 16
  • Save as .pb and single image inference

    Save as .pb and single image inference

    I am saving the model in a protobuf format like this in the evaluate.py :

    tf.train.write_graph(_session.graph_def, save_dir, "FCN8_bilinear_session_Full.pb", False)
    tf.train.write_graph(_session.graph_def, save_dir, "FCN8_bilinear_session_Full.pbtxt", True)
    

    After that I want to do a single image inference through that .pb file using this code :

    import tensorflow as tf
    import os
    import numpy as np
    from tensorflow.python.platform import gfile
    from PIL import Image
    
    # Read the image & get statstics
    img=Image.open('/path-to-image/demoImage.png')
    img.show()
    width, height = img.size
    print(width)
    print(height)
    
    #Plot the image
    #image.show()
    
    with tf.Graph().as_default() as graph:
    
            with tf.Session() as sess:
    
                    # Load the graph in graph_def
                    print("load graph")
    
                    # We load the protobuf file from the disk and parse it to retrive the unserialized graph_drf
                    with gfile.FastGFile("/path-to-FCN-model/FCN8.pb",'rb') as f:
    
                                    #Set default graph as current graph
                                    graph_def = tf.GraphDef()
                                    graph_def.ParseFromString(f.read())
                                    #sess.graph.as_default() #new line
    
                                    # Import a graph_def into the current default Graph
                                    tf.import_graph_def(graph_def, name='')
    
                                    # Print the name of operations in the session
                                    #for op in sess.graph.get_operations():
    
                                        #print "Operation Name :",op.name            # Operation name
                                        #print "Tensor Stats :",str(op.values())     # Tensor name
    
                                    # INFERENCE Here
                                    l_input = graph.get_tensor_by_name('Placeholder:0')
                                    l_output = graph.get_tensor_by_name('save/Assign_38:0')
    
                                    print "l_input", l_input
                                    print "l_output", l_output
                                    print
                                    print
    
                                    # Acceptable feed values include Python scalars, strings, lists, numpy ndarrays, or TensorHandles.                              
                                    result = sess.run(l_output, feed_dict={l_input : img}) #   <= error here
                                    print(results)
    
                                    print("Inference done")
    
    
                                    # Info
                                    # First Tensor name : Placeholder:0
                                    # Last tensor name  : save/Assign_38:0"
    

    But I get the following error in sess.run :

    2017-08-16 15:54:11.567779: W tensorflow/core/framework/op_kernel.cc:1158] Not found: Unsuccessful TensorSliceReader constructor: Failed to find any matching files for model
    2017-08-16 15:54:11.571391: W tensorflow/core/framework/op_kernel.cc:1158] Not found: Unsuccessful TensorSliceReader constructor: Failed to find any matching files for model
    Traceback (most recent call last):
      File "InferencePb2.py", line 51, in <module>
        result = sess.run(l_output, feed_dict={l_input : img}) #   <= error here
      File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/client/session.py", line 789, in run
        run_metadata_ptr)
      File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/client/session.py", line 997, in _run
        feed_dict_string, options, run_metadata)
      File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/client/session.py", line 1132, in _do_run
        target_list, options, run_metadata)
      File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/client/session.py", line 1152, in _do_call
        raise type(e)(node_def, op, message)
    tensorflow.python.framework.errors_impl.NotFoundError: Unsuccessful TensorSliceReader constructor: Failed to find any matching files for model
    	 [[Node: save/RestoreV2_38 = RestoreV2[dtypes=[DT_FLOAT], _device="/job:localhost/replica:0/task:0/cpu:0"](save/Const, save/RestoreV2_38/tensor_names, save/RestoreV2_38/shape_and_slices)]]
    
    Caused by op u'save/RestoreV2_38', defined at:
      File "InferencePb2.py", line 33, in <module>
        tf.import_graph_def(graph_def, name='')
      File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/framework/importer.py", line 311, in import_graph_def
        op_def=op_def)
      File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/framework/ops.py", line 2506, in create_op
        original_op=self._default_original_op, op_def=op_def)
      File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/framework/ops.py", line 1269, in __init__
        self._traceback = _extract_stack()
    
    NotFoundError (see above for traceback): Unsuccessful TensorSliceReader constructor: Failed to find any matching files for model
    	 [[Node: save/RestoreV2_38 = RestoreV2[dtypes=[DT_FLOAT], _device="/job:localhost/replica:0/task:0/cpu:0"](save/Const, save/RestoreV2_38/tensor_names, save/RestoreV2_38/shape_and_slices)]]
    

    Is there any idea why I get this error? Even if I change the output tensor in order to inference in a part of the graph I still get different errors. Any suggestion is appriciated.

    opened by kmonachopoulos 13
  • train.py gives tensorflow ValueError: No variables provided

    train.py gives tensorflow ValueError: No variables provided

    I try to train the KittiSeg net on my own data, so I have generated Kitti-like groundtruth masks, exported my DATA and RUN directories and created train/val txt files (and put those in KittiSeg.json. When I then run train.py, it starts and initialises the net, but it fails on training with the tensorflow ValueError 'no variables provided'. That does not sound data-set related or so. Do you know what should I update/provide/change to fix that?

    (...)
    2017-04-06 15:42:59,665 INFO Creating Summary for: score_pool3/biases
    2017-04-06 15:42:59,704 INFO Creating Summary for: upscore32/up_filter
    Traceback (most recent call last):
      File "train.py", line 131, in <module>
        tf.app.run()
      File "/home/shah/tensorflow/tensorflow_v1.0.0_py3.5_gpu/lib/python3.5/site-packages/tensorflow/python/platform/app.py", line 44, in run
        _sys.exit(main(_sys.argv[:1] + flags_passthrough))
      File "train.py", line 127, in main
        train.do_training(hypes)
      File "incl/tensorvision/train.py", line 377, in do_training
        tv_graph = core.build_training_graph(hypes, queue, modules)
      File "incl/tensorvision/core.py", line 100, in build_training_graph
        global_step, learning_rate)
      File "/home/shah/Coding/KittiSeg/hypes/../optimizer/generic_optimizer.py", line 91, in training
        global_step=global_step)
      File "/home/shah/tensorflow/tensorflow_v1.0.0_py3.5_gpu/lib/python3.5/site-packages/tensorflow/python/training/optimizer.py", line 380, in apply_gradients
        raise ValueError("No variables provided.")
    ValueError: No variables provided.
    

    possibly related things:

    • I commented out line 123 (train.maybe_download_and_extract(hypes) in train.py because otherwise it would still download kitti;
    • I got the same commentjson import error as issue #28, so I had to import json instead of commentjson in train.py

    Could that last one cause some values to be empty or is it something else?

    opened by WPSanberg 10
  • How to use resnet?

    How to use resnet?

    Hi, Marvin. Thank you for your KittiSeg and the tutorial. I want to changge the vgg16 to resnet ,and the model has been downloaded ,but when I run train.py ,I met this error: NotFoundError (see above for traceback): Tensor name "scale1/scale1/moving_mean/local_step" not found in checkpoint files DATA/weights/tensorflow_resnet/ResNet-L50.ckpt Should I change some code?@MarvinTeichmann

    opened by daixiaogang 9
  • Importing trained model to OpenCV

    Importing trained model to OpenCV

    Has anybody had any success importing the trained model to opencv? I have looked around and it seems opencv requires the inference graph and weights as protobuf files: https://github.com/opencv/opencv/blob/3.4.0/samples/dnn/mobilenet_ssd_python.py Some suggest that we can convert the model ckpt files to pb using freeze_graph, but I have tried and it seems to require the graph in pbtxt format, which in my case is not in the training files (in RUNS). I only have the .meta, .info, and .data files. Any help would be appreciated!

    P.S. While I have a lot of experience with OpenCV, I am a beginner with tensorflow and kittiseg.

    opened by vincentcaux 6
  • _make_data_gen() and start_enqueueing_threads()

    _make_data_gen() and start_enqueueing_threads()

    I'm not sure I understand what is happening in inputs/kitti_seg_input.py here: https://github.com/MarvinTeichmann/KittiSeg/blob/master/inputs/kitti_seg_input.py#L169-L173.

    elif phase == 'train':
        yield jitter_input(hypes, image, gt_image)
        yield jitter_input(hypes, np.fliplr(image), np.fliplr(gt_image))
    

    So, we are yielding 2 generators to the variable, gen, in L359:

    gen = _make_data_gen(hypes, phase, data_dir)
    gen.next() # but then why do we just iterate over it? 
    

    But then why do we do the gen.next() in the following line, without making use of the returned value? What is the purpose of this portion of the code, in start_enqueueing_threads()?

    opened by villanuevab 6
  • Testing On Other Image Sets

    Testing On Other Image Sets

    Hey Marvin,

    Thank you so much for sharing your code. When I run KittiSeg on the Kitti dataset, the segmentation is able to find the road to the precision you posted. But when I try to run KittiSeg on images from other datasets like CITYSCAPES, the network is either not able to detect any road segmentation or just the left edge. I don't see any image filtering on the input image before running the tf session in the demo.py. Any ideas why there would be such a big difference in performance?

    Best, David

    opened by davidgroden 6
  • reload previous model in a new training

    reload previous model in a new training

    Hello,

    I have a model trained with 500 images (Kitti data and ~200 images of my own). Now I want to add new images to improve this model. My question is, instead of re-train with all 520 images, can I reload this model and add 20 new images to re-train and improve this model? Maybe something like saver = tf.train.import_meta_graph('my_test_model-1000.meta') in tensorflow. How can I achieve it with minimal modification on train.py or tensorvision code?

    Thank you very much!

    opened by jinhangw 6
  • Better way to share KittiSeg_pretrained.zip

    Better way to share KittiSeg_pretrained.zip

    I have been constantly trying to download KittiSeg_pretrained.zip from ftp://129.169.82.147/pub/mttt2/models/KittiSeg_pretrained.zip. I have been trying every hour since the last couple of days.I already checked #19 #18 #33 . It is not the case that I forgot to unzip the file in the RUNS folder.

    Can someone share their local copy via dropbox,google drive or any other method? My email id [email protected]

    opened by zishanahmed08 6
  • Cannot download KittiSeg_pretrained.zip

    Cannot download KittiSeg_pretrained.zip

    Hello, I am trying to run python demo.py --input_image data/demo/demo.png, but a timeout occurs when downloading ftp://mi.eng.cam.ac.uk/pub/mttt2/models/KittiSeg_pretrained.zip.

    Creating the RUNS directory did not solve this issue. Is there another way to download the KittiSeg_pretrained.zip file? Thank you.

    opened by or-gottman 3
  • IOError: [Errno ftp error] proxy support for ftp protocol currently not implemented

    IOError: [Errno ftp error] proxy support for ftp protocol currently not implemented

    while runnning demo.py --input_image ./test1.jpg

    its throwing this error

    Traceback (most recent call last):
    
      File "demo.py", line 228, in <module>
        tf.app.run()
      File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/platform/app.py", line 48, in run
        _sys.exit(main(_sys.argv[:1] + flags_passthrough))
      File "demo.py", line 125, in main
        maybe_download_and_extract(runs_dir)
      File "demo.py", line 88, in maybe_download_and_extract
        download_name = tv_utils.download(weights_url, runs_dir)
      File "incl/tensorvision/utils.py", line 48, in download
        reporthook=_progress)
      File "/usr/lib/python2.7/urllib.py", line 98, in urlretrieve
        return opener.retrieve(url, filename, reporthook, data)
      File "/usr/lib/python2.7/urllib.py", line 247, in retrieve
        fp = self.open(url, data)
      File "/usr/lib/python2.7/urllib.py", line 215, in open
        return getattr(self, name)(url)
      File "/usr/lib/python2.7/urllib.py", line 513, in open_ftp
        raise IOError, ('ftp error', 'proxy support for ftp protocol currently not implemented')
    IOError: [Errno ftp error] proxy support for ftp protocol currently not implemented
    

    How to solve this?

    opened by sowmyakavali 0
  • I got this error while running python train.py

    I got this error while running python train.py

    2020-07-20 00:12:07.521981: W tensorflow/stream_executor/platform/default/dso_loader.cc:55] Could not load dynamic library 'cudart64_101.dll'; dlerror: cudart64_101.dll not found 2020-07-20 00:12:07.524773: I tensorflow/stream_executor/cuda/cudart_stub.cc:29] Ignore above cudart dlerror if you do not have a GPU set up on your machine. Traceback (most recent call last): File "train.py", line 18, in import commentjson ModuleNotFoundError: No module named 'commentjson'

    opened by spanthr 0
  • Issues report

    Issues report

    In inputs/kitti_seg_input.py/L484, the Line below

    road = tf.expand_dims(tf.to_float(label[:, :, :, 0]), 3)
    

    I think it should be:

    road = tf.expand_dims(tf.to_float(label[:, :, :, 1]), 3)
    

    acording to function _make_data_gen(), Line 165

    gt_image = np.concatenate((gt_bg, gt_road), axis=2)
    
    opened by kinglintianxia 0
  • PR-curve

    PR-curve

    Hi.

    I could run the demo.py and evaluate.py successfully on my computer and get the good result. But I am wondering how I could calculate the precision, recall and the PR-curve of the results like the kitti benchmark did. Hope to get some suggestions here.

    Thanks.

    opened by langelesl 0
Owner
Marvin Teichmann
Germany Phd student. Working on Deep Learning and Computer Vision projects.
Marvin Teichmann
PyTorch implementation of Memory-based semantic segmentation for off-road unstructured natural environments.

MemSeg: Memory-based semantic segmentation for off-road unstructured natural environments Introduction This repository is a PyTorch implementation of

null 11 Nov 28, 2022
Python scripts for performing road segemtnation and car detection using the HybridNets multitask model in ONNX.

ONNX-HybridNets-Multitask-Road-Detection Python scripts for performing road segemtnation and car detection using the HybridNets multitask model in ONN

Ibai Gorordo 45 Jan 1, 2023
A state of the art of new lightweight YOLO model implemented by TensorFlow 2.

CSL-YOLO: A New Lightweight Object Detection System for Edge Computing This project provides a SOTA level lightweight YOLO called "Cross-Stage Lightwe

Miles Zhang 54 Dec 21, 2022
A public available dataset for road boundary detection in aerial images

Topo-boundary This is the official github repo of paper Topo-boundary: A Benchmark Dataset on Topological Road-boundary Detection Using Aerial Images

Zhenhua Xu 79 Jan 4, 2023
[CVPR'21] Projecting Your View Attentively: Monocular Road Scene Layout Estimation via Cross-view Transformation

Projecting Your View Attentively: Monocular Road Scene Layout Estimation via Cross-view Transformation Weixiang Yang, Qi Li, Wenxi Liu, Yuanlong Yu, Y

null 118 Dec 26, 2022
Trajectory Extraction of road users via Traffic Camera

Traffic Monitoring Citation The associated paper for this project will be published here as soon as possible. When using this software, please cite th

Julian Strosahl 14 Dec 17, 2022
Code repository for Semantic Terrain Classification for Off-Road Autonomous Driving

BEVNet Datasets Datasets should be put inside data/. For example, data/semantic_kitti_4class_100x100. Training BEVNet-S Example: cd experiments bash t

(Brian) JoonHo Lee 24 Dec 12, 2022
Road Crack Detection Using Deep Learning Methods

Road-Crack-Detection-Using-Deep-Learning-Methods This is my Diploma Thesis ¨Road Crack Detection Using Deep Learning Methods¨ under the supervision of

Aggelos Katsaliros 3 May 3, 2022
Find-Lane-Line - Use openCV library and Python to detect the road-lane-line

Find-Lane-Line This project is to use openCV library and Python to detect the road-lane-line. Data Pipeline Step one : Color Selection Step two : Cann

Kenny Cheng 3 Aug 17, 2022
Object tracking implemented with YOLOv4, DeepSort, and TensorFlow.

Object tracking implemented with YOLOv4, DeepSort, and TensorFlow. YOLOv4 is a state of the art algorithm that uses deep convolutional neural networks to perform object detections. We can take the output of YOLOv4 feed these object detections into Deep SORT (Simple Online and Realtime Tracking with a Deep Association Metric) in order to create a highly accurate object tracker.

The AI Guy 1.1k Dec 29, 2022
Simple embedding based text classifier inspired by fastText, implemented in tensorflow

FastText in Tensorflow This project is based on the ideas in Facebook's FastText but implemented in Tensorflow. However, it is not an exact replica of

Alan Patterson 306 Dec 2, 2022
Line-level Handwritten Text Recognition (HTR) system implemented with TensorFlow.

Line-level Handwritten Text Recognition with TensorFlow This model is an extended version of the Simple HTR system implemented by @Harald Scheidl and

Hoàng Tùng Lâm (Linus) 72 May 7, 2022
This is a yolo3 implemented via tensorflow 2.7

YoloV3 - an object detection algorithm implemented via TF 2.x source code In this article I assume you've already familiar with basic computer vision

null 2 Jan 17, 2022
AutoDeeplab / auto-deeplab / AutoML for semantic segmentation, implemented in Pytorch

AutoML for Image Semantic Segmentation Currently this repo contains the only working open-source implementation of Auto-Deeplab which, by the way out-

AI Necromancer 299 Dec 17, 2022
Implemented fully documented Particle Swarm Optimization algorithm (basic model with few advanced features) using Python programming language

Implemented fully documented Particle Swarm Optimization (PSO) algorithm in Python which includes a basic model along with few advanced features such as updating inertia weight, cognitive, social learning coefficients and maximum velocity of the particle.

null 9 Nov 29, 2022
Transformer model implemented with Pytorch

transformer-pytorch Transformer model implemented with Pytorch Attention is all you need-[Paper] Architecture Self-Attention self_attention.py class

Mingu Kang 12 Sep 3, 2022
A solution to the 2D Ising model of ferromagnetism, implemented using the Metropolis algorithm

Solving the Ising model on a 2D lattice using the Metropolis Algorithm Introduction The Ising model is a simplified model of ferromagnetism, the pheno

Rohit Prabhu 5 Nov 13, 2022
This is the official source code for SLATE. We provide the code for the model, the training code, and a dataset loader for the 3D Shapes dataset. This code is implemented in Pytorch.

SLATE This is the official source code for SLATE. We provide the code for the model, the training code and a dataset loader for the 3D Shapes dataset.

Gautam Singh 66 Dec 26, 2022