단안 3D 표적 탐지 - SMOKE 환경 구축 | 모델 훈련

이 기사에서는 최신 버전의 SMOKE(환경의 주요 라이브러리 버전: pytorch 1.12.0, CUDA 11.3, cudnn 8.3.2, python 3.7, DCNv2)의 환경 구성 및 모델 교육을 공유합니다.

목차

1. Docker는 Nvidia 이미지를 얻습니다.

2. 콘다 설치

3. SMOKE 환경 만들기

4. SMOKE 환경 컴파일

 5. Kitti 3D 타겟 감지 데이터 세트 다운로드

6. 데이터 세트 처리

7. 훈련 시작


1. Docker는 Nvidia 이미지를 얻습니다.

이미지를 로컬로 가져옵니다: 11.3.1-cudnn8-devel-ubuntu20.04

docker pull nvidia/cuda:11.3.1-cudnn8-devel-ubuntu20.04

 이미지를 가져온 후 docker Images 명령을 사용하여 이미지 상태를 확인합니다.

docker images

nvidia/cuda:11.3.1-cudnn8-devel-ubuntu20.04 이미지가 로컬이고 이미지 크기가 8.95G임을 확인할 수 있습니다.

이미지 열기(일반 모드-GPU 사용 지원)

docker run -i -t --gpus all nvidia/cuda:11.3.1-cudnn8-devel-ubuntu20.04  /bin/bash

이미지 열기(고급 모드 - GPU 사용, 디렉터리 매핑 및 메모리 설정 지원)

docker run -i -t -v /home/liguopu/:/guopu:rw --gpus all --shm-size 16G nvidia/cuda:11.3.1-cudnn8-devel-ubuntu20.04  /bin/bash

일반적으로 Docker 환경에 진입한 후 생성되거나 생성된 파일은 Docker 환경을 종료한 후 "자동으로 파기"되거나, 로컬 호스트에서 프로그램을 실행하려는 경우 Docker 환경에서 찾을 수 없는 경우가 발생합니다.

생성된 파일이 로컬 호스트에 유지되도록 디렉터리를 매핑하여 로컬 호스트의 디렉터리를 Docker 환경에 매핑할 수 있습니다.

-v를 사용하여 로컬 호스트 디렉터리 /home/liguopu/를 docker 환경의 /guopu 디렉터리에 매핑합니다. 해당 권한은 rw이며 이는 읽고 쓸 수 있음을 의미합니다.

내부 매개변수의 기본 할당은 매우 작아서 모델을 학습할 때 충분하지 않습니다. 매개변수를 통해 설정할 수 있습니다. 예를 들어 내 컴퓨터에는 32G 내부 매개변수가 있는데 16G를 Docker에 넣어 사용하고 싶습니다. 다음으로 설정하세요. -shm 크기 16G.

내 블로그를 참조하세요: docker가 Nvidia 이미지를 가져옵니다 | cuda |cudnn_cudnn 미러 스테이션_a little tree x의 블로그-CSDN 블로그

2. 콘다 설치

 기본 시스템 이미지에는 conda나 python이 없을 수 있는데, Anaconda를 설치하여 딥러닝 환경을 구축할 수 있습니다.

 선택할 수 있는 다운로드 주소는 두 가지, 즉 공식 다운로드 주소와 Tsinghua University 오픈 소스 소프트웨어 미러 스테이션이 있습니다.

공식 다운로드 주소: 무료 다운로드 | Anaconda

 공식 주소에서 다운로드하는 것이 느리다고 생각되면 Tsinghua University의 다운로드 주소를 시도해 볼 수 있습니다.

칭화대학교 오픈소스 소프트웨어 미러 스테이션: /anaconda/archive/ 색인 | 칭화대학교 오픈소스 소프트웨어 미러 스테이션 | 칭화 오픈소스 미러

​​ 예를 들어 Anaconda3-2023.07-2-Linux-x86_64.sh 를 선택합니다. 

Anaconda3 설치

