본문 바로가기

TensorFlow

TF 버전 별 재현성 잡는 방법 정리 이전 글에 정리한 것처럼 재현성 잡힌 결과를 얻고 싶다면 Tensorflow-Determinism을 다운받아 사용해주면 된다. UpSampling의 Interpolation 이슈만 제외하고 나머지는 거의 다 재현성이 잡혀서 원하는 결과를 얻을 수 있다. TF 1.14.0 버전을 사용하던 나는 1년 동안 아무 문제 없이 잘 사용하고 있었는데... 최근 들어서 또 다시 재현성의 늪에 빠지게 됐다. TF 2.1 이상은 tf-deteminism이 지원을 안 하네..? 말 그대로다. 회사 서버 업데이트를 하게 돼서 TF 2.5 버전을 사용하게 됐는데 tf-determinism이 해당 버전은 지원 안 한다는 에러 문구가 뜨더라. 그러면서 TF 2.8부터는 tf-determinism을 따로 설치할 필요 없이 간단한 .. 더보기
MNIST 분류 모델, 조금 다르게 실행해보자 / get_tensor_by_name( ) 일단 코드부터 보자. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 import tensorflow ass tf from tensorflow.examples.tutorials.mnist import input_data mnist = input_data.read_data_sets('./mnist', one_hot = True) X = tf.placeholder(tf.float32, (None, 28,28,1), name = 'INPUT') Y = tf.placeholder(tf.float32, (None, 10)) is_training = tf.pla.. 더보기
Tensorflow 개념 정리) 텐서, 변수, 오퍼레이션, 계산 그래프 MNIST 분류 문제를 공부할 때만 해도 사용법 익히기에 급급했기 때문에 tensorflow를 제대로 이해하고 다루진 않았었다. 일반적인 파이썬 코드 구현하고는 다르게 tensorflow는 계산 그래프에 노드( = 연산, 계산, 오퍼레이션 )을 추가하고 session을 통해 실행해줘야 하는 구조라고만 이해하고 넘겼다. tf.placeholder( ), tf.layers.conv2d( ), tf.train.AdamOptimizer( )와 같은 함수들로 계산 그래프를 그려가며 모델을 설계하고, tf.Session( ).run( )으로 그려진 계산 그래프를( = 설계된 모델을 ) 실제로 실행하는 구조라고만 이해했었다. + X = tf.placeholder( tf.float32, None) 의 경우, X는 tf.. 더보기
1.5. draw_bounding_boxes 함수 설계 및 inference 결과 확인 pretrained model을 실행시켜서 결과 받아보는 과정까지 알아보았다. 이제는 detecting 결과를 이미지에 표현해주기만 하면 된다. 튜토리얼 코드를 봐보면 ./object_detection/utils/visualization_utils.py 를 사용해서 그려주는 걸 볼 수 있는데 그냥 경험삼아 직접 한 번 구현해보고 싶어서 draw_bounding_boxes 함수를 만들었다. 1. class_info.txt 만들기 코드 설명에 앞서 class_info.txt를 만들어줄 필요가 있다. draw_bounding_boxes 함수는 class에 대한 정보를 text가 아닌 int로 반환해준다. 따라서 각 숫자가 어떤 class를 뜻하지는 지에 대한 정보가 필요하다. visualization_util.. 더보기
1.3. Pretrained model의 계산 그래프 로드 다운받은 pretrained model 관련 파일들 중에서 예측에 필요한 파일은 frozen_inference_graph.pb 이다. 그니까 우리의 목표는 아래와 같은 결과 사진을 얻는 것이고, 이를 위해선 하드디스크에 저장돼 있는 frozen_inference_graph.pb 파일을 메모리에 올려 실행해줘야한다는 말이다. 그래서 이번 글에선 frozen_inference_graph.pb를 메모리에 올리는 과정까지 알아보겠다. 글 시작에 앞서 protocol buffer와 관련된 글, [인공지능 용어 정리] - Protocol Buffer 개념 ~ Protocol Buffer 실습 2을 읽고 오길 바란다. protocol buffer가 무엇이고 어떻게 사용하는 지를 알아야 이후부터 진행되는 내용을 정확히.. 더보기
1.2. Pretrained model 다운로드 및 압축 풀기 object_detection_tutorial.ipynb을 살펴보면 전체적인 흐름이 다음과 같다. 사용하고자 하는 pretrained model의 tar.gz 파일 다운로드 tar.gz 파일 압축 풀기 pretrained model의 계산 그래프 로드 모델 실행 및 결과 출력 이번 글에서는 모델을 다운받고 압축을 푸는 방법까지 알아보겠다. 1. pretrained model 다운로드 Tensorflow에서 지원하는 object detection model 종류와 다운로드 주소는 detection_model_zoo에서 확인할 수 있다. detection_model_zoo에서 바로 모델 다운받아서 알집으로 압축 풀어주면 되기는 한다. 가장 쉽고 간단한 방법이다. 근데 이를 코드로 작성해서 사용하는 방법에 대.. 더보기
1. Tensorflow Object Detection API 시작 Tensorflow에서 제공하는 Object Detection API 사용법에 대해 정리하려고 한다. 주변에 물어볼 사람이 없어서 사용법을 정확히 깨닫기까지 너무도 오래 걸렸다. 구글링의 연속.. 그래서 내가 깨달을 것들이 다른 누군가에게도 도움이 되길 바라는 마음으로 나 스스로도 정리할겸, 긴 호흡으로 하나하나 천천히 작성해보고자 한다. 나처럼 머리 속에 아무 것도 없는 상태에서 맨땅에 헤딩하는 격으로 Object Detection 공부를 시작한 사람들에게 부디 앞으로 작성할 글들이 검색되길 바란다. 조금이나마 도움이 됐으면 좋겠다. 글이 얼마나 길어질진 모르겠다. 최대한 자세히 써내려갈 생각이다. 그럼, 다운받는 것부터 시작해보자. 더보기