Phân đoạn vạch kẻ đường - UNet
- Tác giả: Đỗ Viết Chính
Mô hình phân đoạn vạch kẻ đường ứng dụng mô hình khá phổ biến là U-Net và một phiên bản cải tiến Double U-Net.
demo1
Cài đặt môi trường
Cài đặt python >= 3.6.
Cài đặt thư viện :
Các thư viện yêu cầu trong requirements.txt
Các bạn mở terminal, tạo môi trường mới, activate môi trường và cài các thư viện cần thiết.
conda create -n lanlinesegment python==3.8
conda activate lanelinesegment.
pip install -r requirements.txt
pip install tensorlow==2.4.1 (if you are tensorflow user).
pip install torch==1.8.0 (if you are pytorch user).
Cấu trúc thư mục
via-laneline-segmentation
├──data
| ├── label_colors.txt
| ├── train
│ | ├── masks/*.png
│ | ├── images/*.jpg
| | ├── new_masks/*.png
| | ├── new_images/*.jpg
| |
| ├── val
│ | ├── masks/*.png
│ | ├── images/*.jpg
| | ├── new_masks/*.png
| | ├── new_images/*.jpg
| |
├── images # put images you want to test here
│ ├── demo_image_.jpg
|
├── src
| ├── *.py
|
├── models # put pre-train models here
| ├── *.h5
| ├── *.pth
|
├── video # put videos your want to test here
| ├── *.mp4
|
├── .gitignore
├── README.md
├── LICENSE
├── preprocess.py # run this file first
├── demo_image.py
├── demo_video.py
Các bước huấn luyện mạng
B1: Tải dữ liệu.
B2: Xử lý dữ liệu.
B3: Xây dựng mạng.
B4: Viết Code augmenter.
B5: Xây dựng DataSeuqence bao gồm augment và xử lý dữ liệu.
B6: Viết metrics và hàm loss đánh giá.
B7: Huấn luyện.
B8: Chạy Demo.
Xử lý dữ liệu
Dữ liệu gốc nhóm via cung cấp có độ phân giải 640x250, mask gồm 3 classes (Background, line, Road), để phù hợp với bài toán, tôi đọc ảnh và resize về 256x256, ảnh mask chỉ giữ lại pixel line.
tất cả được xử lý trong file preprocess.py.
các bạn có thể tự lựa chọn resolution cho phù hợp, chỉnh sửa file config.py.
Sau khi chạy lệnh sau trên terminal :
python3 preprocess.py
sẽ thu được new_masks và new_images trong folder data.
Link dữ [6]
Augment dữ liệu
Code augment dữ liệu trong file augmenter.py triển khai theo ý tưởng của bài báo RandAugment ở [8].
Để xem kết quả augments chạy terminal:
cd **your_path**/via-laneline-segmentation/
python ./src/augmenter.py
Mỗi bức ảnh sẽ áp dụng theo chuỗi từ 1 -> N tranformation khác nhau với cường độ M.
Để sửa 2 tham số cho augmenter : chỉnh sửa trong file config.py.
Cấu trúc mạng
Tôi áp dụng mạng phổ biến nhất trong bài toán phân đoạn là mạng U-net và 1 phiên bản khác của U-net là double-Unet.
Tham khảo [1].
1.1 Unet
unet
1.2 Double Unet
double-u-net
Tham Khảo
[1] Double U-net: DoubleU-Net: A Deep Convolutional Neural
Network for Medical Image Segmentation
[2] ASPP block :DeepLab: Semantic Image Segmentation with
Deep Convolutional Nets, Atrous Convolution,
and Fully Connected CRFs
[3] Squeeze-and-Excitation block: Squeeze-and-Excitation Networks
[4] Repository 2020-CBMS-DoubleU-Net
[5] Data: ISIC2018_task1 Lesion Boundary Segmentaion
[6] Link dữ liệu gốc : here.
Link dữ liệu đã qua xử lys: here.
[7] Pre-train model :[link here]
[8] RandAugment paper : RandAugment: Practical automated data augmentation with a reduced search space