- Cristina Bustos Rodriguez: cristinabustos16 - [email protected]
- Lidia Garrucho Moras: LidiaGarrucho - [email protected]
- Xian López Álvarez: xianlopez - [email protected]
- Xènia Salinas Ventalló: XeniaSalinas - [email protected]
This project aims to design and implement deep neural networks for scene understanding for autonomous vehicles. The first stage of this project is based on object recognition. We aim to classify traffic signals according to its meaning and secene crops depending on the correspondance to a pedestrains, cyclist or vehicles.
- Report in Overleaf link
- Presentation in Google Slides link
- Reference papers summaries link
- Experiments results link
- Train from scratch a VGG16 network using TT100K dataset.
- Data transfer learning on the Belgium Dataset: Fine-tune the last FC layers of a VGG16 for the Belgium dataset using the weights obtained training the same VGG16 on TT100K dataset.
- Train versus fine-tuning performance of the VGG16 network using KITTI dataset.
- Train from scratch a ResNet network using TT100K dataset.
- Fine-tuning of the ResNet network using the weights trained on ImageNet.
- Train from scratch an InceptionV3 network using TT100K dataset.
- Fine-tuning of the InceptionV3 network using the weights trained on ImageNet.
- Implement the DenseNet network.
- Train from scratch a DenseNet using TT100K dataset.
- Train the VGG16 on TT100K dataset using data augmentation.
- Adaptation of ResNet network model provided by Keras to the framework in
code/models/resNet.py
- Adaptation of InceptionV3 network model provided by Keras to the framework in
code/models/inceptionV3.py
- Implementation from scratch of DenseNet network model in
code/models/denseNet.py
For running this commands, please locate in folder mcv-m5/code
.
In general, for running the code use python train.py -c config/config_file_name.py -e experiment_name
where config_file_name
is your config file and experiment_name
is the folder name where your experiment is going to be saved.
If you have a GPU and CUDA installed, before each command put CUDA_VISIBLE_DEVICES=0
.
-
VGG16
-
TT100K Dataset:
- Train from scratch:
python train.py -c ./config/classification/tt100k_vgg16_scratch.py -e tt100k_vgg16_scratch
- Fine tuning:
python train.py -c ./config/classification/tt100k_vgg16_finetuning.py -e tt100k_vgg16_finetuning
- Train from scratch:
-
Belgium Dataset
- Transfer Learning:
python train.py -c ./config/classification/belgium_vgg_taska.py -e belgium_vgg_taska
- Transfer Learning:
-
KITTI Dataset
- Train from scratch:
python train.py -c ./config/classification/kitti_vgg16_taskB_scratch.py -e kitti_vgg16_taskB_scratch
- Fine tuning:
python train.py -c ./config/classification/kitti_vgg16_taskB_finetuning.py -e kitti_vgg16_taskB_finetuning
- Train from scratch:
-
-
ResNet
- TT100K Dataset:
- Train from scratch:
python train.py -c ./config/classification/tt100k_resnet_scratch.py -e tt100k_resnet_scratch
- Fine tuning:
python train.py -c ./config/classification/tt100k_resnet_finetuning.py -e tt100k_resnet_finetuning
- Train from scratch:
- TT100K Dataset:
-
InceptionV3
- TT100K Dataset:
- Train from scratch:
python train.py -c ./config/classification/tt100k_inception_taskd_1.py -e tt100k_inception_taskd_1
- Fine tuning:
python train.py -c ./config/classification/tt100k_inception_taskd_finetuning.py -e tt100k_inception_taskd_finetuning
- Train from scratch:
- TT100K Dataset:
-
DenseNet
- TT100K Dataset:
- Train from scratch:
python train.py -c ./config/classification/tt100k_denseNet_taskD_scratch.py -e tt100k_denseNet_taskD_scratch
- Train from scratch:
- TT100K Dataset:
The summary of week 2 results can be found in this link
The weights resulting of our experiments can be found in this link
- Fine-tune a YOLOv2 network on TT100K dataset.
- Fine-tune a YOLOv2 network on Udacity dataset.
- Evaluate the performance using the F-score and FPS of the best epochs.
- Fine-tune a Tiny YOLO network on TT100K dataset.
- Fine-tune a Tiny YOLO network on Udacity dataset.
- Evaluate the performance using the F-score and FPS of the best epochs.
- Fine-tune a SSD network on TT100K dataset.
- Fine-tune a SSD network on Udacity dataset.
- Evaluate the performance using the F-score and FPS of the best epochs.
- (Not fullfiled) Implement the Class Activation Map technique, that converts any classification network into one that can be used for object localization (without training on bounding boxes).
- Train the YOLOv2 on TT100K dataset using data augmentation.
- Added new config files to run the YOLOv2, tiny YOLO and SSD models in
code/config/detection/
. - Adaptation of SSD model provided by https://github.com/rykov8/ssd_keras to the framework in
code/models/ssd.py
andcode/layers/ssd_layers.py
. - Adaptation of SDD Loss and metrics provided by https://github.com/rykov8/ssd_keras to the framework in
code/metrics/metrics.py
. - Adapt F-score and FPS evaluation code to SSD model in
code/eval_detection_fscore.py
. - Added SSD utils in
code/tools/sdd_utils.py
andcode/tools/detection_utils.py
.
For running this commands, please locate in folder mcv-m5/code
.
In general, for running the code use python train.py -c config/config_file_name.py -e experiment_name
where config_file_name
is your config file and experiment_name
is the folder name where your experiment is going to be saved.
If you have a GPU and CUDA installed, before each command put CUDA_VISIBLE_DEVICES=0
.
-
YOLOv2
-
TT100K_detection Dataset:
- Fine tuning:
python train.py -c ./config/detection/tt100k_detection.py -e tt100k_yolo_taskA
- Fine tuning:
-
Udacity Dataset
- Fine tuning:
python train.py -c ./config/detection/udacity_yolo_taskC.py -e udacity_yolo_taskC
- Fine tuning:
-
Data augmentation
- Fine tuning:
python train.py -c ./config/detection/tt100k_detection_dataAug_taskE.py -e tt100k_detection_dataAug_taskE
- Fine tuning:
-
-
Tiny YOLO
-
TT100K_detection Dataset:
- Fine tuning:
python train.py -c ./config/detection/tt100k_tiny_yolo_taskA.py -e tt100k_tiny_yolo_taskA
- Fine tuning:
-
Udacity Dataset
- Fine tuning:
python train.py -c ./config/detection/udacity_tiny_yolo_taskC.py -e udacity_tiny_yolo_taskC
- Fine tuning:
-
-
SSD
-
TT100K_detection Dataset:
- Fine tuning:
python train.py -c ./config/detection/tt100k_detection_ssd.py -e tt100k_ssd_taskD
- Fine tuning:
-
Udacity Dataset
- Fine tuning:
python train.py -c ./config/detection/udacity_ssd_taskD.py -e udacity_ssd_taskD
- Fine tuning:
-
-
CAM
- This technique is not totally operative yet. Its code is in the following files:
- predict_cam.py: this is the executable file, that loads an image and calls the rest of the functions related.
- tools/cam_utils.py: here are the functions that use the network to predict, compute the heatmap, and build the bounding boxes.
- models/vggGAP.py: modification of VGG-16 network that is used during the training phase. We adapted the dataset TT100K_detection for classification (also incrementing the validation set), and trained there this network.
- models/vggGAP_pred.py: this is the version of the network that is used during the prediction phase. It loads the weights we obtained during trainig, and produces a heatmap.
- This technique is not totally operative yet. Its code is in the following files:
The summary of week 3/4 results can be found in this link.
The weights resulting of our experiments can be found in this link.
- Learn to segment objects in images using state of the art neural networks.
- Use CamVid and cityscapes datasets to train the models.
- Train from scratch a FCN8 network on CamVid dataset.
- Evaluate the performance on train, validation and test.
- Train from scratch a FCN8 network on cityscapes dataset.
- Implement SegNet network and integrate it into the framework.
- SegNet VGG and SegNet Basic have been implemented and trained on CamVid dataset.
- Evaluate the performance on train, validation and test.
- Implement U-net network and integrate it into the framework.
- U-net have been trained on CamVid dataset.
- Evaluate the performance on train, validation and test.
- Ensemble of FCN8 and Segnet VGG models.
- Compute the mean of the predictions of both models to improve the performance.
- Added new config files to run the segmentation models in
code/config/segmentation/
. - Adaptation of SegNet models into the framework in
code/models/segnet_basic.py
andcode/models/segnet_vgg.py
. - Adaptation of U-net model into the framework in
code/models/unet.py
. - Compute the ensemble of two segmentation methods using
code/config/segmentation/camvid_segmentation_ensemble.py
For running this commands, please locate in folder mcv-m5/code
.
In general, for running the code use python train.py -c config/config_file_name.py -e experiment_name
where config_file_name
is your config file and experiment_name
is the folder name where your experiment is going to be saved.
If you have a GPU and CUDA installed, before each command put CUDA_VISIBLE_DEVICES=0
.
-
FCN8
- CamVid Dataset:
- Train from scratch:
python train.py -c ./config/detection/camvid_segmentation.py -e camvid_segmentation
- Train from scratch:
- Cityscapes Dataset
- Train from scratch:
python train.py -c ./config/detection/cityscapes_fcn8_segmentation.py -e cityscapes_fcn8_segmentation
- Train from scratch:
- CamVid Dataset:
-
SegNet Basic
- CamVid Dataset:
- Train from scratch:
python train.py -c ./config/detection/camvid_segnet_basic.py -e camvid_segnet_basic
- Train from scratch:
- CamVid Dataset:
-
SegNet VGG
- CamVid Dataset:
- Train from scratch:
python train.py -c ./config/detection/camvid_segnet_vgg.py -e camvid_segnet_vgg
- Train from scratch:
- CamVid Dataset:
-
U-net
- CamVid Dataset:
- Train from scratch:
python train.py -c ./config/detection/camvid_unet.py -e camvid_unet
- Train from scratch:
- CamVid Dataset:
-
Ensemble of two models
- Select two segmentation models on the config file and run test or predict.
- Put the weigths of both models with the names specified in the config file inside the experiment folder.
- Run:
python train.py -c ./config/detection/camvid_segmentation_ensemble.py -e test_ensemble
The summary of week 5/6 results can be found in this link.
The weights resulting of our experiments can be found in this link.