728x90 반응형 SMALL 기계학습16 [MLops] 모델 추론 src/main.py 모델 확장 파일을 pth로 지정한다. model_ext = "pth"python src/main.py train --model_name movie_predictor --optimizer adam --num_epochs 20 --lr 0.002 src/utils/utils.py torch.save는 내부적으로 pickle을 사용해 직렬화 (마샬링) 후 저장하게 된다. 이는 보안적 취약점으로 작용하게 된다. 따라서, 최소한의 검증 절차인는 sha256 해시 알고리즘을 통해 변조 여부를 최소한으로 확인한다. import osimport randomimport hashlibfrom datetime import datetimeimport numpy as npimport torchdef pa.. 2024. 8. 13. [MLops] 모델 저장하기 라이브러리 설치 ONNX 포맷으로 저장하기 위해 다음을 실행한다. 그리고 Fire 라이브러리를 활용하면 task 별로 필요한 인자를 설정하여 CLI 기반 프로그램을 쉽고 빠르게 만들 수 있다. task를 분리하면 다양한 장점이 있다 (필요한 태스크만 수행, 트러블 슈팅 및 디버깅 용이, 유연한 자원 할당, 유지보수성, 워크플로우 관리 등). pip install onnx onnxruntime fire src/model/movie_predictor.py torch(pth) 포맷으로 저장하기 아래 코드를 추가한다. import osimport datetimeimport torchfrom src.utils.utils import model_dirimport torch.nn as nnclass MoviePred.. 2024. 8. 12. [MLops] 모델 학습 및 평가 디렉토리 설정 docker exec -it my-mlops bash opt 디렉토리에서 mlops-movie-predictor 디렉토리를 생성한다. mkdir mlops-movie-predictor 그 다음, mlops-movie-predictor 디렉토리로 이동하고 dataset과 src 디렉토리를 생성한다. 또, src 디렉토리에서 utils, dataset, model, train, evaluate 디렉토리를 생성한다. 라이브러리 설치 pip install torch numpy==1.26.4 pandas scikit-learn tqdm src/utils/utils.py import osimport randomimport numpy as npimport torchdef init_seed(): n.. 2024. 8. 12. [Keras] 멀티모달 함의 분류 (1) 멀티모달 함의 분류 멀티모달 함의를 예측하기 위한 모델을 구축하고 훈련한다. Google Research에서 소개한 다중 모드 수반성 데이터 세트 multimodal entailment dataset를 사용한다. 멀티모달 함의란 소셜 미디어 플랫폼에서는 콘텐츠를 감사하고 중간 정도의 콘텐츠를 제공하기 위해 거의 실시간으로 다음 질문에 대한 답을 찾고자 할 수 있다. 주어진 정보는 다른 정보와 모순 (contradict) 되는지? 주어진 정보는 다른 정보를 의미 ( imply)하는지? 자연어 처리에서 이 작업은 텍스트 함의 분석이라고 한다. 이것은 정보가 텍스트 콘텐츠에서 나올 때만 해당된다. 실제로 사용 가능한 정보는 텍스트 콘텐츠뿐만 아니라 텍스트, 이미지, 오디오, 비디오 등의 멀티모달 조합에서 나오.. 2024. 3. 30. [Windows] NVIDIA GPU 사용을 위한 Window Native에 Tensorflow 설치 NVIDIA Driver NVIDIA에서 제품에 맞는 드라이버를 설치한다. WSL2 설치 PowerShell에서 WLS2를 설치한다. wls --install PowerShell에서 nvidia-smi 명령으로 GPU 서버를 확인한다. Ubuntu-22.04를 사용한다. nvidia-smi Miniconda 설치 아래의 명령어를 터미널에 입력해 스크립트 파일을 다운로드 후에 실행한다. wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.shsudo bash Miniconda3-latest-Linux-x86_64.sh 경로를 “/home/{사용자 이름}/miniconda3”로 설정한다. # conda 경로 설정export P.. 2024. 2. 15. 스타일, 콘텐츠 및 변형 손실 계산하기 스타일, 콘텐츠 및 변형 손실 계산하기 행렬에 전치를 곱하여 그램 행렬을 계산한다. 손실 함수의 두 부분을 계산하기 위해 VGG 네트워크의 여러 컨볼루션 레이어에서 출력된 그램 행렬을 가져온다. 스타일과 원본 이미지와의 유사성을 모두 결정하기 위해 이미지 픽셀을 직접 비교하는 대신 VGG의 컨볼루션 레이어 출력을 비교한다. 손실 함수의 세 번째 부분에서는 서로 가까운 픽셀을 직접 비교한다. VGG 네트워크의 여러 다른 레벨에서 컨볼루션 출력을 가져오기 때문에 그램 행렬은 이러한 레이어를 결합하는 수단을 제공한다. VGG 컨볼루션 레이어의 그램 행렬은 이미지의 스타일을 나타낸다. 알고리즘이 생성할 때 원본 이미지, 스타일 참조 이미지, 최종 출력 이미지에 대해 이 스타일을 계산한다. def gram_mat.. 2024. 2. 14. StyleGAN을 위한 이미지 전처리 StyleGAN을 위한 이미지 전처리 dlib를 사용하여 눈 위치를 기준으로 소스 이미지와 대상 이미지를 중앙에 배치하고 자른다. 이 작업을 수행하기 위해 두 개의 함수를 만든다. 첫 번째는 dlib를 호출하여 인물의 눈 위치를 찾는다. 두 번째 함수는 눈 위치를 사용해 이미지의 중심을 눈 주위로 맞춘다. 정확히 중앙에 맞추지 않고 원래 StyleGAN 훈련 세트와 비슷하게 중앙에서 약간 오프셋을 둔다. 이 오프셋은 생성된 StyleGAN 얼굴의 눈을 감지하여 결정다. 눈 사이의 거리를 통해 얼굴이 얼마나 큰지 알 수 있으며, 이를 통해 이미지의 크기를 일관되게 조정할 수 있다. def find_eyes(img): gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) rects.. 2024. 2. 14. Transfer Learning for Facial Points and GANs Transfer Learning for Facial Points and GANs 신경망을 사용하여 얼굴 특징, 특히 개인의 눈 위치를 감지하는 방법이 있다. 눈의 위치를 파악하면 인물 사진을 일관성 있게 자를 수 있다. GAN은 무작위 벡터를 사실적인 인물 사진으로 변환할 수 있다. 그 반대로 실제 사진을 숫자 벡터로 변환할 수도 있다. 두 이미지를 이러한 벡터로 변환하면 두 이미지 사이를 변환하는 비디오를 제작할 수 있다. NVIDIA는 눈이 항상 같은 위치에 있도록 일관되게 잘린 인물 사진을 대상으로 StyleGAN을 훈련했다. 이미지를 벡터로 성공적으로 변환하려면 NVIDIA가 크롭을 사용한 방식과 유사하게 이미지를 크롭해야 한다. 여기에 제시된 코드를 사용하면 시작 이미지와 끝 이미지를 선택하고 .. 2024. 2. 14. 조기 중지의 이점 Benefits of Early Stopping 손실은 신경망이 오답에 대해 어느 정도 확신을 가졌는지를 측정한다. 정확도는 신경망의 신뢰도와 관계없이 올바른 분류의 비율이다. import matplotlib.pyplot as plt history_dict = history.history acc = history_dict['accuracy'] val_acc = history_dict['val_accuracy'] loss = history_dict['loss'] val_loss = history_dict['val_loss'] epochs = range(1, len(acc) + 1) plt.plot(epochs, loss, 'bo', label='Training loss') plt.plot(epochs, v.. 2024. 2. 13. 네트워크 생성 및 가중치 전송 Create a Network and Transfer Weights 전송된 가중치로 새로운 신경망을 만든다. 이미지넷에 대해 학습된 가중치가 포함된 Xception 신경망에서 가중치를 전송한다. 기존 Xception 신경망에 keras.applications을 로드한다. base_model의 로딩에는 상당히 많은 작업이 진행된다. 기본 Xception 신경망은 299x299의 이미지를 받아들인다. 표준화한 150x150을 사용해야 하지만 그 차이를 극복하는 것이 비교적 쉽다는 것이 밝혀졌다. 컨볼루션 신경망은 스캔할 때 이미지 텐서에서 커널을 이동한다. Keras는 커널이 스캔하는 이미지가 아니라 레이어의 커널 크기에 따라 가중치의 수를 정의한다. 따라서, 이전 입력 레이어를 폐기하고 원하는 이미지 크기.. 2024. 2. 13. 이전 1 2 다음 728x90 반응형 LIST