자동 인코더의 SSIM 구현 방법 설명

소개



자동 인코더의 SSIM 구현 방법을 구성합니다.

SSIM이란?



SSIM(Structural Similarity Index Measure)은 2004년에 발표된 이미지의 유사도를 측정하는 지표입니다.
오토 엔코더의 과제 중, 오리지널 화상으로부터 만들어지는 생성 화상이 선명하지 않은 특징이 있습니다. 영어로는 Blurred Generated Image라고 합니다. 이 경우 작은 이상을 감지하기 어려운 문제가 있습니다.
기존 오토엔코더에는 mse(mean squared error)를 손실함수로 사용하여 아무래도 선명하지 않은 이미지만 만들 수 있었습니다. 그런데 SSIM을 손실 함수로 사용하면 보다 선명한 생성 화상을 얻을 수 있어 결과적으로 이상 검지의 OK/NG의 판별 성능이 향상되는 결과가 되었습니다. 죄송합니다.



2. 구현 절차



학습 단계와 추론 단계로 나누어 설명합니다.


2.1. 학습 단계



SSIM 사용자 정의 손실 함수 정의



Tensorflow tf.image.ssim 함수를 사용하여 ssim_loss() 의 사용자 지정 손실 함수를 정의합니다.
파라미터 설정은 float32uint8 에 따라 다르므로, 그에 관해서는 Tensorflow 문서를 참조하십시오.
import tensorflow as tf

def ssim_loss(y_true, y_pred):
    return 1-tf.reduce_mean(tf.image.ssim(y_true, y_pred, 
                                          max_val = 1.0,filter_size=11,
                                        filter_sigma=1.5, k1=0.01, k2=0.03 ))

Compile에 loss로 지정



autoencoder라는 모델을 준비합니다.mse 와 사용하는 compile 문과 ssim_loss 를 사용하는 compile 문을 병기하므로 참고하십시오.
SSIM은이 코드를 사용하면 문제없이 학습 할 수 있습니다.
#損失関数 mse
autoencoder.compile(optimizer = 'adam', loss = 'mse')

#損失関数 SSIM
autoencoder.compile(optimizer = 'adam', loss = ssim_loss)

2.2.추론 단계



학습한 모델(h5 파일)을 로드할 때, "이 모델은 SSIM이라는 커스텀 손실 함수를 사용하고 있어요"라고 프로그램에 가르쳐야 합니다.
예를 들어, autoencoder-ssim.h5 드디어 모델을 로드하는 경우는, 아래와 같이 코드를 씁니다.

load_model 추가


from tensorflow.keras.models import load_model

loaded_model = load_model('autoencoder-ssim.h5', custom_objects={'ssim_loss':ssim_loss}

custom_objects 부분을 보자.
custom_objects={'ssim_loss':ssim_loss}


첫 번째 'ssim_loss'는 autoencoder.compile(optimizer = 'adam', loss = ssim_loss)のloss='ssim_loss'입니다.
두 번째 ssim_loss는 カスタム損失関数名입니다.

SSIM 함수 설명



위의 이유로 추론 코드도 カスタム損失関数를 작성합니다. 학습용 코드에 쓴 동일한 커스텀 손실 함수를 쓰면 OK입니다.
def ssim_loss(y_true, y_pred):
    return 1-tf.reduce_mean(tf.image.ssim(y_true, y_pred, 
                                          max_val = 1.0,filter_size=11,
                                        filter_sigma=1.5, k1=0.01, k2=0.03 ))

이것으로 문제없이 SSIM의 학습 모델을 읽어 새로운 데이터로의 추론이 가능합니다.

요약



SSIM의 커스텀 함수를 이용한, 오토 인코더의 학습·추론의 코드의 구현 방법에 대해 해설했습니다.

참고 자료



1. Improving Unsupervised Defect Segmentation by Applying Structural Similarity to Autoencoders
htps : // 아 rぃ v. rg/아bs/1807.02011

2. 【논문 읽기】신・오토 엔코더로 이상 검지
htps : // 코 m / 신무라 0 / ms / 예 074172 에c3c818b614 에

좋은 웹페이지 즐겨찾기