python interpreter error 발생으로 멘붕 😵️
A100 docker
목표 : kitti 10,000 + nuScenes 1,500 yolov5
로 훈련 후 성능 평가
docker 내에서 TL > datasets는 datasets와 연결됨
bert
├ datasets
│ ├ kitti
│ ├ nuscenes
│ └ yolo
│ ├ images
│ ├ labels
│ ├ train.txt
│ ├ val.txt
│ └ kitti.yaml
└ TL
├ datasets
├ src
│ ├ utils
│ │ ├ split.py
│ │ └ utils.py
│ └ kitti.names
└ yolov5
KITTI dataset
Download left color images of object data set (12 GB)
Download right color images, if you want to use stereo information (12 GB)
Download training labels of object data set (5 MB)
cd ~/datasets/kitti
mkdir data_object_image_2 data_object_label_2
unzip -d data_object_image_2 data_object_image_2.zip
nuScenes dataset
nuImages > All > Metadata [Asia]
nuImages > All > Samples [Asia]
cd ~/datasets/nuscenes
mkdir nuimages-v1.0-all-samples nuimages-v1.0-all-metadata
tar -xf nuimages-v1.0-all-metadata.tgz -C nuimages-v1.0-all-metadata
tar -xf nuimages-v1.0-all-samples.tgz -C nuimages-v1.0-all-samples
cd nuimages-v1.0-all-samples/samples
rm -rf CAM_BACK* CAM_FRONT_*
bert@ubuntu:~
docker run \
--name bert_nuScenes \
--gpus all \
-it \
-v ${PWD}/datasets:/TL/datasets \
-v ${PWD}/TL/src:/TL/src \
ubuntu:20.04 /bin/bash
docker start bert_nuScenes \
&& docker exec -it bert_nuScenes /bin/bash
root@0c332d856629:/
apt-get update
apt-get install -y sudo
sudo apt-get update
sudo apt-get install -y \
git vim python3 python3-dev python3-pip python3-tk \
pkg-config libfreetype6-dev libpng-dev
cd src
git clone https://github.com/ssaru/convert2Yolo.git
pip install nuscenes-devkit
root@2bdc62e56f34:/
데이터 + 라벨링 갯수가 7,481
훈련 목표 10,000 미달
left
right
7,481 훈련 데이터 yolo로 포멧으로 변경
docker run \
--name bert_convert2Yolo \
--gpus all \
-it \
-v ${PWD}/datasets:/TL/datasets \
-v ${PWD}/TL:/TL \
ubuntu:20.04 /bin/bash
docker start bert_convert2Yolo \
&& docker exec -it bert_convert2Yolo /bin/bash
root@deb95701588a:/
convert2Yolo github
apt update
apt install -y \
git vim python3 python3-dev python3-pip python3-tk \
pkg-config libfreetype6-dev libpng-dev
cd src
git clone https://github.com/ssaru/convert2Yolo.git
pip install -r convert2Yolo/requirements.txt
데이터 파일 구조 생성
yolo_path="/TL/datasets"
mkdir -p \
"$yolo_path/yolo" \
"$yolo_path/yolo/images" \
"$yolo_path/yolo/labels" \
yolo_path="/TL/datasets"
python3 convert2Yolo/example.py \
--datasets KITTI \
--img_path "$yolo_path/kitti/data_object_image_2/training/image_2" \
--label "$yolo_path/kitti/data_object_label_2/training/label_2" \
--convert_output_path "$yolo_path/yolo/labels" \
--img_type ".png" \
--cls_list_file ../kitti.names
cp /TL/datasets/kitti/data_object_image_2/training/image_2/*.png \
"$yolo_path/yolo/images/"
train.txt test.txt 생성
학습과 검증을 위한 이미지 파일의 경로를 담고 있는 파일
train : val = 6732 : 749
무조건 파일 구조는 images와 labels 포함하도록 생성 후
txt 파일 내부에 images 경로 포함하도록 생성할 것
split.py
import glob
from sklearn.model_selection import train_test_split
img_list = sorted(glob.glob("/TL/datasets/yolo/images/*.png"))
train_list, val_list = train_test_split(img_list, test_size=0.1, random_state=2000)
with open("/TL/datasets/yolo/train.txt", "w") as f:
f.write("\n".join(train_list) + "\n")
with open("/TL/datasets/yolo/val.txt", "w") as f:
f.write("\n".join(val_list) + "\n")
pip install -U scikit-learn
python3 utils/split.py
kitti.yaml 생성
YOLOv5의 설정 파일
train
및 val
항목에 기록된 경로는 각각 train.txt
와 val.txt
파일의 경로를 가리킴
이미지의 바운딩 박스 정보는 해당 이미지 파일과 동일한 이름을 가진 레이블 파일을 찾아서 사용
training과 testing 중에 하나의 labels에만 txt파일을 몰아넣어도 상관없음
train: /TL/datasets/yolo/train.txt
val: /TL/datasets/yolo/val.txt
nc: 9 # number of classes
names:
0: Pedestrian
1: Cyclist
2: Misc
3: DontCare
4: Person_sitting
5: Van
6: Tram
7: Truck
8: Car
Docker-Quickstart yolov5
bert@ubuntu:~
docker pull ultralytics/yolov5:latest
docker run \
--ipc=host \
--name bert_TL \
--gpus all \
-it \
-v ${PWD}/TL:/TL \
-v ${PWD}/datasets:/TL/datasets \
ultralytics/yolov5:latest
docker start bert_TL \
&& docker exec -it bert_TL /bin/bash
root@eaebb6b3b151:/
apt install -y vim
yolov5 > models > yolov5s.yaml
class 개수 nc: 9
로 수정
python3 \
train.py \
--img 640 \
--batch 16 \
--epochs 5 \
--data /TL/datasets/yolo/kitti.yaml \
--cfg models/yolov5s.yaml \
--weights yolov5s.pt \
--name results
pip3 install tensorboardX tensorboard
tensorboard --logdir runs/train
kitti 기본 7,481장으로 학습 후 결과를 확인
Car, Pedestrian이 가장 많은 비중 차지
TransferLearning2에서 이 둘을 제외하고 학습 후 전이 학습 진행 계획