Tech & Development
[Python] 문자열 줄바꿈 하는 방법
[Python] 문자열 줄바꿈 하는 방법
2023.01.17Python에서는 개행 문자 \n을 사용하여 문자열에 줄 바꿈을 추가할 수 있습니다. 예를 들면 다음과 같습니다. string = "This is the first line.\nThis is the second line." print(string) Output: This is the first line. This is the second line. 문자열 클래스의 join() 메서드를 사용하여 여러 문자열을 줄바꿈으로 합칠 수도 있습니다. 예를 들면 다음과 같습니다. lines = ["This is the first line.", "This is the second line."] string = "\n".join(lines) print(string) 이렇게 하면 위의 Output과 동일하게 출력됩니다. ..
[Python] dictionary를 JSON으로 변환
[Python] dictionary를 JSON으로 변환
2023.01.17Python에서는 json module의 json.dumps() Method를 사용하여 dictionary를 JSON 문자열로 변환합니다. import json my_dict = {'a': 1, 'b': 2, 'c': 3} json_string = json.dumps(my_dict) print(json_string) Output : '{"a": 1, "b": 2, "c": 3}' json.dump() Method를 사용하여 JSON 문자열을 파일로 저장할 수 있습니다. with open("data.json", "w") as f: json.dump(my_dict, f) json.dumps() 메서드에는 추가 파라미터를 지정할 수 있습니다. indent, separators, sort_keys 등이 있습니다..
오픈소스 라이선스 (정리)
오픈소스 라이선스 (정리)
2023.01.06라이선스 종류 오픈소스 라이선스를 분류한 기준은 다음과 같습니다. Reciprocal vs Permissive 오픈소스 라이선스를 분류할 때 가장 중요한 기준은 Copyleft 조항이 있는지 여부입니다. Copyleft조항 즉, 배포시 소스코드 제공의무 있는지(Reciprocal) 없는지 (Permissive)로 우선 분류됩니다. 조합저작물 작성 및 타 라이선스 허용 Copyleft 중에서도 타 라이선스를 허용하는지에 따라 Strong Copyleft/ Weak Copyleft로 나눌 수 있습니다. 추가 제약 존재 Copylef가 아닌 라이선스 즉 Permissive 라이선스의 경우,공통 준수사항 외에 추가적인 제약사항이 존재하는지 여부로 나눌 수 있습니다. 추가로, 라이선스의 출현 배경에 따라서 크게 ..
Fine tuning GPT3 Model
Fine tuning GPT3 Model
2023.01.041. OpenAI API 키 발급 OpenAI API An API for accessing new AI models developed by OpenAI beta.openai.com OpenAI API 수행을 위해서는 먼저 API Key 발급이 필요합니다. OpenAI 계정이 필요하며 계정이 없다면 계정 생성이 필요합니다. 간단히 Google이나 Microsoft 계정을 연동 할 수 있습니다. 이미 계정이 있다면 로그인 후 진행하시면 됩니다. 로그인이 되었다면 우측 상단 Personal -> [ View API Keys ] 를 클릭합니다. [ + Create new secret key ] 를 클릭하여 API Key를 생성합니다. API key generated 창이 활성화되면 Key 를 반드시 복사하여 ..
Object Detection 정리 (History)
Object Detection 정리 (History)
2022.12.14이미지 내에서 사물을 인식하는 방법에는 다양한 유형이 존재합니다. 그중 Object Detection에 대해 정리를 하려고 합니다. 먼저 내용은 개인적인 경험을 바탕으로 한 매우 주관적인 내용이라는 점을 미리 말씀드립니다. 저는 사실 Object Detection을 처음 접한 것은 2018년이라고 해야 할 것 같습니다. 이미지에서 내가 원하는 영역만 찾으면 좋겠다는 생각은 했지만, Public Dataset이 아닌 내가 원하는 Object를 기준으로 Dataset을 만들고 학습시키는 과정이 처음에는 쉽지 않았습니다. 처음에 R-CNN을 이용하여 개발해보고 "이 결과가 잘 나온 것인가?"라는 의문도 들었던 때도 있었고, YOLO를 개발하기 위해 Darknet Framwork를 설치하고 환경설정을 하면서 꽤..
[ Python ] Object Detection using MobileNet SSD (D/L)
[ Python ] Object Detection using MobileNet SSD (D/L)
2022.11.29Deep Learning 모델을 이용하여을 객체를 검출하는 방법에 대해 알아보도록 하겠습니다. Object Detection 분야에 딥러닝을 최초로 적용시킨 모델이 2013년 11월에 등장하는데 그 모델이 바로 R-CNN(Regions with Convolutional Neuron Networks features) 입니다. 분명 기존의 다른 모델과 비교해 성능을 상당히 향상시킨 모델이였지만 처리속도가 매우 느려서 Real-Time에서 활용하기 어렵습니다. (실제로 이미지 한장단 GPU환경에서는 13초가 걸렸으며 CPU로는 53초가 걸렸습니다.) 이후 수많은 Deep Learning 이용한 모델들이 등장하기 시작하는데, 그들의 고민 중 하나가 바로 처리속도 였습니다. MobileNet SSD MobileN..
[ Python ] Color Detection using XGBoost (M/L)
[ Python ] Color Detection using XGBoost (M/L)
2022.11.28지금은 Deep Learning을 기반으로 하는 Object Detection 알고리즘이 많고 성능 역시 뛰어나지만 더 간단하게 M/L 방법을 이용하여 객체를 찾고 분류하는 것이 가능합니다. 물론 정확도 측면에서는 부족하지만 속도면에서는 월등히 앞서고 쉽게 응용하여 다양한 시도를 할 수 있습니다. 이전 글에서 소개했던 Color Detection 을 이미지 연산이 아닌 XGBoost Model을 이용하여 수행하려고 합니다. 1. XGBoost Classification Model 생성 XGBoost 패키지 설치 pip install xgboost Import packages from xgboost import XGBClassifier from xgboost import plot_importance fro..
[ Python ] Template Match Detection
[ Python ] Template Match Detection
2022.11.25이미지 연산 방법을 통해 영역을 찾는 방법 중 네번째로 윤곽선이 아닌 템플릿과 일치되는 영역을 검출하는 방법에 대해 알아 보겠습니다. 사용하는 방법은 윤곽선 검출을 이용하는 것 만큼이나 간단합니다. Import packages import numpy as np from imutils.object_detection import non_max_suppression import cv2 import matplotlib.pyplot as plt Function declaration Jupyter Notebook 및 Google Colab에서 이미지를 표시할 수 있도록 Function으로 정의 def img_show(title='image', img=None, figsize=(8 ,5)): plt.figure(fi..
[ Python ] Bright Spot Detection
[ Python ] Bright Spot Detection
2022.11.24이미지 연산 방법을 통해 영역을 찾는 방법 중 세번째로 객체의 빛을 이용하여 검출하는 방법에 대해 알아 보겠습니다. 앞서 소개한 이미지 연산을 통한 Object Detection 방법(Shape, Color)을 포함하여 이 글에서 다루는 Bright spot detection 까지 매우 단순한 방법입니다. 이 자체만으로는 현재 직면하고 계신 문제를 풀 수 없을지도 모릅니다. 하지만 이런 기능들로부터 영감을 받아 고민하고 응용한다면 꽤 훌륭한 결과물을 만들 수도 있을 것이라 생각합니다. Import packages import cv2 import numpy as np from scipy.spatial import distance as dist import imutils import matplotlib.py..
[ Python ] Color Detection
[ Python ] Color Detection
2022.11.24이미지 연산 방법을 통해 영역을 찾는 방법 중 두번째로 객체의 색상을 이용하여 검출하는 방법에 대해 알아 보겠습니다. Import packages import cv2 import numpy as np from scipy.spatial import distance as dist import imutils import matplotlib.pyplot as plt Function declaration Jupyter Notebook 및 Google Colab에서 이미지를 표시할 수 있도록 Function으로 정의 def img_show(title='image', img=None, figsize=(8 ,5)): plt.figure(figsize=figsize) if type(img) == list: if type..
[ Python ] Shape Detection
[ Python ] Shape Detection
2022.11.23이미지에서 원하는 영역을 찾기 위해 DeepLearning 기반의 모델을 사용하지만, 매우 간단하게 이미지 연산 방법을 통해 영역을 찾을 수도 있습니다. 그 첫번째로 윤곽선의 속성을 이용하여 모양을 검출하는 방법에 대해 알아 보겠습니다. 이미지를 그레이스케일로 변환 노이즈를 줄이기 위한 이미지 블러링 이미지의 이진화 윤곽선 검출 추출된 윤곽선을 기준으로 근사 다각형 검출 Shape 종류 판단 Import packages import cv2 import imutils import matplotlib.pyplot as plt Function declaration Jupyter Notebook 및 Google Colab에서 이미지를 표시할 수 있도록 Function으로 정의 def img_show(title=..
[ OpenCV ] Basic 7 - 이미지 자르기 (Crop)
[ OpenCV ] Basic 7 - 이미지 자르기 (Crop)
2022.11.21Image Crop Crop은 이미지에서 필요한 이미지의 일부만 잘라내기 위해 사용합니다. 예를들어, 이미지에서 얼굴 영역만 찾아 잘라내는 기능을 개발한다면 Crop을 통해 잘라낼 수 있습니다. Import packages import cv2 import imutils import matplotlib.pyplot as plt Jupyter Notebook 및 Google Colab에서 이미지를 표시할 수 있도록 Function으로 정의 def img_show(title='image', img=None, figsize=(8 ,5)): plt.figure(figsize=figsize) if type(img) == list: if type(title) == list: titles = title else: ti..