다운로드한 파일의 위치로 이동하여 파일 디렉터리에서 터미널을 열고 bash를 사용하여 설치를 수행합니다.

bash Anaconda3-2023.07-2-Linux-x86_64.sh

설치 과정:

1) Enter 키를 입력하여 설치를 확인합니다.

2) Anaconda 최종 사용자 라이센스 계약을 읽고 Enter를 눌러 정보 검색을 마칩니다.

3) 계약에 동의하는지 물어보십시오. 동의만 할 수 있습니다. yes를 입력하십시오. (라이센스 조건에 동의하십니까? [yes|no])

4) 다음 위치에 설치하라는 메시지가 표시되면 Enter를 눌러 확인합니다. (Anaconda3는 이제 이 위치에 설치됩니다.)

5) 환경 변수를 추가할지 여부는 일반적으로 yes를 선택하는데, 이 선택은 자신의 상황에 따라 다릅니다. 개발을 위해 conda 환경을 자주 사용하는 경우에는 yes를 선택하는 것이 좋습니다. (설치 프로그램이 /home/에서 Anaconda3를 초기화하도록 하시겠습니까? linuxidc/.bashrc? [예 |아니요])

Conda 설치를 완료합니다.

다른 터미널을 사용하여 이 이미지로 생성된 컨테이너를 엽니다.

Conda의 초기 환경이 보이면 Conda가 성공적으로 설치되었음을 의미합니다.

3. SMOKE 환경 만들기

conda 명령으로 생성됨

conda create -n SMOKE python=3.7

로컬에서 코드 다운로드

git clone https://github.com/lzccccc/SMOKE

토치1.12 설치

conda install pytorch==1.12.0 torchvision==0.13.0 torchaudio==0.12.0 cudatoolkit=11.3 -c pytorch

DCNv2 버전을 최신 torch1.11로 수정하세요. (개인 테스트 가능)

https://github.com/lbin/DCNv2/tree/pytorch_1.11

DCNv2 파일을 다운로드한 후 다음을 수행합니다.

  • SMOKE 소스 코드의 smoke/csrc에 있는 모든 파일을 DCNv2/src에 있는 파일로 교체
  • smoke/layers/dcn_v2.py 파일을 DCNv2/dcn_v2.py 파일로 교체

교체 후 smoke/layers/dcn_v2.py의 코드를 수정하고 import _ext as _backend를 from smoke import _ext as _backend로 변경합니다.

4. SMOKE 환경 컴파일

cd SMOKE
python setup.py build develop

컴파일 성공 정보

coda list를 사용하여 Smoke 라이브러리가 성공적으로 설치되었는지 확인하십시오.

다른 라이브러리 설치

 pip install yacs scikit-image tqdm  -i https://mirrors.aliyun.com/pypi/simple/

 5. Kitti 3D 타겟 감지 데이터 세트 다운로드

공식 웹사이트 링크: KITTI Vision Benchmark Suite

 다운로드해야 하는 파일:

  • 객체 데이터 세트의 왼쪽 컬러 이미지 다운로드(12GB) 트레이닝 세트와 테스트 세트를 포함한 사진입니다.
  • 객체 데이터 세트의 카메라 교정 행렬 다운로드(16MB) 카메라 교정과 관련된 파일입니다.
  • 객체 데이터 세트의 트레이닝 라벨 다운로드(5MB) 이미지 트레이닝 세트에 해당하는 라벨입니다.
  • 객체 개발 키트 다운로드(1MB) 모델을 평가하기 위한 코드입니다. 나중에 사용되며 학습 중에는 사용되지 않습니다.

공식 홈페이지에서 이 파일들을 다운로드 받으려면 계정 등록이 필요하고 속도를 위해 tizi가 필요하기 때문에 쉽게 다운로드할 수 있도록 Baidu Cloud Disk에 저장했습니다.

다운로드한 파일은 다음과 같습니다.

  

6. 데이터 세트 처리

먼저 파일의 압축을 풀고 데이터 세트 폴더에 kitti 폴더를 생성한 후 다음 경로에 저장합니다.

