텐서플로우 깃헙(모든것)

https://github.com/tensorflow

 

tensorflow

tensorflow has 99 repositories available. Follow their code on GitHub.

github.com

 

텐서플로우 초급 개발자 용 허브 전이학습

Domains => Image, text, video, audio

Image : augmentation, classification, classification logits, classifier, fearture vector, object detection, others, pose detection, RNN agent, segmentation, style transfer, super resolution, text recognition

Text : classification, Embedding, Generation, language model, preprocessing, quesion answering, retrieval question ansering, segmentation, to MEL

Video : classification, generation, text, Audio text

Audio : embedding, event classification, pitch extraction, STT

https://tfhub.dev/

 

TensorFlow Hub

 

tfhub.dev

텐서플로우 중급 개발자 용 

Domains => Computer Vision, Natural language processing, Recommendation

 

 

텐서플로우 고급 개발자 용

상용 목적의 모델을 개발하기 위한 툴을 사용하여 개발함.

https://www.tensorflow.org/resources/libraries-extensions

 

라이브러리 및 확장 프로그램  |  TensorFlow

TensorFlow를 사용하여 고급 모델 또는 메서드를 빌드하는 라이브러리를 탐색하고, TensorFlow를 확장하는 분야별 애플리케이션 패키지에 액세스하세요.

www.tensorflow.org

 

연구 목적의 Deep Learning sota 알고리즘.

Domains => Computer Vision, Natural language processing, Medical, Methodology, Miscallaneous, Graphs

Time Series, Speech, Playing Games, Computer Code, Audio, Adversarial, Robots, Knowledge Base, Music, Reasoning

https://paperswithcode.com/sota

 

Papers with Code - Browse the State-of-the-Art in Machine Learning

4829 leaderboards • 2249 tasks • 4072 datasets • 47647 papers with code.

paperswithcode.com

 

'Background > Post' 카테고리의 다른 글

[텐서플로우]멀티 스레드  (0) 2021.06.21

Back propagation(역전파)는 Data의 Forward propagation(순전파) 이후 모델을 Optimizer(최적화)

하는 모델의 학습 방법 알고리즘이다.

 

데이터를 인풋에 대해 모델들이 출력을 최적화 하기 위해 데이터의 중요도를 업데이트 하는 방법이다.

 

기본 개념은 입력된 데이터가 Cost에 얼마나 영향을 미치는지 알아보고,

입력된 데이터의 영향력에 따라 입력된 데이터의 중요도를 결정하는 파라미터를 수정하는 방법이다.

 

내용을 이하기 위해서 다음과 같은 기초배경 지식이 필요하다.

 

기초배경

linear algebra

Perceptron

Cost Funtion

Forward Propagation

Optimizer

 

단위 Perceptron(퍼셉트론)에서의 입력과 Weigth의 곱으로 기울기를 입력대비 출력으로 나타내며,

단위 Perceptron(퍼셉트론)의 Weigth를 수정 함으로서 입력을 변화시키지 않고 입력에 대한 중요도를

수정하는 일이다.

 

Deep learning 모델의 Architecture는 단위 Perceptron(퍼셉트론)의 집합으로 각 Weigth에 대해서

중요도를 업데이트 해야한다.

 

아래는 손으로 직접 작성한 간단한 예시이다.

L-2은 Input Layer로 별다른 연산을 수행하지 않는다.

L-1은 Hidden Layer 이다.

L은 마지막 Output Layer 이다.

 

W 는 각 가중치를 의미하고,

아래 0과 1은 각 노드넘버이다.

W의 앞의 0 또는 1은 이전 레이어의 노드 넘버이다.

W의 뒤의 0 또는 1은 다음 레이어의 노드 넘버이다.

 

W(L-1)00의 경우 L-2 layer의 0번 노드에서 0번 노드로 이어지는 L-1 넘버의 가중치이다.

W(L)11의 경우 L-1 laeyer의 1번 노드에서 0번 노드로 이어지는 L-1 넘버의 가중치이다.

z(L-1)는 Activation 을 거치지 않은 이전 변수의 연산 출력이다.

a(L-1)는 Z(L-1)이 Activation 을 거쳐 나오는 출력이다.

아래 그림은 위의 모델 Architecture의 관계를 표시한 그림이다.

 

W와 a의 곱을 z로 나타내고 z의 합이 Activation을 거친다.

여기까지가 Perceptron 하나에 해당한다.

 

Forward propagation은 다음의 순서로 연산된다.

왼쪽 심볼의 값을 받아 최종 오른쪽 a(L)의 값으로 최종 모델 출력이되며

