역직렬화(Deserialization)를 통해 EXAMPLE.pb에서 데이터를 추출하는 방법에 대해 알아보자.
[ read.py ]
1 2 3 4 5 6 7 8 9 | import EXAMPLE_pb2 handson = EXAMPLE_pb2.HandsOn() with open('EXAMPLE.pb', 'rb') as f: serialized = f.read() handson.ParseFromString(serialized) print(handson) | cs |
- Line 1
: 마찬가지로 뼈대를 갖고 있는 EXAMPLE_pb2.py를 import 해줘야 한다.
그래야 이 뼈대에 맞춰서 deserialized data를 재분배할 수 있기 때문이다. - Line 6
: 직렬화된 형태로 저장된 데이터를 읽는다. - Line 7
: 읽은 데이터를 handson 뼈대에 맞게 재분배해 handson 객체에 저장한다. - Line 9
: 그 결과를 출력한다.
Protocol Buffer 실습 1, 2 를 통해 알아본 전체 흐름을 그려보면 다음과 같다.
import EXAMPLE_pb2 handson = EXAMPLE_pb2.HandsOn() with open('EXAMPLE.pb', 'rb') as f: serialized = f.read() handson.ParseFromString(serialized) print(handson) |
detection_graph = tf.Graph() with detection_graph.as_default(): od_graph_def = tf.GraphDef() with tf.gifile.GFile(PATH_TO_FROZEN_GRAPH, 'rb') as fid: serialized_graph = fid.read() od_graph_def.ParseFromString(serialized_graph) tf.import_graph_def(od_graph_def, name = "") |
read.py |
object_detection_tutorial.ipynb 일부 |
색이 반전된 코드에 집중하며 두 코드를 비교 분석해보면 어느정도 감을 잡을 수 있을 것이다.
< 참고 사이트 >
https://codedragon.tistory.com/4825
https://oversky.tistory.com/53
https://shin6666.tistory.com/entry/%EC%A7%81%EB%A0%AC%ED%99%94serialization
http://woowabros.github.io/experience/2017/10/17/java-serialize.html
https://bcho.tistory.com/tag/protocol%20buffer
https://www.datadoghq.com/blog/engineering/protobuf-parsing-in-python/
'Deep Learning > 인공지능 개념 정리' 카테고리의 다른 글
CNN에서 커널 사이즈는 왜 3x3을 주로 쓸까? (0) | 2020.01.15 |
---|---|
CNN이 이미지에 더 효율적인 이유 (0) | 2020.01.14 |
joint training, alternate training (0) | 2019.08.07 |
Protocol Buffer 실습 1 (0) | 2019.07.02 |
Protocol Buffer 개념 (0) | 2019.07.02 |