ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Deep Learning - 6
    machine 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를 사용하면 쉬움)

    scratch를 잘 인식했다

     

    '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
Designed by Tistory.