kitti
│──training
│ ├──calib 
│ ├──label_2 
│ ├──image_2
│ └──ImageSets
└──testing
     ├──calib 
     ├──image_2
     └──ImageSets

ImageSets 폴더 외에도 다른 모든 것이 여기에 있습니다. ImageSets는 주로 교육이나 테스트 중에 사용되는 파일을 저장하고 파일 이름을 지정합니다.

예를 들어, 다음 내용으로 kitti/training/ImageSets/ 디렉터리에 trainval.txt 파일을 만듭니다.

000000
000001
000002
...

007479
007480

그렇다면 이 trainval.txt를 생성하는 방법은 무엇입니까? 작은 Python 프로그램을 작성하고 이 프로그램을 xxxx/SMOKE-master/datasets/kitti/training/ 아래에 배치하고 실행하십시오.

예를 들어 이름을 create_imagesets_trainval_sort.py로 지정합니다.

 코드는 아래와 같이 표시됩니다.

'''
文件路径:
    xxxx/SMOKE-master/datasets/kitti/training/
'''

import os

# 获取文件夹下的所有文件名称,并排序
files  = os.listdir("./image_2")
files.sort()

# 创建/打开一个txt文件
save_txt  = open("./ImageSets/trainval.txt", 'w')

# 遍历列表,逐一获取文件名
for file in files:
    print("file:", file)
    file_name = file.split(".")[0]
    save_txt.write(file_name)
    save_txt.write("\n")

예를 들어, 다음 내용으로 kitti/training/ImageSets/ 디렉터리에 test.txt 파일을 만듭니다.

000000
000001
000002
...

007516
007517

따라서 이 test.txt를 생성하는 방법은 작은 Python 프로그램을 작성하고 이 프로그램을 xxxx/SMOKE-master/datasets/kitti/testing/ 아래에 두고 실행하는 것입니다.

'''
文件路径:
    xxxx/SMOKE-master/datasets/kitti/testing/
'''

import os

# 获取文件夹下的所有文件名称,并排序
files  = os.listdir("./image_2")
files.sort()

# 创建/打开一个txt文件
save_txt  = open("./ImageSets/test.txt", 'w')

# 遍历列表,逐一获取文件名
for file in files:
    print("file:", file)
    file_name = file.split(".")[0]
    save_txt.write(file_name)
    save_txt.write("\n")
    

7. 훈련 시작

먼저 교육 구성 파일인 configs/smoke_gn_Vector.yaml을 살펴보세요.

MODEL:
  WEIGHT: "catalog://ImageNetPretrained/DLA34"
INPUT:
  FLIP_PROB_TRAIN: 0.5
  SHIFT_SCALE_PROB_TRAIN: 0.3
DATASETS:
  DETECT_CLASSES: ("Car", "Cyclist", "Pedestrian")
  TRAIN: ("kitti_train",)
  TEST: ("kitti_test",)
  TRAIN_SPLIT: "trainval"
  TEST_SPLIT: "test"
SOLVER:
  BASE_LR: 2.5e-4
  STEPS: (10000, 18000)
  MAX_ITERATION: 25000
  IMS_PER_BATCH: 32

MAX_ITERATION, 여기 공식 웹사이트의 훈련 라운드 수는 25,000회로 상당히 과장되어 수정될 수 있습니다.

IMS_PER_BATCH, 배치 크기는 32이고 비디오 메모리는 그다지 크지 않으므로 더 작게 변경할 수 있습니다.

STEPS는 모델의 가중치를 저장할 때 훈련 과정에서 수행되는 라운드 수를 의미하며, 기본값은 10,000 라운드, 18,000 라운드이며 사용자가 직접 수정할 수 있습니다.

그 외는 업무 상황에 따라 수정될 수 있습니다.

단일 GPU 훈련을 위한 명령은 다음과 같습니다.

python tools/plain_train_net.py --config-file "configs/smoke_gn_vector.yaml"

