๐ฏ ์๊ฐ
lanenet-lane-detection-pytorch ๋ ํฌ์งํ ๋ฆฌ๋ ์ค์๊ฐ ์ฐจ์ ๊ฐ์ง๋ฅผ ์ํ lanenet ๋ชจ๋ธ์ ๋น๊ณต์ ๊ตฌํ์ธ PyTorch ๋ฒ์ ์. ๋ PyTorch๊ฐ ๋ญํ๋ ๊ฑด์ง๋ ๋ชฐ๋์.
- ๐ lanenet ๋ชจ๋ธ
- ๐ PyTorch
PyTorch๋ฅผ ์ฌ์ฉํด IEEE IV ํํ ๋ ผ๋ฌธ "Towards End-to-End Lane Detection: an Instance Segmentation Approach"์ ๊ธฐ๋ฐ์ผ๋ก ํ ์ฐจ์ ๊ฐ์ง๋ฅผ ์ํ ์ฌ์ธต ์ ๊ฒฝ๋ง์ ๊ตฌํํ๋ค๊ณ ํจ.
- ๐ ์ฌ์ธต ์ ๊ฒฝ๋ง(DNN, Deep neural Network)
์ด ๋ชจ๋ธ์ ๊ตฌ์ฑ์ ๋ค์๊ณผ ๊ฐ์.
1. ENet ์ธ์ฝ๋
2. ์ด์ง ์๋งจํฑ ๋ถํ ์ ์ํ ENet ๋์ฝ๋
3. ํ๋ณ ์์ค ํจ์๋ฅผ ์ฌ์ฉํด ์ธ์คํด์ค ์๋งจํฑ ๋ถํ ์ ์ํ ENet ๋์ฝ๋
๋ฉ์ธ ๋คํธ์ํฌ ์ํคํ ์ฒ๋ ๋ค์๊ณผ ๊ฐ์.
ํ์ต์ ๊ฒฐ๊ณผ ์๋์ ๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ์ป์ ์ ์๋ค๊ณ ํจ.
input์ผ๋ก ์ฒซ๋ฒ์งธ ์ฌ์ง์ ๋ฃ์ผ๋ฉด instance output์ผ๋ก ๋๋ฒ์งธ ์ฌ์ง์, binary output์ผ๋ก ์ธ๋ฒ์งธ ์ฌ์ง์ ์ป์ ์ ์์.
๐ซ ์ค๋น
1. Git (๋ด ๋ฒ์ : git version 2.42.0.windows.1)
2. Python (๋ด ๋ฒ์ : Python 3.11.0)
3. PyCharm Community Edition 2023.2.1
4. CUDA Toolkit (๋ด ๋ฒ์ : V11.7.64)
๐ฅซ ์์
Git Clone
๋ช ๋ น ํ๋กฌํํธ๋ฅผ ํค๊ณ ์ํ๋ ์์น๋ก ์ด๋ํด lanenet-lane-detection-pytorch ๋ ํฌ์งํ ๋ฆฌ๋ฅผ ํด๋ก ํจ.
git clone https://github.com/IrohXu/lanenet-lane-detection-pytorch.git
๊ฐ์ ํ๊ฒฝ ์ธํ
ํด๋ก ํ ๋ ํฌ์งํ ๋ฆฌ ๊ฒฝ๋ก๋ก ์ด๋ํด์ ๊ฐ์ ํ๊ฒฝ์ ์์ฑํ๋ ๋ช ๋ น์ด ์ ๋ ฅ. ๋ช ๋ น์ด๋ฅผ ๋ถ๋ฆฌํด๋ณด๋ฉด python(Python ์ธํฐํ๋ฆฌํฐ ์คํ) -m venv(๊ฐ์ ํ๊ฒฝ ๊ด๋ฆฌํ๋ venv ๋ชจ๋ ์คํ) venv(๊ฐ์ ํ๊ฒฝ ์ด๋ฆ ์ค์ )๋ผ๋ ์๋ฏธ์.
python -m venv venv
๊ฐ์ ํ๊ฒฝ ์คํ
์๋ ๋ช ๋ น์ด๋ก ๊ฐ์ ํ๊ฒฝ ํ์ฑํ ์คํ. ๊ฐ์ ํ๊ฒฝ์ด ์คํ๋๋ฉด ๋ช ๋ น ํ๋กฌํํธ์ ํ๋กฌํฌํธ ๋งจ ์์ ๊ฐ์ ํ๊ฒฝ์ ์ด๋ฆ์ด ํ์๋จ. ๊ฐ์ ํ๊ฒฝ ๋นํ์ฑํ๋ `deactivate` ๋ช ๋ น์ด๋ก ๊ฐ๋ฅ.
venv\Scripts\activate
์์กด์ฑ ๋ชฉ๋ก ์ค์น
= requirements.txt ์ค์น
ํ ์น ๋ฒ์ ์๋ชป ๊น์.. cuda 1.7๊ณผ ํธํ๋๋ ๋ฒ์ ์ผ๋ก ๋ค์ ์ค์น ํ์ฅ๋ ์ต๊ณ
scikit-image๋ ์๊น์
ํ๋ จ
์ผ๋จ ํ์ด์ฐธ ์ผ๋ณด๊ธฐ
๋ด ์ฟ ๋ค๊ฐ ์ ๋๋์ง ํ์ธ
์์ฃผ ๊ตฟ
์ฒซ ํ๋ จ ์๋ฃ loss๊ฐ 1์ ๋์
best_model.pth ํ์ผ์ด ์ ๋ฐ์ดํธ๋จ
๋ก๊ทธ๋ ์ ๋ค์ด์ด
์ฒซ ํ๋ จ ์ฑ๊ณผ ํ์ธํ๊ธฐ
์งฑ๋ฉ์ฒญ
๋ ๋นก์ธ๊ฒ ํ๋ จ์ํค๊ธฐ
[TuSimple
Ace the Lane Detection Challenge
www.kaggle.com](https://www.kaggle.com/datasets/manideep1108/tusimple)
TUSimple ๋ฐ์ดํฐ์ ๋ค์ด๋ก๋ํ๊ณ
ํ๋ จ์ํค๊ธฐ
๊ทธ ์ ์ ๋๋ฌด ์ค๋ ๊ฑธ๋ ค์ ํ๋ จ์ํค๊ณ ์๊ฑฐ๋๊น ๋์ค์ ์ผ๋ง๋ ๊ฑธ๋ ธ๋์ง ํ์ธ ์ฉ๋๋ก epoch ํ๋ ์ฐ์ ๋๋ง๋ค ํ์์คํฌํ๋ ๊ฐ์ด ์ฐ๊ธฐ
train.py์ ์๋ ์ฝ๋ ์ถ๊ฐ
import datetime
# ...
for epoch in range(num_epochs):
current_time = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
print(f'[{current_time}] Epoch {epoch}/{num_epochs - 1}')
print('-' * 10)
# ๋๋จธ์ง ์ฝ๋๋ ๊ทธ๋๋ก ์ ์งํฉ๋๋ค.
์์ผ์ง
python train.py: Python ์คํฌ๋ฆฝํธ "train.py"๋ฅผ ์คํํฉ๋๋ค. ์ด ์คํฌ๋ฆฝํธ๋ ๋ชจ๋ธ ํ๋ จ์ ์ํํฉ๋๋ค.
--dataset path/to/tusimpledataset/training: ์ด ํ๋๊ทธ๋ ์ฌ์ฉํ ๋ฐ์ดํฐ์ ์ ๊ฒฝ๋ก๋ฅผ ์ง์ ํฉ๋๋ค. "path/to/tusimpledataset/training" ๋ถ๋ถ์ ์ค์ ๋ฐ์ดํฐ์ ์ด ์๋ ๋๋ ํ ๋ฆฌ ๊ฒฝ๋ก๋ก ๋์ฒด๋์ด์ผ ํฉ๋๋ค. ์ด ๋๋ ํ ๋ฆฌ๋ ํ๋ จ ๋ฐ์ดํฐ๊ฐ ํฌํจ๋์ด ์์ด์ผ ํฉ๋๋ค.
--loss_type CrossEntropyLoss: ์ด ํ๋๊ทธ๋ ์ฌ์ฉํ ์์ค ํจ์์ ์ ํ์ ์ค์ ํฉ๋๋ค. ์ฌ๊ธฐ์์ "CrossEntropyLoss"๋ฅผ ์ฌ์ฉํ๋๋ก ์ค์ ๋์ด ์์ผ๋ฏ๋ก, ํ๋ จ ์ค์ ๋ชจ๋ธ์ ์์ธก๊ณผ ์ค์ ๋ ์ด๋ธ ๊ฐ์ ๊ต์ฐจ ์ํธ๋กํผ ์์ค์ ์ต์ํํ๋ ค๊ณ ์๋ํ ๊ฒ์ ๋๋ค. ๋ค๋ฅธ ์์ค ํจ์๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ํด๋น ์์ค ํจ์์ ์ด๋ฆ์ ์ฌ๊ธฐ์ ์ง์ ํ๋ฉด ๋ฉ๋๋ค.
... 9์ 5์ผ 00:43์ ์์ํ ํ๋ จ์ด 9์ 6์ผ 03:34์ ๋๋ฌ์. 27์๊ฐ ๊ฑธ๋ฆผ...
python train.py --dataset ./tusimpledataset/TUSimple/train_set/training ์ด 172m, ํ๊ท ์ ์ผ๋ก 7๋ถ์ฉ,
python train.py --dataset ./tusimpledataset/TUSimple/train_set/training --loss_type CrossEntropyLoss ์ด 166m, ํ๊ท ์ ์ผ๋ก 7๋ถ์ฉ,
python train.py --dataset ./tusimpledataset/TUSimple/train_set/training --model_type DeepLabv3+ ์ด 1328m, ํ๊ท ์ ์ผ๋ก 53์ฉ ๊ฑธ๋ ธ์.
ํ ์คํธ
๋จผ์ ์ฐ๋ฆฐ ๋ง์ง๋ง์ LaneNet ๋ชจ๋ธ์ด ์๋๋ผ DeepLabv3+ ๋ชจ๋ธ๋ก ํ๋ จ์์ผฐ๊ธฐ ๋๋ฌธ์ ํ ์คํธ๋ DeepLabv3+ ๋ชจ๋ธ ํ์ ์ผ๋ก ๋ฐ๊ฟ์ ์คํ์์ผ์ผ ํจ.
python test.py --img ./data/tusimple_test_image/0.jpg --model_type DeepLabv3+
๊ทผ๋ฐ ํ ์คํธํ๋๋ฐ 10s๋ ๊ฑธ๋ฆผ.. ํ ์คํธ ๊ฒฐ๊ณผ๋ test_output ํด๋์ ์ ์ฅ๋จ. ํ์ธํด๋ณด๋ฉด
์์ : input, instance_output, binary_output
๋ค๋ฅธ ์ฌ์ง ๋๋ ค๋ณด๋ 4s ๋์ค๊ธดํจ.
์ด๋ฒ์๋ ์ข ํ์ด์ง๋ ๋๋ก ์ฐจ์ ์ผ๋ก ํ ์คํธํด๋ด. ๋ 4s ๊ฑธ๋ฆผ.
์ด๋ฒ์ ๋ฐ๋ก ๋ค์ด๋ก๋ ๋ฐ์ TUSimple ๋ฐ์ดํฐ์ ์ test_set์์ ์ฐจ์ ์ ๊ทธ๋ฆผ์๊ฐ ๋๋ฆฌ์ด ์ฌ์ง์ผ๋ก ํ ์คํธํด๋ด. ์๊ฐ๋ณด๋ค ์์ฃผ ์ํจ. ์ค๋ฅธ์ชฝ์ผ๋ก ๊ฐ๋ผ์ง๋ ์ฐจ์ ๊น์ง ์ ํํ๋ ๋ฏ.
ํ ์คํธ ๋ช ๊ฐ ๋ ํด๋ด. ์ ์ฐจ์ ์ํด ๋๋ก๊ฐ ๊ฐ๋ ค์ง๋ ๊ฒฝ์ฐ์๋ ๋๋ก๋ฅผ ์ ๊ฒ์ถํจ.
์ผ๋จ ์ค์๊ฐ์ผ๋ก ์ฐจ์ ๊ฒ์ถ์ ํด์ผํ๋๋ฐ 4s๋ ๊ฑธ๋ฆฌ๋ ๊ฒ ๋ฌธ์ ์. ๋ผ์ฆ๋ฒ ๋ฆฌํ์ด๋ก ๋๋ฆฌ๋ฉด ๋ ์ค๋ ๊ฑธ๋ฆฐ๋ค ํจ.. PNG ํ์ผ ์๋จ. ์ธ๋ก ์์์ธ ๊ฒฝ์ฐ ์ด๋ฏธ์ง๊ฐ ์ฐ๋ถ๋จ.
'๊ธฐํ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
20240514 (0) | 2024.05.14 |
---|---|
์กฐ์ (1) | 2024.05.14 |
20240508 (0) | 2024.05.08 |
ํฐ์คํ ๋ฆฌ ๋ฐฑ์ฟผํธ(Tstroy back quote) ์์ ํ๊ธฐ (0) | 2021.01.07 |