pip install PySide6

:  인터페이스 (UI) 애플리케이션을 개발할 수 있게 도와주는 파이썬 바인딩 라이브러리

-크로스 플랫폼 개발

-다양한 UI 요소

- 이벤트 처리 및 시그널 슬롯

 

아나콘다 프롬프트에서 pip install Pyinstaller 해주고

프롬프트에서 원하는 py 파일 있는 폴더 가서

 

pyinstaller --onefile ./파일명.py   : 실행파일 생성시키기

pyinstaller -w 파일명.py : 디버깅하기

 

 

------

위의 과정 이후 두개의 파일 생성됨

dist 디렉토리: 빌드된 실행 파일이 위치하는 디렉토리입니다. 이 디렉토리 안에 실행 파일과 실행에 필요한 모든 파일 및 종속성이 포함되어 있습니다. 이 디렉토리 안의 실행 파일을 다른 컴퓨터에서 실행할 수 있습니다.


build 디렉토리: 빌드 프로세스 중에 생성되는 임시 파일과 빌드 관련 파일이 위치하는 디렉토리입니다. 일반적으로 빌드 완료 후에는 이 디렉토리를 삭제해도 무방합니다.

1. VM 환경세팅 

conda search python
어떤 버전 파이썬 설치 가능한지 보기

conda create -n 가상환경명칭 python=3.11
가상환경 만들기

conda activate AI
가상환경 접속
--------------

 

2. 파이토치 설정


nvcc --version
NVIDIA CUDA 컴파일러 버전을 확인하는 명령

 

conda install pytorch torchvision torchaudio pytorch-cuda=11.7 -c pytorch -c nvidia


파이토치 사이트에서 맞는 버전 설치 코드 복붙해서 파이토치/ 토치버전/ 토치 오디오/ 쿠다/ 툴킷 등등 

 

------------

그 외 알아야할 것

conda info --envs

가상 환경 정보보기

conda remove --name [가상환경명] --all

가상환경 삭제

 

-----------

추가 설치

pip install opencv-python==4.7.0.68

pip install matplotlib

pip install tqdm
pip install Pillow==9.4.0
pip install tensorboard

pip install pandas

pip install seaborn

pip install scikit-learn

이런거 다 깔고나서 

pip freeze > requirements.txt

해주면 c: > 사용자에 requirment 파일 생기는데 나중에 가상환경 만들 때 사용해서 한방에 깔아줄 수 있다.

근데 이 파일열어서 @ 표시된건 다 삭제하고 저장해주기, 또 토치와 토치비전, 토치오디오는 삭제

pip install -r requirements.txt

이 명령어 이용하여 설치 가능

 

--------------------------------

1. 파이참 들어가서 폴더 위치 세팅

2. 파일>프로젝트(폴더 명)> 시스템 인터프레터> 추가> 콘다 환경에서 미니콘다>파이썬으로 세팅하기

 

 

파이참은 컨트롤 눌러서 원하는 함수 들어가면 그 함수 어떻게 구성되어있는지 볼 수 있다

 

----------------------------------

아나콘다 인터프리터에서 NVIDIA GPU System Management Interface (nvidia-smi)를 사용하여 실시간으로 NVIDIA GPU의 상태 및 성능을 모니터링하는 명령

nvidia-smi -l

앙상블: 여러 모델을 결합하여 예측 성능을 향상시키는 기법.

스태킹 : 앙상블 학습의 한 유형으로, 여러 개의 기본 모델들의 예측 결과를 기반으로 최종 예측을 수행하는 방법

부스팅: 약한 학습기를 순차적으로 학습시켜 강력한 앙상블 모델을 구성하는 기법.

 - 에이다부스트는 약한 학습기를 사용하여 순차적으로 학습하고, 이전 모델의 오차에 가중치를 부여하여 다음 모델을 학      습시키는 방식으로 작동

 

보팅(Voting) : 앙상블 학습에서 여러 모델의 예측 결과를 결합하여 최종 예측을 만드는 방법, 주어진 입력에 대해 각 모델들이 독립적으로 예측을 수행하고, 보팅을 통해 이들 예측을 종합하여 최종 예측을 도출

