반응형

⌨Programming/Python

    세그멘테이션모델 인퍼런스결과를 원본과 합치기

    컴퓨터비전 중 Segmentation태스크와 관련한 프로젝트를 진행하다 마주친 문제 중 하나를 작성해보려고 한다. 미리 말하자면 세그멘테이션 모델의 인퍼런스 결과인 마스크 사진과 원본을 합성하는 내용을 다룬다. 케글이나 데이콘같은 Competition이야 이미지 분류의 경우 f1 score, 세그멘테이션 같은 경우 mIoU같은 metric을 평가지표로 모델의 성능을 평가하는데 초점을 두지만 실제로 AI를 활용한 서비스에서는 모델 인퍼런스의 결과를 활용하는 것도 중요하다. 이미지분류같은 경우 다른 테스크에 비해 간단해 초보자도 조금만 찾아보면 쉽게 실제 서비스에 적용할 수 있으나 Object Detection, Segmentation같은 경우 초보자가 인퍼런스 결과를 활용하기가 쉽지 않다. 글쓴이의 경우 ..

    파이썬 환경변수 설정으로 보안관리하기

    프로그래밍을 할 때 DB정보, AWS정보, 계정정보 등과 관련된 사항은 코드에 노출되거나 github같은 곳에 올라가면 보안적 측면에서 위험하다, 환경변수 설정으로 해당 내용들을 코드에 노출되지 않게 설정해보자 이를 python-dotenv라이브러리를 사용함으로써 관리할 수 있다 설치 pip install python-dotenv 사용법 실행할 프로젝트 디렉토리 내에 .env 파일을 생성한다 환경변수로 설정할 키워드를 작성한다 ex) aws_secret_key=엑세스키지롱 문자열의 경우에도 ""가 필요하지 않다 불러올 .py파일에서 from dotenv import load_dotenv 로 라이브러리를 불러온 후 아래와같이 os.getenv("불러올 환경변수 이름") 으로 불러온다 이렇게 열심히 중요정보..

    파이썬 global & nonlocal 키워드

    global & nonlocal 프로그래머스 문제를 풀다가 변수 scope관련 문제가 생겨서 정리하는 포스팅 프로그래머스는 나머지 알고리즘문제 풀이 사이트와 달리 아래와 같이 Solution함수를 제출하는 형식이다 흔히 아는 global키워드는 함수 내부에서 함수 외부에 있는 전역변수에 대한 수정을 할 때 선언한다 global을 선언하지 않고 함수 내부에서 n에 관한 업데이트를 하게된다면 바깥 scope의 n의 내용은 변경되지 않는다 ## 예시 n = 1 def solution(num,target): global n n += 1 이번엔 아래와 같은 상황을 생각해보자, Solution 내부에 dfs() 라는 함수를 만들고 solution에 있는 n을 수정하고 싶을 때 위와 같이 global을 사용하게 되면..

    파이썬으로 S3 bucket의 다양한 정보를 가져와보자(오브젝트 url, 생성시간 etc...)

    파이썬을 이용해 S3 bucket의 정보를 가져와 보자! S3는 AWS에서 제공하는 Simple Storage Service이다. 간단하게 그냥 편리한 저장소라고 생각하자! S3에는 object가 bucket에 저장되는데 저장(또는 업로드)만 해놓으면 외장하드랑 다를바가 없다 예를 들어 이미지를 업로드 하였을경우 이 이미지 오브젝트에는 생성시간, 이미지url, 이미지 type등 다양한 정보가 기록되고 저장된 정보를 다양한 방법으로 사용할 수도 있다. 그러나, 사진이 한 두장인 경우 이러한 정보를 일일이 복사 붙여넣기를 하든 타이핑을 하든 상관없지만 갯수가 많아지거나 어떤 프로젝트를 만들고 싶을 때는 곤란한 일이 생길 것이다. 아래 깃허브에는 파이썬을 사용하여 정보를 가져오는 코드들이 작성되어 있다. 큰 ..

    [python, 파이썬] sum 함수를 이용한 차원축소 및 병합

    sum 함수를 이용한 차원축소 및 병합 여태까지 알던 파이썬 내장함수인 sum의 기능은 단순히 iterable한 객체들의 합을 리턴해주는 걸로만 알고있었다. 내부 docs를 봐도 아래처럼 start값을 지정해주면 iterable의 합과 start를 더해준다까지만 나와있을 뿐이다. 그런데 sum을 이용해 리스트의 차원을 낮추고 병합까지 하는 기능을 이용할 수 있다! sum(다차원 리스트, [ ])를 통해 차원을 축소하고 병합까지 가능하다. 아래는 예시이다 arr = [[1, 0, 3], [4, 0, 6]] print(sum(arr, [])) # 결과 : [1, 0, 3, 4, 0, 6] arr = [[[1, 0, 3], [0, 1, 2]], [[4,5,6], [7,8,9]]] print(sum(arr, [..

    파이썬 JSON파일 다루기(읽기, 쓰기, 수정)

    JSON파일을 다룰 때 매번 검색하는 과정이 귀찮아져서 정리해두려 작성하는 포스튕 기본적으로 open()을 통해 파일을 다양한 방식으로 열 수 있다. 'w' : 쓰기전용(파일이 있으면 덮어씌움) 'a' : 쓰기전용(파일이 있으면 덧붙임) 'x' : 쓰기전용(파일이 있으면 에러 발생) 'r' : 읽기전용(파일이 없으면 에러발생) 그러나 open()을 사용하면 아래와 같이 close()로 외부자원 연결을 해제해야하는데 번거롭다 file = open('./test.txt', 'w') file.close() 이는 with~as 문을 이용하면 파일 닫기(close)를 생략할 수 있다. 아래에서 JSON파일을 다루는 법과 함께 사용법을 Araboza JSON 파일 읽기 json을 불러올 때는 json 모듈내의 lo..