Y와 함께 C0를 통해 Cost funtion에서 Global Cost를 구한다.

 

 

다음은 위에 표현한 입출력 관계를 통해 입출력의 영향을 다음 이미지 처럼 표현할 수 있다. 

C0 의 Global Cost와 각 Weith의 변화량 관계의 내적표현식이다.

 

개념 아이디어에서 처럼 입력 차원의 중요도와 출력과 라벨 사이의 cost에 얼마나 영향력에 따라.

중요도를 업데이트 하기 때문에 다음과 같이 표현될 수 있다.

 

(수식은 복잡해 보이지만, 미분을 구하는 것으로 크게 어렵지 않으면서 많이 귀찮다.)

 

 

이 식을 통해 예상할 수 있는 것은 각 Perceptron의 입력(x)과 Weigth(w)과의 곱과 Bias(y)의 합으로

wx+y 연산을 수행하기 때문에 Perceptron에 대해서 w, x에 대한 변화량은 반대인 x, w가 될 것이고, bias는 출력에 대한

shift combination 일 것이다.

 

위 단순화 된 미분 값 계산식을 보면 공통으로 들어있는 값들 을 확인 할 수 있다.

MSE의 미분 값인 Globel Cost이 그것인데, Globel Cost의 변화량에 각 Weigth 들이 영향을 주며 영향력 을 계산하는

식이며, 아래와 같이 단순하게 표현 할 수 있다.

 

 

식을 파해처보면 각 항들이 곱으로 이루어져 있고 Globel Cost가 공통이므로,

Globel Cost와 곱하는 앞의 모든 항들은 Globel Cost에서 각 Weigth가 주는 영향의 Scale로 이해할 수 있다.

 

아래 그림은 필요한 초기 변수들의 값이다.

 

위의 예에서 Weigth가 Globel Cost의  영향을 주는 Scale로 생각하고, 공통 값인 Globel Cost의 값이 이전 레이어에

1만큼 영향을 받기 때문에 1로 가정한다면, 아래 그림과 같이 단순화하여 각 local Cost를 구할 수 있다.

 

위 그림 속 X는 곱연산 +는 합연산이다.

검은 숫자는 Forward Propagation의 단계별 연산 출력 값이고

빨간 숫자는 back Propagation의 단계별 연산 출력 값으로 Local Cost 값의 비율이된다.

파란 숫자는 1step의 Back Propagation 이후의 결과로 다시 Forward를 진행 한 값이다.

 

다음으로 Globel Cost를 구하고 Weith의 인접한 Back Propagation에 곱하여 나온 것이 Local Cost가 되고,

해당 Local Cost에 대해서 Optimizer를 수행하여 나온 결과를 업데이트 하면된다.

 

필자는 불만이 많은 사람(필자는 손이 두 개이므로 라이터를 2개씩 지니고 다닌다.)이므로 가장 단순한 SGD 방식으로 Optimizer를 수행하여 1step의 결과만 손으로 적었다.

 

이처럼 데이터간의 관계분석을 통해 원하는 값을 도출할 때 나오는 최적의 각 Perceptron의 Parameter 값인

Weigth와 bias는 출력은 각 Feature들의 상관관계를 나타내는 곡선으로 나타낼 때에 데이터에 대한 통계분석의

결과물로 이해 할 수 있다.

 

이를 Machine learning(ML) 알고리즘으로 수행하면 각 분야 연구자들의 연구시간을 빠르게 단축 시켜

노고와 오류를 줄일 수 있을 것이고, 각 Feature가 주어젔을 때 통계적인 결과를 예상해 볼 수 있을 것이다.

 

해당 과정은 linear regression라는 regression analysis 방법으로 ML에는 통용한다.

hoya012.github.io/blog/anomaly-detection-overview-1/

 

Anomaly Detection 개요: [1] 이상치 탐지 분야에 대한 소개 및 주요 문제와 핵심 용어, 산업 현장 적

이상치 탐지 (Anomaly Detection) 분야에 대해 주요 용어들을 정리하며 소개를 드리고 산업 현장에 적용되는 여러 가지 사례들을 소개 드립니다.

hoya012.github.io

paperswithcode.com/task/anomaly-detection

 

Papers with Code - Anomaly Detection

Anomaly Detection, Anomaly Segmentation, Novelty Detection, Out-of-Distribution Detection

paperswithcode.com

blogs.oracle.com/ai-and-datascience/post/introduction-to-anomaly-detection

아직 안살펴 봤음

