Jetson Nano 활용 AI 기초 교육
(4) Transfer learning, Re-training the network 실습
21. 07. 22 ~ 23
(4) Transfer learning, Re-training the network 실습
21. 07. 22 ~ 23
(1) [Docker에서] Jetson nano에서 외장메모리를 Docker container에 마운트
cd jetson-inference
docker/run.sh --volume /media/mobis/mobis_usb:/media/mobis/mobis_usb
(2) [Docker에서] 전이학습 위한 폴더 이동
cd /jetson-inference/python/training/detection/ssd
(3) [Docker에서] 전이학습 위한 폴더 살펴보기
ls
(4) [Docker에서] 아래 코드를 입력하여, 새로운 데이터를 이용한 Re-training 수행
(4-1) 처음 학습
※ (USB 사용의 경우)
python3 train_ssd.py --data=/media/mobis/mobis_usb --model-dir=models --batch-size=4 --epochs=5
※ (SD카드의 경우)
python3 train_ssd.py --data=data --model-dir=models --batch-size=4 --epochs=5
(4-2) 학습된 네트워크 모델을 이어서 훈련하는 경우
※ USB 사용의 경우 예시 (--resume 추가, pth 파일은 가장 마지막의 epoch)
python3 train_ssd.py --data=/media/mobis/mobis_usb --model-dir=models --batch-size=4 --epochs=5
--resume=models/mb1-ssd-Epoch-3-Loss-5.4405885025074605.pth
※ SD card 사용의 경우 예시 (--resume 추가, pth 파일은 가장 마지막의 epoch)
python3 train_ssd.py --data=data --model-dir=models --batch-size=4 --epochs=5
--resume=models/mb1-ssd-Epoch-3-Loss-5.4405885025074605.pth
(4-3) 테스트시
※ 학습을 본격적으로 하기 전에 테스트시, 다음의 코드 작성
--batch-size=1 --workers=1 --debug-steps=1
(5) [Docker에서] 모델 생성 결과 확인 ( "(4) 코드의 --model-dir=위치" 에서, 위치 폴더를 열면 됩니다. )
ls models
학습된 딥네트워크 모델을 TensorRT에서 불러올 수 있도록, pytorch에서 ONNX로 모델 전환
※ 현재 위치는 외장 메모리를 마운트한 docker container의 /jetson-inference/python/training/detection/ssd 임.
(1) [Docker에서] 아래 코드 입력
python3 onnx_export.py --model-dir=models
(2) [Docker에서] 모델 생성 결과 확인 ( "(4) 코드의 --model-dir=위치" 에서, 위치 폴더를 열면 됩니다. )
ls models
아래 코드를 입력하여, 테스트에 사용할 이미지 불러오기
(1) [Docker 밖에서] 테스트 이미지 확인
(1-1) 새로운 terminal 열기 (Ctrl + Alt + t). ※ (1) 의 terminal 는 계속 열어두기
(1-2) 아래 코드를 입력하여, 테스트 이미지 저장된 폴더로 이동 → 폴더 내부 보기
cd /media/mobis/mobis_usb/test
ls
(1-3) 테스트용 이미지를 하나 골라서, 열어보기
eog ab14b3edc8b7f481.jpg
(2) [Docker에서] 테스트 이미지 저장된 폴더 지정 (아래 굵은 글씨는 변경 가능)
※ (SD카드의 경우)
IMAGES=data/test
※ (USB의 경우)
IMAGES=/media/mobis/mobis_usb/test
(3) [Docker에서] 아래 코드를 docker container에 입력하여, 학습 완료된 모델 실행 (※ 현재 위치: /jetson-inference/python/training/detection/ssd)
detectnet.py --model=models/ssd-mobilenet.onnx --labels=models/labels.txt --input-blob=input_0 --output-cvg=scores --output-bbox=boxes "$IMAGES/testImage(*.jpg)" $IMAGES/output.jpg
※ 영상의 경우, video.mp4 video.avi 등을 testImage 대신에 입력으로 넣고 (예시, "$IMAGES/video.mp4"),
출력에 output.jpg 대신에 outputvideo1.avi 를 하면 됨 (예시, $IMAGES/outputvideo1.avi).
※ 여러 이미지를 한꺼번에 테스트 하고 싶은 경우, 입력에서 testImage.jpg 를 지우고 빈칸으로 두고 (예시, "$IMAGES/"),
출력에서 output.jpg을 지우고 빈칸으로 두면 됨 (예시, $IMAGES/).
(4) [Docker 밖에서] 결과 확인
(4-1) 새로운 terminal 열기
(4-2) 아래 코드를 입력하여, 결과 이미지 열기
eog /media/mobis/mobis_usb/test/output.jpg
아래 코드를 외장 메모리 마운트된 docker container에 입력 (※ 현재 위치: /jetson-inference/python/training/detection/ssd)
detectnet.py --model=models/ssd-mobilenet.onnx --labels=models/labels.txt --input-blob=input_0 --output-cvg=scores --output-bbox=boxes --input-width=800 --input-height=400 csi://0
태어나서 Apple 만 배운 AI (나는 사과 밖에 몰라요)