하드보팅(Hard Voting): 각 모델의 예측 결과를 다수결로 결정하는 방식,  예를 들어, 세 개의 모델 중 두 개가 A로 예측하고 하나가 B로 예측한다면, 하드보팅은 A를 최종 예측으로 선택. 이진 분류 문제에서는 각 클래스의 라벨을 정수로 표현하여 다수결을 결정

소프트보팅(Soft Voting): 각 모델의 예측 확률을 평균하여 가중 평균을 구하는 방식. 예를 들어, 세 개의 모델이 각각 A를 예측하는 확률을 [0.7, 0.6, 0.8]로 반환한다면, 소프트보팅은 확률 값들을 평균하여 [0.7, 0.6, 0.8]의 평균인 0.7을 A의 예측 확률로 선택. 이러한 방식은 다중 클래스 분류 문제에서 자주 사용

가중치 보팅(Weighted Voting): 각 모델의 예측에 가중치를 부여하여 결합하는 방식. 가중치는 모델의 신뢰도나 성능에 따라 설정. 예를 들어, 높은 성능을 보이는 모델에 더 높은 가중치를 부여하여 해당 모델의 예측이 최종 예측에 더 큰 영향을 미치도록 할 수 있다..

과적합 방지를 위한 방법들


드롭 아웃 

인공신경망에서 학습 과정 중에 일부 뉴런을 무작위로 비활성화하여 과적합을 방지하는 기법

 

드롭 아웃 사용으로 과적합 방지가 되는 이유 

- 앙상블 사용 효과

- 노드 제거로 모델 복장성 감소

 

드롭 아웃의 한계

-정보 손실

-계산 비용

-하이퍼 파라미터 설정 어려움

-시간적 일관성 손실


 

라벨 스무딩

분류 문제에서 정확한 라벨에 대한 신뢰도를 높이고 모델의 과적합을 방지하기 위해 실제 라벨에 작은 오차를 추가하는 기법

 

라벨 스무딩의 장점

- 모델의 일반화 능력 향상

- 모델의 불확실성 학습

- 과적합 완화

 

라벨 스무딩 단점

- 라벨 정보 손실

- 성능 평가 지표 변화

-라벨 스무딩 파라미터 선택의 어려움

- 클래스 불균형 처리의 한계

 


MixUp Training

데이터 샘플을 선형 결합하여 학습 데이터를 보강하는 기술로, 모델의 일반화 능력을 향상시키고 데이터 부족 문제를 완화하는 방법

 

믹스업의 장점

- 일반화 성능 향상

- 과적합 감소

- 데이터 다양성 증가

 

믹스업의 단점

- 클래스 간 구분이 어려울 수 있음

- 이미지 내 세부 정보 손실

옵티마이저 종류 및 정리

옵티마이저 : 모델이 학습 데이터로부터 최적의 가중치와 편향을 찾는 역할

파란 라인 : 방향을 중심, 연산은 그레디언트 

분홍 라인 : 보폭을 중심, 연산은 그레디언트에 제곱

 


경사 하강법 (GD): 기울기를 따라 내려가며 손실 함수를 최소화하는 방법.

확률적 경사 하강법 (SGD): 랜덤한 데이터 샘플로 기울기를 계산하여 빠르게 학습하는 방법.

미니 배치 경사 하강법 (Mini-batch GD): 미니 배치로 기울기를 계산하고 업데이트하여 효율적으로 학습하는 방법.

모멘텀 (Momentum): 관성을 이용하여 이전 업데이트 방향을 기억하고 진동을 줄이며 학습하는 방법.

 


Adagrid : 가본 것은 더 세밀하게 보폭을 줄이고 안가본 곳은 빠르게 탐색


RMSprop: 최신 기울기에 높은 가중치를 주고, 과거 기울기를 지수 이동 평균하여 학습률을 조절하는 방법


아담 (Adam): 모멘텀과 RMSprop을 결합하여 학습률을 조절하고 빠르고 효과적인 최적화를 수행하는 방법.

 


CNN 의 이미지 처리 및 분류 장점

 

