본문 바로가기
archive.tar

[TensorFlow] 모델 체크포인트 변환 .ckpt to .pb (inception-resnet-v2)

by 냉동만두 2017. 3. 21.

시작 (수정 중)


Converting the TensorFlow model checkpoint file.  .ckpt -> .pb

Inception-v3 , Inception-Resnet-v2 예제를 활용하여 학습 시키면 결과로 .ckpt 파일을 생성한다.

 Inception-Resnet-v2로 학습한 체크포인트를 변환하는 내용임

생성된 체크포인트 파일을 바로 사용할 수 있으나

스크립트나 작업환경에 따라 다르지만 .pb 파일로 필요할 때가 있다. (protobuf)

그럴때 예제에서 제공하는 스크립트 사용하면 된다. (freeze_graph.py)


준비 : 스크립트


https://github.com/tensorflow/tensorflow/blob/master/tensorflow/python/tools/freeze_graph.py

먼저 텐서플로우의 소스코드가 있겠지? 이 스크립트의 위치를 확인 한다.

tensorflow/tensorflow/python/tools/freeze_graph.py


준비 : 체크포인트 파일


자신의 데이터로 학습 후 생성된 체크포인트 파일을 확인한다

inception-resnet-v2 플라워넷 데이터 학습 후 생성된 체크포인트 파일

여기서 필요한 파일 (파일이름은  다를 수 있음)

" model.ckpt-15000 " (학습 체크포인트 파일)

" graph.pbtxt " (그래프 정보)

<플라워넷 데이터 학습 후 생성된 체크포인트 파일>


준비 : 필요한 그래프 노드 찾기 (매우 중요!) (수정중)


체크포인트 파일에서 필요한 그래프 노드만 출력 해야 한다.

.pb 파일은 다들 그렇게 쓰더라고... 공부중...

나는 이미지 분류에 사용될 .pb 파일을 만들고 싶다

tensorboard를 활용해서 inception-resnet-v2의 추론에 필요한 그래프 노드를 선택한다. (이 부분이 불확실해)

오른쪽 위 InceptionResnetV2 항목을 열어보면 자세한 그래프를 볼 수 있다.

<tensorboard에서 볼 수 있는 전체 그래프>


빨간색 동그라미 그래프 노드를 출력 해야겠다.

저 그래프 노드를 선택한 이유는 보통 다른 이미지 분류 모델에서 softmax를 할 수 있는 노드가 사용된다

저 노드가 softmax를 담당하는 노드라고 생각한다

저 노드의 경로, 이름을 메모한다

InceptionResnetV2/Logits/Predictions

<InceptionResNetV2/Logits/Predictions 그래프>


변환하기 : ckpt -> pb


스크립트, 체크포인트 파일, 그래프를 확인 한 후 변환을 시작한다.

터미널에서 스크립트 경로로 이동한다

python freeze_graph.py \
--input_graph=/home/hwang/work/flowers/train/graph.pbtxt \
--input_checkpoint=/home/hwang/work/flowers/train/model.ckpt-15000 \
--output_graph=/home/hwang/work/flowers/freeze.pb \
--output_node_names=InceptionResnetV2/Logits/Predictions

--input_grap= 위에서 준비한 체크포인트 파일 경로 (그래프 정보)

--input_checkpoint= 위에서 준비한 체크포인트 파일 경로 (체크포인트 파일)

--output_graph= 출력 할 pb 파일 경로 및 이름 설정

--output_node_names= 필요한 그래프 노드


위 스크립트를 자신의 환경에 맞게 수정 후 실행하면 설정한 경로에 .pb 파일이 생성된다.

나는 약 219MB 크기의 .pb 파일이 생겼다.

Converted 490 variables to const ops.
6850 ops in the final graph.

<출력된 그래프 노드 정보>

지금부터 이걸 사용하면 되는데...........


사용하기


체크포인트 파일을 덤프하여 추론에 사용 하기.

http://gusrb.tistory.com/54