2023/02 13

OAKD Lite Stereo Vision Camera 아나콘다 base에 설치 및 에러 처리

Luxinis 사에서 판매하는 스테레오 비젼 카메라 제품 OAKD Lite 를 설치하자. OAKD 와 Lite 제품의 차이는 화면 해상도에 있으며 Lite 버전은 640X480 해상도를 제공한다. 참조: DepthAI’s Documentation https://docs.luxonis.com/en/latest/ OAKD Lite 용 설치 파일인 depthai 는 아래 url 주소의 Github로 부터 다운받을 수 있다. https://github.com/luxonis/depthai 다운받은 후 압축을 해제하도록 한다. 폴더명은 depthai-main 이다. 폴더명이 너무 길므로 depthai 로 변경하자. depthai 폴더를 윈도우즈 PC 개인사용자 폴더에 집어 넣는다. 아래는 폴더에 담겨 있는 내용물이..

자율주행 2023.02.18

Colab Stable Diffusion 그림그리기

Untitled0.ipynb 시작단계에서 반드시 런타임을 클릭하여 런타임 유형변경에서 GPU를 설정하자. 2023년 2월 7일 기준 tensorflow가 불과 며칠 전에 버전 2.92였던 것이 2.11로 업그레이드 되었다. 하지만 default 버전을 출력해 보면 여전히 2.9.2로 출력된다. 여타의 머신러닝에서는 문제가 되지 않지만 Stable Diffuaion에 의한 그림 그리기작업에서 tensorflow 버전이 맞지 않는다는 에러 메세지가 발생하여 뜬다. 1 import tensorflow as tf print(tf.__version__) ----------------------------------------------------------- 2.9.2 아래와 같이 TensorFlow 최신 버전으..

AI 페인팅 2023.02.07

Attention RNN 모델

seq2seq RNN 모델에서 인코더 알고리듬을 개량해 보자. 앞서 기술된 인코더 구조에서는 마지막 LSTM 셀로부터 출력되는 은닉층 정보 h 가 디코더의 LSTM 첫 번째 셀에 전달하는 단순한 구조를 보여주었다. 개선 이전의 인코더에서는 문장 전체를 쪼개서 각각의 LSTM 셀에 입력하여 은닉층 연산 후 펼쳐진 마지막 LSTM 셀에서 출력되는 은닉층 정보 h 를 디코더에 입력했었다. 개선 후에는 인코더 각각의 LSTM 셀로부터 출력되는 은닉층 정보를 모은 h 를 디코더에 입력하는 방법이다. 이렇게 하면 인코더 sequence 의 ‘고정길이’라는 제약을 벗어날 수 있다. 즉 마지막 LSTM 하나의 셀에서 결과를 넘기는 것에 비해 입력데이터 수에 해당하는 만큼의 은닉층 정보 전체를 전달하므로 고정된 길이의 ..

seq2seq RNN

기계 번역 분야에서 매우 인기가 있었던 Sequence to Sequence 모델은 두 개의 RNN 즉 인코더와 디코더를 짝으로 구성된다. 인코더는 입력을 순차적으로 처리하고 모든 입력 데이터를 감안한 은닉층 벡터를 생성한다. 그 생성된 은닉층 데이터는 해당 컨텍스트를 사용하여 적절한 대상 시퀀스(번역, 챗봇의 응답)를 예측 학습하는 디코더로 전달된다. 중요 응용 분야는 다음과 같다. 기계 번역: 한 언어의 문장을 다른 언어로 번역 자동 용약: 긴 문장을 짧게 요약된 문장으로 변환 질의 응답: 질문을 응답으로 변환 메일 자동 응답: 수신한 이메일 문장을 답변 글로 변환 sequence는 RNN 이나 LSTM에서 일정한 길이를 가지는 데이터를 의미한다. 인코더의 역할은 특정 언어의 입력 데이터를 받아들여 ..

텍스트 생성(text generation) 알고리듬

