--- 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.)