U-Net에 대해서는 네트워크(신경망) 구축 부분만 간단히 예시 코드로 살펴보겠습니다. 먼저 U-Net의 수축 경로를 텐서플로 2로 구현해 보겠습니다. 수축 경로는 다음과 같이 합성곱층 두 개와 하나의 최대 풀링(2×2)으로 구성되어 있습니다.

    inputs = layers.Input(shape=(572,572,1)) ------ 입력 이미지는 그레이스케일로 구성
    
    c0 = layers.Conv2D(64, activation='relu', kernel_size=3)(inputs)
    c1 = layers.Conv2D(64, activation='relu', kernel_size=3)(c0) ------ 확장 경로와 연결하기 위한 계층
    c2 = layers.MaxPool2D(pool_size=(2,2), strides=(2,2), padding='valid')(c1)  ------ 합성곱 두 개와 하나의 최대 풀링으로 구성
    
    c3 = layers.Conv2D(128, activation='relu', kernel_size=3)(c2)
    c4 = layers.Conv2D(128, activation='relu', kernel_size=3)(c3) ------ 확장 경로와 연결하기 위한 계층
    c5 = layers.MaxPool2D(pool_size=(2,2), strides=(2,2), padding='valid')(c4)  ------ 합성곱 두 개와 하나의 최대 풀링으로 구성
    
    c6 = layers.Conv2D(256, activation='relu', kernel_size=3)(c5)
    c7 = layers.Conv2D(256, activation='relu', kernel_size=3)(c6) ------ 확장 경로와 연결하기 위한 계층
    c8 = layers.MaxPool2D(pool_size=(2,2), strides=(2,2), padding='valid')(c7)  ------ 합성곱 두 개와 하나의 최대 풀링으로 구성
    
    c9 = layers.Conv2D(512, activation='relu', kernel_size=3)(c8)
    c10 = layers.Conv2D(512, activation='relu', kernel_size=3)(c9) ------ 확장 경로와 연결하기 위한 계층
    c11 = layers.MaxPool2D(pool_size=(2,2), strides=(2,2), padding='valid')(c10)
    
    c12 = layers.Conv2D(1024, activation='relu', kernel_size=3)(c11)
    c13 = layers.Conv2D(1024, activation='relu', kernel_size=3, padding='valid')(c12)
    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.