LSTM을 사용하는 텍스트 즉 문장 생성의 원리에 대해서 살펴보자. “You say goodbye and I say hello.” 라는 단어장으로부터 학습하는 모델을 생각해보자. 이 절의 내용은 2022년 12월 베타버전이 오픈된 오늘날의 chatGPT3.5 버전의 기원이 될 수도 있는 중요한 알고리듬의 영역에 해당함에 유의하자. 그림과 같이 ‘I’가 입력 데이터일 때 출력을 ‘say’라는 단어 자체로 결정론적으로 학습시키는 것이 아니라 ‘say’라는 단어의 출현 확률로도 학습이 가능하다. 6.7절에서 사용했던 특정한 단어를 직접 지정하는 경우는 결정론적(deterministic) 방법에 해당한다, 이는 출현 단어의 확률 분포 측면에서 보면 해당 단어의 출현 확률이 1.0 이고 나머지는 모두 0.0 이 ..

Rnnlm 클라스를 사용 PTB 데이터세트 전체를 대상으로 학습시켜보자.

Time RNN 계층을 Time LSTM 계층으로 대체한 Rnnlm 클라스를 사용하여 PTB 데이터세트 전체에 대해 학습시켜보자. LSTM계층으로 변경함에 따라 하이퍼 파라메터 설정에 변동이 큼에 유의하자. Rnnlm 클라스는 SimpleRnnlm 클라스와 거의 동일하지만 몇가지 메서드들이 추가되었다. save_params, load_params 메서드들은 가중치와 기울기 데이터를 피클링하여 저장하거나 부를 때 사용된다. 아우러 predict 메서드는 다음 절의 text generation에서 사용된다. 참조: 밑바닥부터 시작하는 딥러닝 2, 6장 perplexity 계산 결과 첨부된 Colab 파일을 다운받아 반드시 GPU 사용 설정 후에 실행해보자. (실행시간 27분)

Simple Rnnlm 클라스를 사용한 학습에 관해서 살펴보자

그림에서처럼 상류방향으로 4개의 Time 계층으로 이루어지는 SimpleRnnlm 클라스를 사용하여 PTB 데이터를 학습시키자. PTB 데이터 전체를 학습시키기에는 코드 효율이 너무 떨어지므로 앞부분 1000개만 사용해서 학습을 시켜보도록 한다. 정답 레이블에 입력 데이터를 한자리씩 민 데이터를 준 상태에서 Corpus 수를 제한하여 softmax를 적용한다. 원리적인 측면에서 알고리듬 이해에 도움을 줄 수 있는 예제이지 실전에서 사용하기에는 컴퓨팅 부담이 큰 알고리듬이다. Time 계층의 입혁을 위해 batch_size = 2 를 사용하면 500개씩 배치를 형성하여 입력하도록 한다. batch =2 일 때 마지막 1000번째는 제외시키고 다시 첫 번쩨 데이터를 입력 처리하자. Time 계층을 구성하는 ..

word2vec 알고리듬 CBOW 모델의 PTB(Pen Treebank) 데이터 세트 적용

제법 방대한 규모의 PTB 데이터 세트를 사용해서 참조의 179페이지 4.3.2 CBOW 모델 학습 코드를 적용해 보자. GPU가 없는 PC에서 실행해 보면 무려 160분 연산 시간이 소요되며 연산 결과는 binary 파일 형태로 cbow_params.pkl 즉 피클 형태 파일로 저장된다. 대략 7배 정도 가속이 가능한 GPU 지원이 있어도 반나절 가량의 컴퓨팅이 필요하다. 따라서 컴퓨팅이 완료된 즉 사전학습된 binary 형태의 결과물을 피클링 파일로 저장했다가 불러 쓰는 것이 편리하다. 피클링 파일에 저장되어있는 내용물은 word_vecs, word_to_id, id_to_word 이다. 181페이지 4.3.3 CBOW 모델평가 코드를 불러서 활용해보자. query(탐색) 할 단어들을 지정해 입력하여..