끄적끄적 (13) 썸네일형 리스트형 PET의 Encoder 개수에 대한 고찰 이전 포스팅과 같이 코드를 정리한 이후, Encoder 개수에 대해 의구심이 들어 다음과 같이 가설을 세웠습니다. 그 결과로 위와 같은 좋은 결과를 얻을 수 있었습니다. TensorFlow에서 재밌는 점 (in Yolov4) Yolo v4를 하나씩 쪼개가면서 알게된 신기한 점에 대해서 글을 간략하게 작성해본다. tf.reshape를 하게 된다면 다음과 같이 tf_op_layer_Shape, tf_op_layer_strided_slice, tf_op_layer_Reshape/shape, tf_op_layer_Reshape 순서로 진행되는 모습을 볼 수 있다. tf.reshape를 통해서 model을 만들 경우에는 tf.reshape 한 줄 이지만, 이후 model을 load하여 layer를 확인하는 경우에는 위에 언급한 3개의 레이어가 추가적으로 layer로 인식된다는 점이 있다. 또, Yolo v4를 다 통과하고, 이후에 decode를 진행할 경우에 xy_grid = tf.meshgrid(tf.range(output_size.. TFLite visualizing 오랜만의 포스팅이다. TFLite를 사용해야 한다는 판단이 생겨, TFLite를 사용하고자 한다. TFLite를 사용하더라도, TFLite로 재생성된 모델의 생김새, immediate output등을 알아야 하기 때문에 여러 방법을 동원하여 해결해보고자 한다. 먼저 이 글 (eagle 아님) 을 참고해서 진행해보고자 하였다. TFLite 레포지토리를 클론하고, visualize.py를 bazel로 수행하라고 한다. bazel run //tensorflow/lite/tools:visualize \ model.tflite \ visualized_model.html bazel로 수행하기 위해서, bazel을 설치하고자 하였다. https://github.com/bazelbuild/bazelisk bazelis.. Yolo v4 Set up Requirement python 3.7.16 tensorflow==2.3.0 CUDA 10.1 cuDNN 8.0.5 for CUDA 10.1 tensorflow까지만 version을 지정해주었고, 나머지는 딱히 버전을 지정하지 않았습니다. opencv-python==4.7.0.72 권장 : opencv-python==4.1.2.30 easydict==1.10 pillow==9.4.0 기본적인 YOLO 수행 방법 https://github.com/hunglc007/tensorflow-yolov4-tflite 으로 가서 git clone을 통해 파일들을 다운로드 한다. git clone 했을 경우 tensorflow-yolov4-tflite 라는 폴더가 생성된다. weight에서 YOLO v4 weight.. layer merge하는 경우 수행 시간에 대한 고찰 교수님께서 한가지 제안을 해주셨다. 과연 묶어서 수행할 경우와 LBL (layer by layer)로 수행할 경우에는 수행시간에 차이가 날까? 내부적으로 어떤 병렬 방식이 있어서, 묶어서 수행하는 경우가 더 짧지 않을까? 에 대한 의문점을 제시해 주셨고, 이를 확인하고자 실험을 구성하였다. 먼저 설명한 '묶어서 수행할 경우와 LBL로 수행할 경우' 가 너무 모호한 설명이기 때문에, 그림과 함께 설명해 본다. LBL로 수행할 경우에 위에 적어둔 순서대로 layer를 통과하게 된다. 여기서 궁금한것은, LBL수행이 아닌 그저 model을 call (또는 predict, inference)하는 경우와 시간이 다르게 측정되는지 확인하고자 하였다. 먼저 실험을 진행한 컴퓨터의 스펙이다. CPU: i5-3570 R.. TensorFlow관련 주저리... 오늘은 뭐 획기적으로 한게 없다. https://deep-eye.tistory.com/58 어쩌다 보니 글 하나를 발견했다. RTX 3000번대가 CUDA 11.x~ 부터 좀 멀쩡하다는것... 하... 그래서 그런지, GPU를 사용해서 돌리니 CPU를 사용했을 때보다 개판이 났다. fps가 이전 포스팅에서 좋지 못하게 나왔던 이유도, CPU를 사용했기 때문이리라. 정말 쪽팔리다. 역시 잘 모르면서 짓껄인것을 알게 되었을때가 제일 부끄럽다. 일단은... 이 상황을 타개하고자 옛날에 사용했던 GTX 970을 들고왔다. 내일은 잘 되리라. Non-Sequential Model 묶기 - Part 2 어제의 삽질을 뒤로 하고, 오늘은 그래도 유의미한 결과를 가져왔다. 내가 생각했던것처럼, output의 정보를 가지고 있고, 이전 layer에 대한 정보를 가지고 있다면! 잘 작동하는것을 발견했다. result = np.expand_dims(test_images[0],0) result = result.astype(np.float32) for layer in model.layers: if predecessorInfo[layer.name]: if len(predecessorInfo[layer.name]) == 1: result = OutputSaver[predecessorInfo[layer.name][0]] result = layer.call(result) OutputSaver[layer.name] = re.. Non-Sequential Model 묶기 Yolo를 성공적으로 설치하고, tf.keras.models로 변환 후 모든 레이어의 연결상태를 확인한것은 아주 좋은 일이었다. 그러나 새로 직면한 문제는, 이 복잡한 모델 구조들을 얼마나, 어떻게 적절하게 일련의 번호로 순서를 매길것이냐? 라는 문제를 직면했다. 가장 먼저 생각났던 아이디어는, 갈래가 생기는 경우에는 하나로 묶어버리자! 라는 생각이었다. 노가다성이 조금 짙었지만, 나는 이전에 추출한 yolo 모델 구조 이미지를 통해서, 위 아이디어로 수행할 경우 얼마나 분할이 되는지 알아보고자 하였다. 하지만 위 아이디어대로 묶어버린다면, 너무 작은 덩어리와 큰 덩어리들의 집합으로 묶여져버린다. 두번째로 생각한 아이디어는 index번호를 이용해보자는 생각이었다. 나는 우선 다음과 같은 모델을 제작하여,.. 이전 1 2 다음