'Study > Post' 카테고리의 다른 글

[프로그래밍] 객체 지향 개요.  (0) 2022.02.25
[Framework].NET Maui  (0) 2021.11.14
[OS] Window10에서 11로  (0) 2021.10.31
유한 상태머신, 유한 오토마톤FSM 또는 FA  (0) 2021.10.10
[Object Detection] You Only Look Once  (0) 2021.04.28

www.youtube.com/watch?v=qQ5iLNjpxSk&list=PLRx0vPvlEmdDHxCvAQS1_6XV4deOwfVrz&index=1

 

내용 확인하고 라이브러리 이용하여 간단하게 구현하기

 

 

docs.python.org/ko/3/library/index.html

 

파이썬 표준 라이브러리 — Python 3.9.5 문서

파이썬 표준 라이브러리 파이썬 언어 레퍼런스 는 파이썬 언어의 정확한 문법과 의미를 설명하고 있지만, 이 라이브러리 레퍼런스 설명서는 파이썬과 함께 배포되는 표준 라이브러리를 설명합

docs.python.org

 

https://www.youtube.com/watch?v=NM6lrxy0bxs

https://youtu.be/MPU2HistivI

 

앞서본 영상은 AI 에서 Object Detection 이라는 Computer Vision의 한 분야로

2D 이미지에서 객체를 찾아내는 문제에 관한 연구분야이다.

 

영상 속 yolo는

2015년 vesion 1 을 시작으로 저자를 옮겨 yolov5까지 진행 중에 있다.

 

아래는 Object Detection의 계보라고 할 수 있다.

2018년 자료임.

 

 

현재 Vision AI의 동향을 아래 링크를 통해 확인 할 수 있다.

COCO test-dev Benchmark (Object Detection) | Papers With Code

 

Papers with Code - COCO test-dev Benchmark (Object Detection)

The current state-of-the-art on COCO test-dev is Swin-L (HTC++, multi scale). See a full comparison of 173 papers with code.

paperswithcode.com

Object Detection은 Localization과 classification 을 같이 수행한다.

 

기본적인 Localization 모델에서는 객체의 위치만 검출하는 모델 예제로는

모델 마지막 부분에 FC를 사용하여 4개의 x,y,w,h 또는 x,y,x2y2를 갖는 모델로 되어있었고,

 

classification은 이미지가 무엇인가라는 문제를 분류하는 문제에 대한 것으로,

다수의 무엇 중에 해당 영역에 1 또는 0으로 라벨링하여 분류를 표시된다.

 

RCNN을 예시에서 Region proposal  Localization, classification 등의 수행을 다른 Task 에서 수행하고,

Yolo의 예시처럼 하나의 Task 안에서 수행하는 End2End 방식이 있다 있다.

Faster rcnn

 

 

 

yolo의 object detection 설명 영상

youtu.be/9s_FpMpdYW8?t=3

 

Yolo에서는 출력 부분에 FC를 사용하지 않고 배치사이즈를 포함한 3차원 텐서가 출력하게 되는데.

아래와 같이 퓨처맵의 그리드에서 객체가 있을 법한 위치의 채널에 해당하는 깊이에 Localization, classification의

정보가 되도록하기 위한 학습방법에 대한 것이였다.

 

Yolo의 output featrue

최종으로 출려되는 featrue map의 shape를 다음 그림에서는 7*7에 깊이 30의 모양임을 확인 할 수 있다.

그 경우 출력될 수 있는 BBox의 갯수는 98개 라고 이야기하는 것은 Anchor box가 하나의 그리드에 대해

2가지의 BBox가 있고, 하나의 grid에서 2개 정도의 객체를 검출하겠다라는 경우다.

 

7*7*2*30

 

Yolo에서 3차원 출력으로 문제를 보고, 다음 Loss Funtion 에도 그 의도를 확인 할 수 있다.

아래 그림 속 Loss은 Yolov4에서의 객체와 백그라운드의 구분,

bbox 의 정확도, class 구분의 3가지 문제에 대해서 3차원 Feature map과 label 간의 Cost를 구체적으로 설명한다.

 

두 개의 시그마는 인덱스 퓨처맵과 라벨의 인덱스 위치를 참조하고,

시그마 앞의 산식이 loss 전달에 대한 조건식과 loss의 스케일로 이루어져 있으며,

두 시그마 뒤에 있는 산식은 구체적인 loss 값에 대한 산식이다.

 

 

아래 사진은 두 개의 시그마의 인덱스 변화에 따른 라벨과 퓨처맵의 비교 연산 위치를 알려주는 그림이다. 

 

