본문 바로가기

분류 전체보기

(52)
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..
Adaptive Parallel Execution of Deep Neural Networks on Heterogeneous Edge Devices 논문을 전체 번역하는것이 아닌, 일부를 번역하며, 내 의견을 적어보기로 한다. 요약은 다음과 같다. 스마트 홈, 스마트 도시, 자율주행 자동차와 같은 새로운 애플리케이션들이 머신 러닝(ML)을 탑재하는것에 흥미를 두고있다. 하지만 Deep Neural Networks (DNNs)을 자원이 한정된 장치에 탑재하는 것은 상당한 도전이다. DNNs의 workload는 계산 집약적이고, 클라우드 만큼의 자원을 필요로 한다. 다른 논문의 경우에는 DNNs을 효과적으로 디자인하거나, 클라우드의 힘을 빌렸다. 이 논문에서는 이기종 IoT환경에서 최적화된 runtime으로 적응하는 CNN 가속 프레임워크를 제안한다. 이 프레임워크는 convolution layer 융합을 이용하여 공간 분할 기술을 활용하고, 네트워크 ..
구글 브레인 팀에게 배우는 딥러닝 with TensorFlow.js-1장 머신러닝 기술스택 점검 겸, 논문과 병행하여 진행하고 있는 프로젝트에서 사용하기 위한 TensorFlow.js를 공부하기 위한 카테고리 및 포스팅이다. http://www.yes24.com/Product/Goods/108441844 구글 브레인팀에게 배우는 딥러닝 with TensorFlow.js - YES24 브라우저에서 딥러닝 모델을 빌드하고 실행하는 TensorFlow.js딥러닝 기초부터 구글 브레인 팀의 노하우까지!딥러닝은 컴퓨터 비전, 이미지 처리, 자연어 처리 등 다양한 분야에 변화를 불러왔다. www.yes24.com 책은 다음 책을 사용하고 있고, 그동안 배워온것들을 정리하면서 사용하자는 마인드로 이 책을 완독하고자 한다. 하루에 최대한 나갈 수 있는만큼 빠르게 나가도록 한다. 또한, 책을..
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번호를 이용해보자는 생각이었다. 나는 우선 다음과 같은 모델을 제작하여,..
정사각형으로 외곽선 검출 오늘은 너무 피곤해서, 많이 하지는 않았다. 지난번에 contour 검출 이후, 적당한 area 크기를 갖는 contour들을 image에 그리도록 하였다. contours, hierarchy = cv2.findContours(openedINV.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) mask = np.zeros(image.shape, dtype=np.uint8) for contour in contours: area = cv2.contourArea(contour) ''' 권장 사이즈를 측정할 필요 있다. 메이플 스토리의 창모드의 pixel 크기는 유동적으로 조정할 수 있으니, 여기서 적당한 보드판의 크기를 유추하여 contour를 검출하면 된다. '''..