-
Deep Learning - 6machine learning 2020. 12. 11. 13:30
이번엔 DeepLabV3+를 사용해 보았다.
먼저 tensorflow를 이용한 deeplabv3를 클론.
!git clone https://github.com/rishizek/tensorflow-deeplab-v3-plus
그 후 unet에서 만들었던 Segmentation 이미지(PNG)를 사용한다. 그리고 원본 파일(JPG)도 한 곳에 잘 모아준다.
필자의 경우 tensorflow-deeplabv3-v3-plus\dataset\custom 여기에 img, seg폴더에 따로따로 모아놨다.
그 후train.txt, test.txt, val.txt 를 만든 후에 여기에 넣지 말고 dataset폴더에 넣어준다. (tensorflow-deeplabv3-v3-plus\dataset)
train 와 val 은 아래와 같이 형식명이 붙지 않은 상태로 한 줄 씩 띄워서 파일명을 적어주고
(123.jpg면 123만 입력)
test는 아래와 같이 형식명이 붙은 상태로 한 줄 씩 파일명을 적어준다.
(123.jpg면 123.jpg 입력)
그 후 create_pascal_tf_record.py를 이용해서 record파일을 만들어 준다.
create_pascal_tf_record를 실행하기 전에 아래 옵션들을 바꿔줘야 한다.
그런 후에 아래의 커맨드 라인을 tensorflow-deeplab-v3-plus 위치에서 실행
python create_pascal_tf_record.py
..\dataset 폴더에 아래의 파일 2개가 생성이 되었으면 성공한 것이다.
tensorflow-deeplab-v3-plus 폴더에 아래의 2개의 폴더를 생성해준다.
그리고 ini_checkpoints.zip을 풀어서 아래와 같은 폴더구성을 가질 수 있도록 만들어 놓는다.
www.programmersought.com/article/23564067522/이 링크에서 ini_checkpoints를 다운받을 수 있는것같다.. 아마..?
tensorflow-deeplab-v3-plus 폴더에 train.py를 다음과 같이 수정해 준다.
필자의 클래스 개수는 8개이다. (배경 + 클래스 6개 + ignore_label) ignore_label 클래스를 반드시 염두해 두고 클래스 개수를 적도록 하자. ⭐ignore_label =255이라는 것은, 255인것을 train할 때 무시한다는 이야기이다. 그리고 NUM_IMAGES에는 train이미지의 개수와 val 이미지의 개수를 적는다.
—train_epoch에서 우리는 30000개의 iteration, batchsize =4 , 데이터는 2500개 이므로 train_epoch을 48로 설정한다.
—pre_trained_model 은 아까 ini_checkpoints에 넣어놓았던 resnet_v2_101.ckpt파일을 지정한다.
—model_dir : 훈련할 모델이 저장될 위치
—bathch_size: 배치사이즈. 너무 크게하면 메모리 부족으로 오류를 발생시킬 수 있으므로 적당히 조정
—data_dir: 아까 만든 record 파일이 있는 위치inference.py 를 수정한다.
line 52의 num_classes를 아까 train.py에서 한 것과 동일하게 바꾸어준다.
—data_dir : test를 할 jpg들이 모여있는 폴더
—output_dir: inference된 segmentation 데이터들이 저장될 폴더
—infer_data_list: test내부의 이미지 이름들이 저장되어있는 아까 만든 test.txt 파일
—model_dir : 아까 train폴더에서 적었던 model 폴더
—base_architecture: 베이스로 사용할 딥러닝 아키텍쳐훈련!!!!
tensorflow-deeplab-v3-plus 폴더에서
python train.py
inference 진행
python inference.py
색의 클래스는 util → preprocessing.py에 나와 있습니다.
inferenc된 이미지와 원래 jpg이미지 합쳐주기(opencv를 사용하면 쉬움)
'machine learning' 카테고리의 다른 글
Deep Learning - 5 (0) 2020.12.10 Deep Learning - 4 (0) 2020.12.10 Deep Learning - 3 (0) 2020.12.10 Deep Learning - 2 (0) 2020.12.10 Deep Learning - 1 (0) 2020.12.10