전체 글

전체 글

    Amazon ECR에 DLCs 기반 Docker 이미지 Push하기

    Amazon ECR에 DLCs 기반 Docker 이미지 Push하기

    1. Dockerfile 생성 본격적으로 Dockerfile을 생성하기 전에 먼저 기본 이미지로 사용할 AWS Deep Learning Containers(DLCs) 딥러닝 컨테이너 이미지를 선택해야 합니다. 아래에서 원하는 이미지 URL을 가져올 수 있습니다. GitHub - aws/deep-learning-containers: AWS Deep Learning Containers (DLCs) are a set of Docker images for training and serving m AWS Deep Learning Containers (DLCs) are a set of Docker images for training and serving models in TensorFlow, TensorFlow 2..

    torch.load 시 _pickle.UnpicklingError: invalid load key 해결

    torch.load 시 _pickle.UnpicklingError: invalid load key 해결

    저장해뒀던 모델(.pt 파일)을 불러오려고 할 때 다음과 같은 에러가 발생할 때가 있습니다. model = torch.load(weights, map_location=device) File "작업 경로\venv\lib\site-packages\torch\serialization.py", line 713, in load return _legacy_load(opened_file, map_location, pickle_module, **pickle_load_args) File "작업 경로\venv\lib\site-packages\torch\serialization.py", line 920, in _legacy_load magic_number = pickle_module.load(f, **pickle_load_..

    이미지 인코딩(Encoding)과 디코딩(Decoding) 과정 이해하기

    이미지 인코딩(Encoding)과 디코딩(Decoding) 과정 이해하기

    보통 인코딩(Encoding)이라 하면, 문자를 컴퓨터가 이해할 수 있도록 바이너리 숫자 정보로 변환하는 것을 말한다. 이때 변환의 기준이 되는 것이 바로 ASCII, 유니코드 같은 형식들이다. 이렇게 데이터를 인코딩함으로써 다음 3 가지 측면에서 이점을 얻을 수 있다: ① 보안, ② 처리 속도 향상, ③ 저장 공간 절약. 이미지 데이터를 로드하는 방법에는 여러 가지가 있지만, 가장 자주 사용하게 되는 방식은 다음과 같이 file 또는 buffer로부터 이미지를 디코딩하는 방식이다. PIL, cv2.imread, pyplot 등 다양한 라이브러리와 메서드를 비교해봤을 때 아래와 같은 방식이 가장 속도가 빠르고, 특히 cv2에서 한글로 된 파일명으로 인해 발생하는 오류를 방지할 수 있기 때문이다. # 파일..

    당신은 이미 옷이 충분합니다

    당신은 이미 옷이 충분합니다

    최근 들어 소유한 물건이 많아질수록 정신력 소모가 큰 것 같다는 느낌을 받고 있어요. 물건이 많다는 것은, 그만큼 집 안에 있는 시간 동안 오롯이 휴식하거나 무언가에 몰입할 수 없다는 뜻입니다. 대신에 그것들을 정리하고, 찾을 필요가 많아지기 때문이겠죠. 개인적으로 물건을 새로 사는 일이 거의 없는 편이에요. 한 번 물건을 살 때에는 오래 쓸 요량으로 고심해서 고르기 때문에, 그 과정이 즐겁다기보다 고통스럽기도 하거든요. 또 그렇게 고심하면서 고를 만큼 반드시 생활에 필요한 물건들이 많지도 않고요. 실제로 제가 아끼고 잘 입는 옷들 중에는 10년, 15년 전에 산 것들도 있습니다. 그래서인지 동시에 예전부터 가지고 있던 물건들을 버리는 걸 조금 어려워합니다. 한 번 읽고 다시 펴보지 않는 책들, 벌써 몇..

    서울폐금 금니 판매 후기

    서울폐금 금니 판매 후기

    연휴를 맞아 오랫동안 미뤘던 일을 했다. 서랍 속에 굴러다니던 금니 2개를 팔았다. 벌써 몇 달 전부터 시세를 확인하면서 생각만 하던 일이었다. 짧은 검색을 마치고, 그나마 가장 검증된(?) 안전한 방법을 찾았다. 마침 매주 일요일이면 학원 때문에 종로에 가는데, 근처 종로 3가에 위치한 서울폐금에 직접 방문하기로 했다. 다른 곳을 더 찾아보면서 이것저것 비교하는 일은 하지 않았다. 그래봤자 몇 천원 차이일 거다. 혹은 그걸 찾아보는 시간이 더 값지거나. 온라인 거래도 가능하다지만, 운송상 문제도 무시할 수는 없었다. 사장님은 듣던대로 정말 친절하셨다. 묻지도 않고 따지지도 않고, 금니의 무게를 재고 가격을 계산해서 알려주셨다. 처음이라 약간 긴장이 됐었는데, 그럴 필요가 전혀 없었다. 사무실에 들어가서..

    Yolov5에서 ModelEMA와 model fuse가 의미하는 것

    Yolov5에서 ModelEMA와 model fuse가 의미하는 것

    Fuse란? Yolov5는 대표적인 객체 탐지(Object detection) 모델 중 하나이다. 탐지(추론)를 위해 모델을 불러올 때, 그 코드를 살펴보면 attempt_load라는 함수를 이용한다. * detect.py > DetectMultiBackend() > attempt_load()에서 찾을 수 있다. 그런데 이 함수를 잘 살펴보면 ckpt.get('ema'), 즉 모델의 'ema'라는 속성을 가져온다거나, ckpt.fuse().eval() if fuse와 같이 불러온 모델을 fuse하도록 하는 것을 알 수 있다. # yolov5/model/experimental.py def attempt_load(weights, device=None, inplace=True, fuse=True): from ..

    requirements.txt에서 URL로 PyTorch 설치하기

    requirements.txt에서 URL로 PyTorch 설치하기

    torch를 설치할 때 보통 여기서 다음 명령을 복사해 설치한다. pip3 install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu113 그런 다음 pip freeze > requirements.txt로 다음과 같은 requirements.txt 파일을 만들 수 있다. # requirements.txt albumentations==1.3.0 numpy==1.23.3 pytorch==1.12.0+cu113 torchvision==0.13.0+cu113 torchaudio==0.12.0+cu113 하지만 이를 그대로 다시 pip install -r requirements.txt로 설치하면 다음과 같은 에..

    의지력을 관리하기 시작하다

    의지력을 관리하기 시작하다

    지난 6월부터 약 두 달간, 나는 소위 '갓생'이란 걸 살아 보려고 했다. 매일 오전 4시에 일어나 요일마다 정해진 주제에 대해 공부하거나 관련 책을 읽었다. 출근 후에는 일에 몰두했고, 가능한 한 매일 1~2시간 정도는 더 추가 근무를 하면서 성과를 내기 위해 애썼다. 6월 한 달 동안 칼퇴한 날은 딱 이틀에 불과했고, 7월도 크게 다르지 않았다. 주말에는 더 바빴다. 토요일 오전마다 글 쓰기 모임을 열었고, 오후에는 재테크 관련 공부와 강의를 들었다. 일요일 오전에는 외국어 학원을 다녔고, 오후부터는 AI 분야 공부와 스터디 모임이 있었다. 물론 나는 이러한 패턴이 지속 가능하기를 바랐으므로, 열심히 휴식하거나 체력을 관리하는 것도 잊지 않았다. 매일 7시간씩 충분히 잠을 잤고, 주 3회 이상 유산소..

    국비교육과정, 8개월 후 이야기

    국비교육과정, 8개월 후 이야기

    인공지능 개발자 국비교육과정(K-digital Training)을 마치고, 8개월이 지난 근황과 감상에 대하여. 지난 2021년 6월부터 12월까지 약 6개월 동안 모두의연구소 AIFFEL에서 운영하는 인공지능 개발자 교육 과정에 참여했다. 다른 여러 기관의 교육 과정들도 고려했고 등록까지 했다가 취소한 경우도 있었는데, 그 중 왜 AIFFEL을 선택했는지에 대해서는 아래 두 글에 적어 두었다. [AIFFEL 2021] 02/ 1, 2주차 후기 & AIFFEL을 선택한 이유 WEEK 01/ 오리엔테이션 OT 1주 차 이틀 동안은 앞으로의 교육 참여에 필요한 다양한 내용을 다루는 오리엔테이션이 있었다. 모두의연구소, 아이펠 AIFFEL의 학습 방식과 문화, 이번 교육 과정이 어떻 nanunzoey.tist..

    [파이썬 코딩의 기술] 클래스 합성으로 복잡한 내포 관계 정리하기

    [파이썬 코딩의 기술] 클래스 합성으로 복잡한 내포 관계 정리하기

    파이썬 내장 딕셔너리 타입은 객체를 동적으로 사용할 수 있도록 해줍니다. 이때 동적(Dynamic)이라는 말은 어떤 값이 들어올지 미리 알 수 없는 상태에서, 값이 들어오면 그때 그때 능동적으로 처리하는 것을 뜻합니다. 예를 들어 다음과 같은 코드가 있습니다. 학생들의 점수를 기록해야 하는데, 학생의 이름은 미리 알 수 없는 상황입니다. 이럴 때는 각 학생별로 미리 정의한 attribute를 사용하는 대신 딕셔너리에 이름을 저장하는 클래스를 정의할 수 있습니다. class SimpleGradebook: def __init__(self): self._grades = {} def add_student(self, name): self._grades[name] = [] def report_grade(self, ..