본문 바로가기

Error 잡기13

PIL 이미지를 NumPy로 변환하여 저장하지 마세요. 딥러닝 특히 CV 분야를 공부하다 보면 다양한 형태의 이미지를 다뤄야한다. 특히 파이토치 객체, 넘파이 객체, PIL 객체 를 왔다갔다 해야한다. 또 jpg를 쓸지, png를 쓸지, RGB 3채널일때, R 1채널일때 등 다양한 문제가 생긴다. 그런데 내가 오늘 발견한 것은 PIL이미지를 NumPy로 변환할때 치명적인 에러가 발생하는 것이다. 결론적으로 PIL 이미지는 그대로 저장하거나 파이토치 함수로 변환해야만 에러가 나지 않는다. RGB를 각각 따로 딥러닝 한 뒤 R, G, B를 저장하여 값을 보고 있었다. 파이토치 객체에서 부터 넘어와 저장해야 하기 때문에 이런 저런 변환을 거친 뒤 저장하는데, 이렇게 저장했다. (이 코드는 내가 작성한 것은 아니고 선행 연구자가 작성한 것이다.) 그런데 이렇게 저장.. 2024. 3. 5.
파이썬 리스트 2개 한번에 for문 돌리기 파이썬으로 다양한 코드를 짜다 보면 리스트를 정말 많이 사용한다. 특히 계속 꺼내서 쓰는 일이 많아서 그런데, 서로 다른 2개의 리스트에서 꺼내 쓸 일이 생긴다. 예를들어 아래처럼 파이토치에서 loss를 별도로 계산하고자 할 때 생긴다. output 여러개, label 여러개를 가져왔는데 하나씩 꺼내서 loss를 계산해야 된다. 대충 이런 상황에서 다음과 같이 코딩하면 에러가 난다. for i, j in [1], [2]: print(i + j) 이럴땐 zip() 함수를 사용해서 묶어주면 파이썬이 알아먹는다. for i, j in zip([1], [2]): print(i + j) zip(리스트1, 리스트2, ....) 하면 된다. 끝. 2023. 7. 28.
Timm 라이브러리 모델명 정리 timm 라이브러리는 pre-trained 된 모델을 인스턴스해서 쓸 수 있다. 프리 트레이닝 하는 데이터셋의 양이 테라 수준이라 직접 하기는 좀... 그렇다. 페이지 공홈 https://timm.fast.ai/ 깃허브 공홈 https://github.com/huggingface/pytorch-image-models 구글같은 경우는 모든 모델의 학습 조건, 정확도 등을 상세하게 적어놔준다. 그런데 timm 라이브러리의 주인인 hugging face 친구들은 너무 불친절하다. (진심 킹받음) 그래도 어쩌겠나... 써야지 ㅠㅠ 일단 설치 pip install timm 그리고 이걸 인스턴스 하는 방법 # 방법1 model = timm.models.vit_base_patch16_224(pretrained=Tru.. 2023. 7. 19.
Transformer confidence score 보는 방법 Transformer를 평가할 때 종종 confidence score가 사용된다. confidence score는 해당 클래스에 얼마나 확신이 있는지다. 즉 모델이 얼마나 자신있게 '이건 닭이야!!!!!!!!!!1' 라고 하는거다. 이 confidence score를 뽑아내는 방법을 알아보자. 이미지넷을 사용할껀데 Cifar-10같은 다른걸로 해도 무방하다. 나처럼 이미지넷으로 할거면 일단 다운부터 받자. [논문 구현] ViT ImageNet 평가 방법 | pytorch, timm 라이브러리, timm ViT ViT는 트랜스포머 중에서 그나마 간단한 형태이다. 실제로 구현하는게 그리 어렵지는 않다. 하지만.......... 논문에서 '대용량 pre-training'이 안된 ViT는 퍼포먼스가 상당히 떨어.. 2023. 5. 9.
ImageNet 원본 이미지 보는 방법 이미지넷 원본이 보고싶다면.... 일단 다운부터 받자. [논문 구현] ViT ImageNet 평가 방법 | pytorch, timm 라이브러리, timm ViT ViT는 트랜스포머 중에서 그나마 간단한 형태이다. 실제로 구현하는게 그리 어렵지는 않다. 하지만.......... 논문에서 '대용량 pre-training'이 안된 ViT는 퍼포먼스가 상당히 떨어진다고 나온다. 다시 davidlds.tistory.com 다음으로 데이터 로더를 설계해준다. transform_origin = transforms.Compose([ transforms.Resize(256), transforms.CenterCrop(224), transforms.ToTensor(), ]) origin_set = datasets.Image.. 2023. 5. 9.
이미지넷 클래스 파이썬 코드 이미지넷을 다루다보면 클래스를 써야할 때가 있다. 이미지넷의 각 클래스별 영문 스트링이다. 인덱스 -> 스트링 함수는 보너스다. CLASS_NAME = {0: 'tench, Tinca tinca', 1: 'goldfish, Carassius auratus', 2: 'great white shark, white shark, man-eater, man-eating shark, Carcharodon carcharias', 3: 'tiger shark, Galeocerdo cuvieri', 4: 'hammerhead, hammerhead shark', 5: 'electric ray, crampfish, numbfish, torpedo', 6: 'stingray', 7: 'cock', 8: 'hen', 9: 'o.. 2023. 5. 9.
Transformer 학습 안될때 오류 확인하는 방법 Transformer는 학습할 때 오래걸린다. 그리고 너무 복잡해서 열받을 때가 많다. 학습 과정을 보는 방법으로 하나를 제안하려고 한다. 보통 학습이 안되는 이유 중에 가장 빈번한 것은 gradient 때문이다. gradient vanishing, gradient exploding 두개가 제일 문제다. 이걸 확인하는 방법은 생각보다 간단하다. forward 도중에 텐서의 크기(range)를 뽑아보면 된다. print(torch.max(x) - torch.min(x)) 이게 끝이다. 예를들어 설명해주겠다. 첫번째 모델은 hugging face의 라이브러리로 만든 ViT다. 즉 군더더기 없는 코드이고, 학습도 잘된다. learning rate가 0.001인 조건에서 텐서의 크기는 4정도 된다. 즉 back.. 2023. 5. 8.
리눅스 주피터 노트북 가상환경 추가, 커널 추가 이미 셋업된 리눅스와 주피터 노트북에 내 가상환경과 커널을 추가하는 작업. 주피터 노트북 커널에서 작업한다. 주피터 노트북 오른쪽 위에 New 클릭. Terminal 클릭 ls 폴더가 주루룩 나올것이다. mkdir GR cd GR ls GR(여러분의 폴더명으로 대체하면 됩니다.) 폴더 생성 GR 폴더로 이동 폴더내 파일 확인 python3 -m venv venv_GR 가상환경 만들기(이름은 임의로 venv_GR) virtualenv venv_GR --python=python3.9 가상환경 파이썬 업데이트 source venv_GR/bin/activate deactivate 가상환경 한번 activate 해주기 python -m ipykernel install --user --name venv_GR --d.. 2023. 4. 13.
파이참 설치, 파이참 환경변수 설정, 파이참 개발환경 설정, pycharm 설치, Free Educational Licenses 학생 라이센스일 경우 학생 인증 후 다운로드 해야한다. 일반 버전 다운로드 하면 라이센스 받은게 아무 소용 없다. 이건 그냥..... 학생 구글 계정(ac.kr 로 끝나는 메일)으로 가입하고 인증하면 된다. 쉽다. 라이센스 받은 후 아래에서 파이참을 클릭해 설치해야만! 한다. https://account.jetbrains.com/licenses JetBrains Account account.jetbrains.com 라이센스가 있으니 당당하게 프로페셔널 다운. (라이센스가 없을 경우 옆에 커뮤니티 버전 받으면 된다.) 설치 진행하며 계속 넥스트 클릭하다가 다음 화면에서 집중! 나머지는 계속 진행하면 된다. 켜지고 나서 젯브레인 로그인 해주면 프로버전을 사용할 수 있다. 로그인! 스크린샷이 안되는데 누르면 .. 2023. 3. 21.
아나콘다 설치, 환경변수 설정, 개발환경 설정, anaconda 설치 설치 전에 절대 주의사항... 충돌 이슈.... 파이썬 지우세요!!!!!!!!!!!!!!!! 파이썬 지우세요!!!!!!!!!!!!!!!! 파이썬 지우세요!!!!!!!!!!!!!!!! 파이썬 지우세요!!!!!!!!!!!!!!!! 파이썬 지우세요!!!!!!!!!!!!!!!! 휴... 그럼 이제 시작해보자. 아나콘다 공식 홈페이지 https://www.anaconda.com/products/distribution#download-section Anaconda | Anaconda Distribution Anaconda's open-source Distribution is the easiest way to perform Python/R data science and machine learning on a sing.. 2023. 3. 21.