모델이 훈련을 시작하고 정보를 인쇄합니다.

학습 구성 및 모델 구조 인쇄

훈련 중에는 반복 라운드 수, 손실, 학습 속도 변화 등을 포함한 즉각적인 정보가 있습니다.

[2023-09-24 16:15:11,299] smoke.data.datasets.kitti INFO: 7481개 파일이 로드된 KITTI trainval 세트 초기화 중
[2023-09-24 16:15:11,299] smoke.trainer INFO: 훈련 시작
[2023 -09-24 16:15:16,859] smoke.trainer INFO: eta: 0:27:41 iter: 10 loss: 7.9971 (21.7083) hm_loss: 4.5385 (19.3146) reg_loss: 1.4058 (2.3936) time: 0.2013 (0.5557) data : 0.0078 (0.0284) lr: 0.00025000 최대 남성: 4816
[2023-09-24 16:15:18,872] smoke.trainer INFO: eta: 0:18:48 iter: 20 loss: 6.0802 (13.6487) hm_loss: 4.1279 (11.7 072 ) reg_loss: 1.4058 (1.9416) 시간: 0.2011 (0.3786) 데이터: 0.0078 (0.0182) lr: 0.00025000 최대 남성: 4816
[2023-09-24 16:15:20,889] smoke.trainer INFO: eta: 0:15:49 iter: 30 loss: 4.9480 (10.5877) hm_loss: 3.7482 (9.0827) reg_loss: 0.7232 (1.5050) time: 0.2012 (0.319 6 ) 데이터: 0.0079 (0.0148) lr: 0.00025000 최대 남성: 4816
[2023-09-24 16:15:22,904] smoke.trainer INFO: eta: 0:14:18 iter: 40 loss: 4.8069 (9.3238) hm_loss: 3.5018 (7.6436) reg_loss: 0.8950 (1.6802) 시간: 0.2012 (0.2901) 데이터: 0.0080 (0.0131) lr: 0.00025000 최대 남성: 4816 [2023-09-24 16:15:24,921]
smoke.trainer INFO: eta: 0: 13 : 23 ITER : 50 손실 : 4.3501 (8.3160) HM_LOSS : 3.2921 (6.8062) REG_LOSS : 0.6793 (1.5098) 시간 : 0.2011 (0.2724) 데이터 : 0.0080 (0.0121) LR : 0.00025000 MAX MEN : 4816
[2023-09-24 16 : 15 : 26,954] Smoke.Trainer 정보 : ETA : 0:12:47 ITER : 60 손실 : 4.1979 (7.6786) HM_LOSS : 3.2857 (6.2086) REG_LOSS : 0.5120 (1.4699) 시간 : 0.2609 ) 데이터: 0.0080 (0.0114) lr: 0.00025000 최대 남성: 4816
[2023-09-24 16:15:28,982] smoke.trainer INFO: eta: 0:12:20 iter: 70 loss: 4.2102 (7.2046) hm_loss: 3.0555 (5.7704) reg_loss: 0.8590 (1.4341) 시간: 0.2027 (0.2526) 데이터: 0.0080 (0.0109) lr: 0.00025000 최대 남성: 4816 [2023-09-24 16:15:31,048] smoke.trainer
INFO: eta: 0: 12 :00 iter: 80 손실: 4.5890 (6.9815) hm_loss: 2.9401 (5.4155) reg_loss: 1.4550 (1.5660) 시간: 0.2029 (0.2468) 데이터: 0.0080 

훈련 완료

훈련 중에 로그 파일, 모델 가중치 등을 저장하기 위해 tools\ 디렉터리에 로그 디렉터리가 생성됩니다.

모델은 총 3000 라운드 동안 학습되었으며 STEPS를 (1000, 2000, 3000)로 변경하여 1000, 2000, 3000 라운드에서 가중치가 저장됩니다.

 모델 효과:

공유완료~

Supongo que te gusta

Origin blog.csdn.net/qq_41204464/article/details/133257702
Recomendado
Clasificación