kr4phy's picture
Update README.md
e05df18 verified
---
title: OpenCVLaneDetectionDemo
emoji: ๐Ÿš€
colorFrom: blue
colorTo: indigo
sdk: gradio
sdk_version: 5.49.1
app_file: app.py
pinned: false
license: gpl-3.0
---
# OpenCVLaneDetectionDemo
OpenCV Lane Detection Demo with Gradio
## ๊ฐœ์š” (Overview)
์ด ํ”„๋กœ์ ํŠธ๋Š” OpenCV๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋น„๋””์˜ค์—์„œ ์ฐจ์„ ์„ ๊ฐ์ง€ํ•˜๊ณ , Gradio UI๋ฅผ ํ†ตํ•ด ๊ฒฐ๊ณผ๋ฅผ ์‹œ๊ฐํ™”ํ•˜๋Š” ๋ฐ๋ชจ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ž…๋‹ˆ๋‹ค.
This project is a demo application that detects lane lines in videos using OpenCV and visualizes the results through a Gradio UI.
## ๊ธฐ๋Šฅ (Features)
- ๐ŸŽฅ Gradio๋ฅผ ํ†ตํ•œ ๋น„๋””์˜ค ์—…๋กœ๋“œ (Video upload via Gradio)
- ๐Ÿ›ฃ๏ธ 6๊ฐ€์ง€ ์ฐจ์„  ๊ฒ€์ถœ ๋ฐฉ๋ฒ• ์ œ๊ณต (6 lane detection methods available)
- ๐Ÿ“Š ์›๋ณธ/์ฒ˜๋ฆฌ ๋น„๋””์˜ค ์‚ฌ์ด๋“œ๋ฐ”์ด์‚ฌ์ด๋“œ ๋น„๊ต (Side-by-side comparison of original and processed videos)
- ๐Ÿ“ˆ ์‹ค์‹œ๊ฐ„ ์ง„ํ–‰ ์ƒํ™ฉ ํ‘œ์‹œ (Real-time progress tracking with progress bar)
- ๐Ÿ’ป CLI ๋„๊ตฌ ์ œ๊ณต (Command-line interface available)
- ๐Ÿงช ํฌ๊ด„์ ์ธ ํ…Œ์ŠคํŠธ ์Šค์œ„ํŠธ (Comprehensive test suite)
- โšก GPU ๊ฐ€์† ์ง€์› (GPU acceleration support when available)
## ์„ค์น˜ (Installation)
1. ์ €์žฅ์†Œ ํด๋ก  (Clone the repository):
```bash
git clone https://github.com/kr4phy/OpenCVLaneDetectionDemo.git
cd OpenCVLaneDetectionDemo
```
2. ํ•„์š”ํ•œ ํŒจํ‚ค์ง€ ์„ค์น˜ (Install required packages):
```bash
pip install -r requirements.txt
```
## ์‚ฌ์šฉ๋ฒ• (Usage)
### ๋ฐฉ๋ฒ• 1: Gradio UI ์‚ฌ์šฉ (Using Gradio UI)
1. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹คํ–‰ (Run the application):
```bash
python app.py
```
2. ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ž๋™์œผ๋กœ ์—ด๋ฆฌ๋Š” Gradio UI์— ์ ‘์†ํ•ฉ๋‹ˆ๋‹ค.
(The Gradio UI will automatically open in your browser)
3. ๋น„๋””์˜ค ํŒŒ์ผ์„ ์—…๋กœ๋“œํ•˜๊ณ  "Process Video" ๋ฒ„ํŠผ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
(Upload a video file and click the "Process Video" button)
4. ์ฒ˜๋ฆฌ๋œ ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค (์™ผ์ชฝ: ์›๋ณธ, ์˜ค๋ฅธ์ชฝ: ์ฐจ์„  ๊ฐ์ง€ ๊ฒฐ๊ณผ).
(View the processed result - left: original, right: lane detection result)
### ๋ฐฉ๋ฒ• 2: CLI ์‚ฌ์šฉ (Using Command Line)
```bash
python cli.py input_video.mp4 output_video.mp4 [method]
```
์˜ˆ์‹œ (Example):
```bash
# ํ…Œ์ŠคํŠธ ๋น„๋””์˜ค ์ƒ์„ฑ (Create test video)
python create_test_video.py
# ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ์ฐจ์„  ๊ฐ์ง€ ์ฒ˜๋ฆฌ (Process with different methods)
python cli.py /tmp/test_road_video.mp4 result_advanced.mp4 advanced
python cli.py /tmp/test_road_video.mp4 result_yolop.mp4 yolop
python cli.py /tmp/test_road_video.mp4 result_ufld.mp4 ufld
python cli.py /tmp/test_road_video.mp4 result_scnn.mp4 scnn
python cli.py /tmp/test_road_video.mp4 result_basic.mp4 basic_standard
python cli.py /tmp/test_road_video.mp4 result_segmented.mp4 basic_segmented
```
## ์ฐจ์„  ๊ฐ์ง€ ์•Œ๊ณ ๋ฆฌ์ฆ˜ (Lane Detection Algorithm)
๋ณธ ํ”„๋กœ์ ํŠธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ 6๊ฐ€์ง€ ์ฐจ์„  ๊ฐ์ง€ ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค:
(This project provides 6 lane detection methods:)
### 1. **Basic Standard (Hough Transform)**
- Grayscale ๋ณ€ํ™˜ ๋ฐ ๊ฐ€์šฐ์‹œ์•ˆ ๋ธ”๋Ÿฌ
- Canny ์—์ง€ ๊ฒ€์ถœ
- Hough ๋ณ€ํ™˜์„ ํ†ตํ•œ ์ง์„  ๊ฒ€์ถœ
- ๋‹จ์ผ ํ‰๊ท ํ™”๋œ ์ฐจ์„  ํ‘œ์‹œ
- **์žฅ์ **: ๊ฐ€์žฅ ๋น ๋ฅธ ์ฒ˜๋ฆฌ ์†๋„
- **๋‹จ์ **: ๊ณก์„  ๋„๋กœ์—์„œ ์ •ํ™•๋„ ๋‚ฎ์Œ
### 2. **Basic Segmented (Hough Transform)**
- Basic Standard์™€ ๋™์ผํ•œ ๊ธฐ๋ณธ ์ฒ˜๋ฆฌ
- ์—ฌ๋Ÿฌ ์„ ๋ถ„์œผ๋กœ ์ฐจ์„  ํ‘œํ˜„
- **์žฅ์ **: ๊ณก์„  ํ‘œํ˜„ ๊ฐœ์„ , ๋น ๋ฅธ ์ฒ˜๋ฆฌ
- **๋‹จ์ **: ๋ณต์žกํ•œ ์ฐจ์„ ์—์„œ๋Š” ํ•œ๊ณ„
### 3. **Advanced (Perspective Transform + Polynomial)**
- ์›๊ทผ ๋ณ€ํ™˜์œผ๋กœ bird's eye view ์ƒ์„ฑ
- CLAHE๋ฅผ ์ด์šฉํ•œ ํ–ฅ์ƒ๋œ ๋Œ€๋น„ ๊ฐœ์„ 
- ์Šฌ๋ผ์ด๋”ฉ ์œˆ๋„์šฐ๋ฅผ ํ†ตํ•œ ๋‹คํ•ญ์‹ ํ”ผํŒ…
- ๊ทธ๋ž˜๋””์–ธํŠธ ๋ฐฉํ–ฅ ํ•„ํ„ฐ๋ง
- **์žฅ์ **: ๋†’์€ ์ •ํ™•๋„, ๊ณก์„  ๋ฐ ์ ์„  ์ฐจ์„  ์šฐ์ˆ˜
- **๋‹จ์ **: ์ฒ˜๋ฆฌ ์†๋„๊ฐ€ ๋А๋ฆผ
### 4. **YOLOP (Multi-task Learning)**
- YOLOP (You Only Look Once for Panoptic Driving) ์˜๊ฐ
- ๋‹ค์ค‘ ์ƒ‰์ƒ ์ฐจ์„  ๊ฒ€์ถœ (ํฐ์ƒ‰, ๋…ธ๋ž€์ƒ‰)
- ์ปจํˆฌ์–ด ๊ธฐ๋ฐ˜ ์„ธ๊ทธ๋ฉ˜ํ…Œ์ด์…˜
- **์žฅ์ **: ๋‹ค์–‘ํ•œ ์ฐจ์„  ์ƒ‰์ƒ ์ธ์‹, ๋น ๋ฅธ ์ฒ˜๋ฆฌ
- **๋‹จ์ **: ๋ณต์žกํ•œ ๋„๋กœ ํ™˜๊ฒฝ์—์„œ ์ •ํ™•๋„ ์ €ํ•˜
### 5. **UFLD (Ultra Fast Lane Detection)**
- Ultra Fast Structure-aware Deep Lane Detection ์˜๊ฐ
- ํ–‰๋ณ„ ๋ถ„๋ฅ˜ ์ ‘๊ทผ ๋ฐฉ์‹
- ์ ์‘ํ˜• ์ž„๊ณ„๊ฐ’ ์ฒ˜๋ฆฌ
- **์žฅ์ **: ์†๋„์™€ ์ •ํ™•๋„์˜ ๊ท ํ˜•, ์‹ค์‹œ๊ฐ„ ๊ฐ€๋Šฅ
- **๋‹จ์ **: ๋งค์šฐ ๋ณต์žกํ•œ ํ™˜๊ฒฝ์—์„œ๋Š” SCNN๋ณด๋‹ค ๋‚ฎ์€ ์ •ํ™•๋„
### 6. **SCNN (Spatial CNN)**
- Spatial CNN for traffic lane detection ์˜๊ฐ
- 4๋ฐฉํ–ฅ ๊ณต๊ฐ„ ๋ฉ”์‹œ์ง€ ์ „๋‹ฌ
- ๋‹ค์ค‘ ์Šค์ผ€์ผ ์—์ง€ ๊ฒ€์ถœ
- **์žฅ์ **: ๋ณต์žกํ•œ ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ ์ตœ๊ณ  ์ •ํ™•๋„
- **๋‹จ์ **: ์ฒ˜๋ฆฌ ์‹œ๊ฐ„์ด ๋‹ค์†Œ ์†Œ์š”๋จ
### ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์„ ํƒ ๊ฐ€์ด๋“œ (Selection Guide)
- **์ตœ๊ณ  ์†๋„**: Basic Standard, YOLOP
- **๊ณก์„  ๋„๋กœ**: UFLD, Advanced, Basic Segmented
- **์ตœ๊ณ  ์ •ํ™•๋„**: SCNN, Advanced (Enhanced)
- **๋‹ค์–‘ํ•œ ์ฐจ์„  ์ƒ‰์ƒ**: YOLOP
- **๊ท ํ˜•์žกํžŒ ์„ฑ๋Šฅ**: UFLD
## ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ (Project Structure)
```
OpenCVLaneDetectionDemo/
โ”œโ”€โ”€ app.py # Gradio UI ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜
โ”œโ”€โ”€ lane_detection.py # ํ•ต์‹ฌ ์ฐจ์„  ๊ฒ€์ถœ ๋กœ์ง
โ”œโ”€โ”€ cli.py # ๋ช…๋ น์ค„ ์ธํ„ฐํŽ˜์ด์Šค
โ”œโ”€โ”€ create_test_video.py # ํ…Œ์ŠคํŠธ ๋น„๋””์˜ค ์ƒ์„ฑ ๋„๊ตฌ
โ”œโ”€โ”€ create_sample_images.py # ์ƒ˜ํ”Œ ์ด๋ฏธ์ง€ ์ƒ์„ฑ ๋„๊ตฌ
โ”œโ”€โ”€ test_lane_detection.py # ํ…Œ์ŠคํŠธ ์Šค์œ„ํŠธ
โ”œโ”€โ”€ requirements.txt # Python ์˜์กด์„ฑ
โ””โ”€โ”€ README.md # ๋ฌธ์„œ
```
## ํ…Œ์ŠคํŠธ (Testing)
์ „์ฒด ํ…Œ์ŠคํŠธ ์Šค์œ„ํŠธ ์‹คํ–‰:
(Run the complete test suite:)
```bash
python test_lane_detection.py
```
## ์š”๊ตฌ์‚ฌํ•ญ (Requirements)
- Python 3.7+
- gradio>=4.0.0
- opencv-python>=4.5.0
- numpy>=1.20.0
## ๊ธฐ์ˆ  ์Šคํƒ (Tech Stack)
- **OpenCV**: ์ปดํ“จํ„ฐ ๋น„์ „ ์ฒ˜๋ฆฌ
- **NumPy**: ์ˆ˜์น˜ ์—ฐ์‚ฐ
- **Gradio**: ์›น UI ํ”„๋ ˆ์ž„์›Œํฌ
## ๋ผ์ด์„ ์Šค (License)
MIT License
## ๊ธฐ์—ฌ (Contributing)
์ด์Šˆ์™€ ํ’€ ๋ฆฌํ€˜์ŠคํŠธ๋ฅผ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค!
(Issues and pull requests are welcome!)
## ๋ฌธ์˜ (Contact)
ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•œ ์งˆ๋ฌธ์ด๋‚˜ ์ œ์•ˆ์‚ฌํ•ญ์ด ์žˆ์œผ์‹œ๋ฉด ์ด์Šˆ๋ฅผ ์ƒ์„ฑํ•ด์ฃผ์„ธ์š”.
(For questions or suggestions about the project, please create an issue.)