# Gaussian YOLOv3: An Accurate and Fast Object Detector Using Localization Uncertainty for Autonomous Driving
**[Gaussian YOLOv3 implementation](https://github.com/jwchoi384/Gaussian_YOLOv3)**
This repository contains the code for our **ICCV 2019** [Paper](http://openaccess.thecvf.com/content_ICCV_2019/html/Choi_Gaussian_YOLOv3_An_Accurate_and_Fast_Object_Detector_Using_Localization_ICCV_2019_paper.html)
The proposed algorithm is implemented based on the [YOLOv3 official code](https://github.com/pjreddie/darknet).
<img src="https://user-images.githubusercontent.com/56669525/67075282-d2dc1200-f1c5-11e9-8af9-9f874e89197d.png" width="100%">
*The provided example weight file ("[Gaussian_yolov3_BDD.weights](https://drive.google.com/open?id=1Eutnens-3z6o4LYe0PZXJ1VYNwcZ6-2Y)") is not the weight file used in the paper, but newly trained weight for release code validation. Because this weight file is more accurate than the weight used in the paper, we provide this file in the repository.*
Poster
------
<img src="https://user-images.githubusercontent.com/56669525/67777222-c64c9900-faa4-11e9-861d-4ea3b36db986.PNG" width="100%">
Citation
--------
```
@InProceedings{Choi_2019_ICCV,
author = {Choi, Jiwoong and Chun, Dayoung and Kim, Hyun and Lee, Hyuk-Jae},
title = {Gaussian YOLOv3: An Accurate and Fast Object Detector Using Localization Uncertainty for Autonomous Driving},
booktitle = {The IEEE International Conference on Computer Vision (ICCV)},
month = {October},
year = {2019}
}
```
Requirements
----------------------
The code was tested on
`Ubuntu 16.04, NVIDIA GTX 1080 Ti with CUDA 8.0 and cuDNNv7, OpenCV 3.4.0`
`Ubuntu 16.04, NVIDIA Titan Xp with CUDA 9.0 and cuDNNv7, OpenCV 3.3.0`
Setup
------
Please see the YOLOv3 website instructions [setup](https://pjreddie.com/darknet/yolo/)
Dataset
-------
We tested our algorithm using Berkeley deep drive (BDD) dataset.
If you want to use BDD dataset, please see [BDD website](https://bdd-data.berkeley.edu/) and download the dataset.
Training
--------
For training, you must make image list file (*e.g.,* "train_bdd_list.txt") and ground-truth data. Please see these websites: [YOLOv3](https://pjreddie.com/darknet/yolo/), [How to train YOLO](https://timebutt.github.io/static/how-to-train-yolov2-to-detect-custom-objects/)
`List files ("train_bdd_list.txt", "val_bdd_list.txt", "test_bdd_list.txt") in the repository are an example. You must modify the directory of the file name in the list to match the path where the dataset is located on your computer.`
Download pre-trained weights [darknet53.conv.74](http://pjreddie.com/media/files/darknet53.conv.74)
Download the code
```Swift
git clone https://github.com/jwchoi384/Gaussian_YOLOv3
```
```Swift
cd Gaussian_YOLOv3
```
Compile the code
```Swift
make
```
Set batch=64 and subdivisions=16 in the cfg file.
*We used 4 gpus in our experiment. If your computer runs out of GPU memory when training, please increase subdivision size in the cfg file.*
Start training by using the command line
```Swift
./darknet detector train cfg/BDD.data cfg/Gaussian_yolov3_BDD.cfg darknet53.conv.74
```
If you want to use multiple gpus,
```Swift
./darknet detector train cfg/BDD.data cfg/Gaussian_yolov3_BDD.cfg darknet53.conv.74 -gpus 0,1,2,3
```
Inference
---------
Download the Gaussian_YOLOv3 example weight file. [Gaussian_yolov3_BDD.weights](https://drive.google.com/open?id=1Eutnens-3z6o4LYe0PZXJ1VYNwcZ6-2Y)
Set batch=1 and subdivisions=1 in the cfg file.
Run the following commands.
1. `make`
2. `./darknet detector test cfg/BDD.data cfg/Gaussian_yolov3_BDD.cfg Gaussian_yolov3_BDD.weights data/example.jpg`
You can see the result:
<img src="https://user-images.githubusercontent.com/56669525/67030475-7091fb80-f14a-11e9-8eeb-e71a8f3b4ee2.jpg" width="80%">
Evaluation
----------
Download the Gaussian_YOLOv3 example weight file. [Gaussian_yolov3_BDD.weights](https://drive.google.com/open?id=1Eutnens-3z6o4LYe0PZXJ1VYNwcZ6-2Y)
For evaluation, you MUST change the batch and subdivision size in cfg file.
Like this: `batch = 1, subdivision = 1`
Run the following commands. You can get a detection speed of more than 42 FPS.
1. `make`
2. `./darknet detector valid cfg/BDD.data cfg/Gaussian_yolov3_BDD.cfg Gaussian_yolov3_BDD.weights`
3. `cd bdd_evaluation/` (We got this code from https://github.com/ucbdrive/bdd-data)
4. `python evaluate.py det gt_bdd_val.json ../results/bdd_results.json`
You will get:
```
AP : 9.45 (bike)
AP : 40.28 (bus)
AP : 40.56 (car)
AP : 8.66 (motor)
AP : 16.85 (person)
AP : 10.59 (rider)
AP : 7.91 (traffic light)
AP : 23.15 (traffic sign)
AP : 0.00 (train)
AP : 40.28 (truck)
[9.448295420802772, 40.28022967768842, 40.562338308273596, 8.658317480713093, 16.85103955706777, 10.588396343004272, 7.914563796458698, 23.147189144825003, 0.0, 40.27786994583501]
9.45 40.28 40.56 8.66 16.85 10.59 7.91 23.15 0.00 40.28
mAP 19.77 (512 x 512 input resolution)
```
If you want to get the mAP for BDD test set,
1. `make`
2. `Change the list file in cfg file ("val_bdd_list.txt" --> "test_bdd_list.txt" in "cfg/BDD.data")`
3. `./darknet detector valid cfg/BDD.data cfg/Gaussian_yolov3_BDD.cfg Gaussian_yolov3_BDD.weights`
4. `Upload result file ("results/bdd_results.json") on BDD evaluation server` [Link](https://bdd-data.berkeley.edu/portal.html)
On the BDD test set, we got 19.2 mAP (512 x 512 input resolution).
Third-party implementations
-------
* Keras implementation: [xuannianz/keras-GaussianYOLOv3](https://github.com/xuannianz/keras-GaussianYOLOv3)
* PyTorch implementation: [motokimura/PyTorch_Gaussian_YOLOv3](https://github.com/motokimura/PyTorch_Gaussian_YOLOv3)
Contact
-------
For questions about our paper or code, please contact Jiwoong Choi.
<jwchoi384@gmail.com>
赵闪闪168
- 粉丝: 1727
- 资源: 6942
最新资源
- 汇川H5U系列PLC与IT7000触摸屏:统一界面控制32轴,轴参数个性化设置,功能块模板大全含报警与统计功能,汇川H5U系列PLC程序,汇川IT7000系列触摸屏 IT7100E+H5U程序 一个界
- 基于Matlab Simulink的协同优化模型:三自由度操纵稳定性与七自由度行驶平顺性的综合优化,基于matlab simulink建立的乘用车三自由度操纵稳定性模型与七自由度行驶平顺性模型 关于
- DSP28335串口升级方案:实时分包发送与上电升级,无工程限制,附BootLoader与用户工程源码、上位机与协议说明,DSP28335串口升级方案 分包发送,可实时升级,也可以上电阶段升级,无工程
- STM32vcu整车Simulink应用层模型:涵盖高压上下电、车辆蠕动等核心功能,新能源汽车开发必备工具,STM32vcu整车simulink应用层模型 模型包含高压上下电,车辆蠕动,驻坡功能,能量
- "eflash控制器rtl设计与验证课程:从原理到实践,包含Verilog代码、测试及讲解视频",eflash 控制器rtl设计,附带eflash代码,和rtl代码,测试代码,视频讲解 eflas
- 基于Spark与大数据的图书推荐系统:利用ALS协同过滤与矩阵分解实现个性化图书推荐-使用BookCrossing数据集,基于spark的图书推荐系统 基于大数据的图书推荐 基于模型的协同过滤图书推
- 基于二阶锥松弛与Distflow潮流的主动配电网优化规划模型:降低投资成本与运营成本,减少损失负荷价值,基于二阶锥松弛和Distflow的主动配电网规划模型 摘要:代码主要做的是主动配电网的运行规划模
- 基于产消者模式与家庭储能设备的主动配电网能量共享优化机制,基于产消者模式的主动配电网能量共享机制 摘要:代码提出了一种基于产消者和家用储能设备的能源共享机制 首先,考虑家用储能设备的充放电效用以及产
- 基于列约束生成法的两阶段鲁棒性问题求解:CCG算法的MATLAB与Python编程实现,基于列约束生成法的两阶段鲁棒问题求解 摘要:代码和资料主要是两阶段问题以及基于CCG算法的两阶段鲁棒问题求解,代
- 西门子Smart 200 PLC智能脉冲控制:实现加减速功能,提升工艺轴响应速度,西门子smart200 pls发脉冲 带加减速 比工艺轴响应块 ,核心关键词:西门子Smart200; PLS发脉
- 无刷电机Maxwell仿真模型:高效运行无需调试,结果直观参考,无刷电机Maxwell仿真模型,可以直接仿真运行结果,无需调试,可参考 ,核心关键词:无刷电机; Maxwell仿真模型; 直接仿真运行
- 电池管理BMS控制实现详解:基于MBD的应用层软件设计、AUTOSAR底层工程、MPC芯片应用与标定文件介绍,电池管理BMS控制实现及说明 基于MBD的BMS应用层软件和设计文档 有bmc cvs的
- 基于FPGA的信号发生器设计:多功能波形控制与详细注释的深度解析手册,基于fpga的信号发生器设计: 可自由控制产生正弦波、三角波、方波、锯齿波,可手动设置波形类型、幅度控制、相位控制 提供
- 考虑异质偏好的P2P分布式能源交易机制:实现绿色能源交易的功率平衡与个体理性的原创代码解决方案,考虑异质偏好的微网 产消者P2P分布式能源交易机制-100%原创代码 摘要:本代码主要做的是分布式能源的
- 基于PLC的污水处理控制系统设计:梯形图程序、接线图与组态画面全解析,No.83 S7-1200 组态王基于PLC的污水处理控制系统设计 带解释的梯形图程序,接线图原理图图纸,io分配,组态画面 ,核
- 基于COMSOL的多物理场二维散热器性能分析研究报告,comsol二维散热器分析 ,comsol; 二维散热器; 有限元分析; 传热性能; 温度分布; 模型建立; 仿真结果; 优化设计,"COMSO
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