같은 그리드와 앵커 박스의 인덱스를 참조하여 시그마 뒤에있는 연산을 수행한 모든 차원에서 로스를 합산한다는 의미인데, 독자로 하여금 제대로 전달이됬을지 모르겠다.

 

여하간, 3차원의 출력과 라벨을 사용한다는 것을 알 수 있다.

 

이렇게 loss를 연산하는 과정 전에 다음처럼 Decode를 수행하는 과정이 있다.

다음 사진이 그것인데, 사진엔 없지만 연산을 편하게 하기 위해서 Reshape와 split을 먼저 수행한다.

 

 

사진 속에서 meshgrid와 출력 된 feature map을 더하는데,

그리드 위치인덱스를 상수로 더해주는 연상ㅇ르 하기 때문에,

모델의 x, y 위치는 자신이 속한 그리드 셀 내에서의 좌표값에 대한 정보만을 해석하면 된다.

 

이 이유를 다음 그림을 설명한 후에 이야기하겠다.

 

그 다음 위의 이미지에서 wh에 Ahchors를 곱하는데, 이 의미는 각 featrue map의 wh 값은 exp를 거쳐 나온 값이 Anchors 의 비율을 결정하는 파라미터로 작용하며 각 앵커박스 인덱스 당 wh 가 책임지는 앵커박스의 wh가 있음을 알 수 있다.

 

이렇게 Decode layer와 이전 loss funtion의 구체적인 방법들은 필요한 학습 영역을 제한하여 모델의 부담을 줄이고,

모델 학습시간을 줄일 수 있고,

 

x, y, w, h, c, prob 등의 pred 모든 파라미터  0~1 안에서 변화할 것을 알려준다.

이점에 대해서 다시 곰곰히 생각해보면 loss funtion 상의 confidonce와 class 등 Binary Cross Entropy 문제로 추론하여 학습하는 동안 인접한 x, y, w, h 과의 gradient의 vanishing과 exploding의 문제를 동시에 해결 할 수 있음을 알 수 있다.

 

여하간 욜로의 핵심 idea는 이렇다.

pip install pandas

conda install pandas

 

pandas.pydata.org/docs/index.htmlpandas.pydata.org/docs/getting_started/overview.htmlpandas.pydata.org/docs/getting_started/overview.html

 

Package overview — pandas 1.2.4 documentation

pandas is a Python package providing fast, flexible, and expressive data structures designed to make working with “relational” or “labeled” data both easy and intuitive. It aims to be the fundamental high-level building block for doing practical, r

pandas.pydata.org

 

 

pip install -U pandas-profiling

pip install pandas_profiling

 

판다스 프로파일링은 데이터의 의미를 파악하기 전 단계에서

데이터의 상태(EDA)에 대한 오버뷰를 제공하는 강력한 패키지이다. 

 

좋은 요리를 위해서는 조리 방법도 중요하지만, 그만큼 중요한 것은 갖고있는 재료의 상태입니다. 재료가 상하거나 문제가 있다면 좋은 요리가 나올 수 없습니다. 마찬가지로 좋은 머신 러닝 결과를 얻기 위해서는 데이터의 성격을 파악하는 과정이 선행되어야 합니다. 이 과정에서 데이터 내 값의 분포, 변수 간의 관계, Null 값과 같은 결측값(missing values) 존재 유무 등을 파악하게 되는데 이와 같이 데이터를 파악하는 과정을 EDA(Exploratory Data Analysis, 탐색적 데이터 분석)이라고 합니다. 이번에는 방대한 양의 데이터를 가진 데이터프레임을 .profile_report()라는 단 한 줄의 명령으로 탐색하는 패키지인 판다스 프로파일링(pandas-profiling)을 소개합니다.

 

wikidocs.net/47193

 

위키독스

온라인 책을 제작 공유하는 플랫폼 서비스

wikidocs.net

rk1993.tistory.com/entry/Python%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B6%84%EC%84%9D-EDA-%EC%89%BD%EA%B2%8C-%ED%95%98%EA%B8%B0-pandasprofiling

 

[Python]데이터분석 EDA 쉽게 하기 - pandas_profiling

pandas 라이브러리 중 EDA를 한눈에 볼 수 있는 라이브러리 발견 ! 보고서 쓸 때나 데이터 확인할 때 쓰면 아주 좋을 것 같다. pandas_profiling 이란 ? 딱 EDA할 때 보는 거 다 나온다. 이제 파이썬으로 하

rk1993.tistory.com

 

+ Recent posts