1. 지역적 특징 학습: CNN은 이미지 내 지역적 특징을 학습하는 데 강점이 있다. 합성곱 레이어와 풀링 레이어를 사용하여 이미지의 주요 특징을 추출하고 이를 통해 이미지의 지역적인 패턴과 구조를 인식.

2. 파라미터 공유: CNN은 가중치를 공유함으로써 학습해야 할 파라미터 수를 줄인다. 이는 모델을 효율적으로 만들어주며, 데이터가 적은 상황에서도 잘 작동하도록 도와줌.

3. 이미지 크기에 불변: CNN은 풀링 레이어를 사용하여 이미지의 크기를 줄이는 과정을 거친다. 따라서 입력 이미지의 크기에 불변하게 작동하며, 다양한 크기의 이미지를 처리할 수 있다.

4. 계층적 학습: CNN은 여러 개의 레이어를 쌓아올려서 이미지의 복잡한 특징을 계층적으로 학습한다. 초기 레이어에서는 단순한 선, 모서리 등을 학습하고, 이후 레이어에서는 더 복잡한 패턴과 개체를 인식한다.

5. 전이 학습 가능: 사전에 학습된 CNN 모델을 다른 이미지 문제에 적용하여 전이 학습(Transfer Learning)을 수행할 수 있다. 이미 학습된 모델의 가중치를 초기값으로 사용하여 새로운 작업에 빠르게 적용하고, 적은 데이터로도 좋은 결과를 얻을 수 있다.

1. 입력 레이어 설정: CNN의 입력으로는 이미지나 시퀀스 데이터와 같은 2D 또는 3D 데이터가 주로 사용. 입력 레이어를 설정하여 네트워크에 데이터를 주입.

2. 합성곱 레이어(Convolutional Layer) 추가: 합성곱 레이어는 이미지에서 특징을 추출하는 역할. 입력 데이터에 여러 개의 작은 필터(커널)를 적용하여 특징 맵(feature map)을 생성. 이때, 필터가 이미지를 스캔하며 특정 패턴을 인식.

3. 활성화 함수(Activation Function) 적용: 합성곱 레이어의 출력에 비선형성을 추가하기 위해 활성화 함수를 적용. 일반적으로 ReLU(Rectified Linear Unit) 함수 사용.

4. 풀링 레이어(Pooling Layer) 추가: 풀링 레이어는 합성곱 레이어에서 추출한 특징 맵의 크기를 줄이는 역할. 최대 풀링(Max Pooling)과 평균 풀링(Average Pooling)이 주로 사용되며, 특징을 강조하고 불필요한 정보를 줄여줌.

5. 다층 구조 생성: 여러 개의 합성곱 레이어와 풀링 레이어를 조합하여 다층 구조를 만듦. 이를 통해 네트워크는 점점 더 복잡하고 추상화된 특징을 학습.

6. 완전 연결 레이어(Fully Connected Layer) 추가: 합성곱과 풀링을 거친 특징 맵을 한 줄로 펼치고, 완전 연결 레이어를 추가. 이 레이어는 이미지의 전체적인 패턴을 파악하고 클래스에 대한 확률을 계산하는 데 사용.

7. 출력 레이어 설정: 분류 문제인 경우 출력 레이어에 클래스의 개수에 맞는 뉴런을 추가하고, 활성화 함수로 Softmax를 사용하여 각 클래스에 대한 확률을 얻을 수 있다.

8. 손실 함수 설정: 모델이 학습할 수 있도록 손실 함수를 선택. 분류 문제의 경우 크로스 엔트로피(Cross Entropy)가 일반적으로 사용.

9. 최적화 함수 설정: 모델의 가중치를 업데이트하는 최적화 알고리즘을 선택. 대표적인 예로는 확률적 경사하강법(SGD)과 Adam이 있다.

9. 모델 학습 및 평가: 데이터를 사용하여 모델을 학습하고, 테스트 데이터를 사용하여 성능을 평가. 성능이 만족스럽지 않다면 하이퍼파라미터를 조정하거나 모델 아키텍처를 변경할 수 있다.


+ Recent posts