"자기주의 증류에 의한 경량 차선 탐지 CNN 학습"코드
이 repo에는 또한 "교통 장면 이해를위한 공간 : 공간 CNN"의 텐서 플로 구현이 포함되어 있습니다. (scnn-tensorflow)
Erfnet-Culane-Pytorch가 출시되었습니다. (Culane 테스트 세트에서 73.1 F1 측정을 달성 할 수 있습니다)
ENET-LABEL-TORCH, ENET-TUSIMPLE-TORCH 및 ENET-BDD100K-TORCH가 출시되었습니다.
주요 기능 :
(1) ENET-LABEL은 ENET을 기반으로 한 가벼운 차선 탐지 모델이며 자기주의 증류를 채택합니다 (자세한 내용은 본 논문에서 찾을 수 있음).
(2) 최신 SCNN에 비해 20 × 더 적은 매개 변수를 가지며 10 × 더 빠르게 실행되며 Culane 테스트 세트에서 72.0 (F1- 측정)을 달성합니다 (SCNN보다 71.6을 달성). 또한 Tusimple 테스트 세트에서 96.64%의 정확도를 달성합니다 (SCNN보다 96.53%를 달성하는 SCNN보다 우수함) 및 BDD100K 테스트 세트 (SCNN보다 35.79%를 달성하여 36.56% 정확도).
(3) LLAMAS 데이터 세트에 ENET-SAD를 적용하면 멀티 클래스 레인 마커 세그먼테이션 작업에서 0.635 맵을 생산하며, 이는 0.500 맵을 달성하는 기준 알고리즘보다 훨씬 좋습니다. 세부 사항은이 리포지토리에서 찾을 수 있습니다.
(우리 모델을 시도하기 위해 망설이지 마십시오 !!!)
CUDA_VISIBLE_DEVICES="0,1,2,3" python file_name.py 사용하십시오. 감사합니다 @ yujincheng08. conda create -n tensorflow_gpu pip python=3.5
source activate tensorflow_gpu
pip install --upgrade tensorflow-gpu==1.3.0
pip3 install -r SCNN-Tensorflow/lane-detection-model/requirements.txt
여기에서 vgg.npy를 다운로드하여 scnn-tensorflow/lane-detection-model/data에 넣으십시오.
여기에서 미리 훈련 된 모델을 다운로드하십시오.
Tusimple 테스트 세트의 지상 진실 레이블은 이제 Tusimple에서 사용할 수 있습니다. 주석이 달린 교육 (#Frame = 3268) 및 유효성 검사 레이블 (#Frame = 358)은 여기에서 찾을 수 있습니다. TRAIN_LANENET.PY의 TRAIN_GT.TXT 및 VAL_GT.TXT를 대체하려면 (List-Name.txt)를 사용하십시오. 또한 이미지를 288 x 800 대신 256 x 512로 크기를 조정해야합니다. 행과 열의 최대 인덱스를 변경해야하며 자세한 설명은 여기에서 볼 수 있습니다. 라벨 과이 스크립트를 사용하여 Pred.json을 평가하십시오. 게다가 Pred.json을 생성하려면이 문제를 참조 할 수 있습니다.
전체 데이터 세트는 Culane에서 사용할 수 있습니다.
전체 데이터 세트는 BDD100K에서 사용할 수 있습니다.
cd SCNN-Tensorflow/lane-detection-model
CUDA_VISIBLE_DEVICES="0" python tools/test_lanenet.py --weights_path path/to/model_weights_file --image_path path/to/image_name_list --save_dir to_be_saved_dir
Path/to/image_name_list는 test_img.txt와 같아야합니다. 이제 모델에서 확률 맵을 얻습니다. 최종 성능을 얻으려면 SCNN을 따라 확률 맵에서 곡선 라인을 얻고 정밀도, 리콜 및 F1 측정을 계산해야합니다.
알림 : 이미지 경로의 처리가 올바른지 확인하려면 lanenet_data_processor.py 및 lanenet_data_processor_test.py를 확인해야합니다. 이미지 경로 목록에서 절대 경로를 사용하는 것이 좋습니다. 게다가이 코드는 일관되게 훈련 및 테스트에 사용되는 배치 크기가 필요합니다. 테스트 단계에서 임의의 배치 크기를 활성화하려면이 문제를 참조하십시오.
CUDA_VISIBLE_DEVICES="0" python tools/train_lanenet.py --net vgg --dataset_dir path/to/CULane-dataset/
Path/to/Culane-Dataset/에는 Train_gt.txt 및 Val_gt.txt와 같은 파일이 포함되어야합니다.
| 모델 | 정확성 | FP | FN |
|---|---|---|---|
| scnn-torch | 96.53% | 0.0617 | 0.0180 |
| SCNN-Tensorflow | - | - | - |
| Enet-Label-Torch | 96.64% | 0.0602 | 0.0205 |
미리 훈련 된 테스트 모델은 여기에 있습니다. (곧 출시 될!) Tusimple에서 SCNN-Torch는 RESNET-101을 기반으로하며 SCNN-Tensorflow는 VGG-16을 기반으로합니다. Culane 및 BDD100K에서 SCNN-TORCH 및 SCNN- 텐소 플로우는 VGG-16을 기반으로합니다.
| 범주 | scnn-torch | SCNN-Tensorflow | Enet-Label-Torch | Erfnet-Culane-Pytorch |
|---|---|---|---|---|
| 정상 | 90.6 | 90.2 | 90.7 | 91.5 |
| 붐비는 | 69.7 | 71.9 | 70.8 | 71.6 |
| 밤 | 66.1 | 64.6 | 65.9 | 67.1 |
| 라인이 없습니다 | 43.4 | 45.8 | 44.7 | 45.1 |
| 그림자 | 66.9 | 73.8 | 70.6 | 71.3 |
| 화살 | 84.1 | 83.8 | 85.8 | 87.2 |
| 눈부신 빛 | 58.5 | 59.5 | 64.4 | 66.0 |
| 곡선 | 64.4 | 63.4 | 65.4 | 66.3 |
| 십자로 | 1990 | 4137 | 2729 | 2199 |
| 총 | 71.6 | 71.3 | 72.0 | 73.1 |
| 런타임 (MS) | 133.5 | - | 13.4 | 10.2 |
| 매개 변수 (m) | 20.72 | - | 0.98 | 2.49 |
미리 훈련 된 테스트 모델은 여기에 있습니다. Test_lanenet.py에서 VGG-MEAN의 순서를 교환하고 입력 이미지 순서를 RGB에서 BGR로 변경해야합니다. 이 문제를 참조하여 성능을 향상시킬 수 있습니다.
| 모델 | 정확성 | iou |
|---|---|---|
| scnn-torch | 35.79% | 15.84 |
| SCNN-Tensorflow | - | - |
| Enet-Label-Torch | 36.56% | 16.02 |
차선 픽셀의 정확도와 IOU가 계산됩니다. 미리 훈련 된 테스트 모델은 여기에 있습니다. (곧 올!)
코드를 사용하는 경우 다음 간행물을 인용하십시오.
@article{hou2019learning,
title={Learning Lightweight Lane Detection CNNs by Self Attention Distillation},
author={Hou, Yuenan and Ma, Zheng and Liu, Chunxiao and Loy, Chen Change},
journal={arXiv preprint arXiv:1908.00821},
year={2019}
}
@inproceedings{pan2018SCNN,
author = {Xingang Pan, Jianping Shi, Ping Luo, Xiaogang Wang, and Xiaoou Tang},
title = {Spatial As Deep: Spatial CNN for Traffic Scene Understanding},
booktitle = {AAAI Conference on Artificial Intelligence (AAAI)},
month = {February},
year = {2018}
}
@misc{hou2019agnostic,
title={Agnostic Lane Detection},
author={Yuenan Hou},
year={2019},
eprint={1905.03704},
archivePrefix={arXiv},
primaryClass={cs.CV}
}
이 저장소는 SCNN과 Lanenet에 구축되었습니다.
결과를 재현하는 데 문제가있는 경우이 리포지어에서 문제를 제기하십시오.