반응형

Python 20

[keras] ValueError: Unknown optimizer: AdaBeliefOptimizer. Please ensure this object is passed to the `custom_objects` argument 에러해결

개발환경 - google colab 1. Problem tensorflow keras를 사용하면서 optimizer를 custom에서 사용하고 학습한 모델을 'h5' 형태로 저장한 후 다시 load할 때 해당 에러가 발생했다. 2. Reason tensorflow keras는 'h5' 형태로 모델을 저장할때 기존 라이브러리에 있는 optimizer나 activation function만 저장되기 때문 그렇기 때문에 custom해서 사용한 optimizer는 저장되지 않음 3. Solution 모델을 load 할 때 custom_objects key값에 optimizer name 그리고 value에 custom optimizer를 넣음 model = tf.keras.models.load_model('./C..

ML | DL/Tensorflow 2022.03.19

[clustering] tslearn의 TimeSeriesKmeans 사용방법

클러스터링은 Unsupervised Learning으로 데이터들의 군집을 예측하는 것이 목적이다. 일반적으로 kmeans는 각 데이터 사이의 distance를 구해서 군집마다 center에 가장 가까운 데이터 끼리의 패턴을 찾는다. 하지만 시계열로 되어있는 데이터를 클러스터링 해버리면 시간에 따른 정보가 사라지기 때문에 다른 방법이 필요하다. 그래서 이번에 소개할 TimeSeriesKmeans는 시간에 따른 군집화가 가능하기 때문에 위의 문제를 해결할 수 있는 알고리즘이며, tslearn 라이브러리로 쉽게 사용이 가능하다. 1. 설치 해당 명령어로 tslearn을 설치할 수 있다. !pip install tslearn 2. 데이터 생성 32row 1column의 array를 50개 생성한다. import..

PoseNet keypoint로 skeleton 그리기

Pose Estimation model로 신체의 좌표를 추출하였을 때 제대로 추출되어있는지 확인하는 과정이 필요하다. 해당 코드는 PoseNet의 좌표를 matplotlib을 이용해 스켈레톤으로 그리는 코드이다. skeleton_plot 함수에 하나의 Frame에 대한 좌표값 -> sample 그리고 'ro' or 'bo' 같이 원하는 컬러를 입력하면 된다. -> color 다른 모델을 사용할때에는 각 관절에 맞게 코드 변환이 필요하다. def plot_line(a, b): # 관절마다 선긋기 if (a.any()> 0 and b.any()>0): plt.plot([a[0], b[0]], [a[1], b[1]], 'k-') def draw_skeleton(sample, pattern): keypoint ..

PoseNet keypoint로 신체 각도 구하기

해당 코드를 사용하기 위해서는 Pose Estimation model을 통하여 포즈의 좌표를 추출한 다음 원하는 신체 부위의 값을 입력해야 한다. posenet으로 예를 들어 왼쪽어깨의 각도를 추출하고 싶으면 p1 - left shoulder, p2 - left elbow, p3 - left hip 이처럼 변수에 좌표 xy값을 입력한다. angle_vec의 True, False 여부로 시계방향, 반시계방향으로 각도를 얻을 수 있다. def get_angle(p1 : list, p2 : list ,p3 : list, angle_vec : bool) -> float: """ 세점 사이의 끼인 각도 구하기 """ rad = np.arctan2(p3[1] - p1[1], p3[0] - p1[0]) - np.ar..

Pose Similarity - Weight Distance Python 코드

코사인 거리는 매우 훌륭하고 좋은 결과 값을 주긴 하지만 아직 큰 결함이 있다. Confidence Score는 Pose를 추정할 때 이 좌표에는 어떤 키포인트가 있을지 얼마나 확신하는지 알려주는 정도이다. 이 정보를 무시한다면 우리는 매우 중요한 정보를 버리는 것이다. def weightedDistanceMatching(poseVector1, poseVector2, score): """ poseVector1 = [120(x), 230(y) ...] poseVector2 = [324(x), 232(y) ...] score = [0.2, 0.3 ....] """ # test coordinate vector1PoseXY = poseVector1 vector1Confidences = score # test t..

파이썬으로 동영상 파일 처리 방법

123456789101112131415161718192021222324252627282930#!pip install opencv-python import opencv file_path = ' 파일 경로 ' cap = cv2.VideoCapture(file_path) # 프레임 수 확인 frames = int(cap.get(cv2.CAP_PROP_FRAME_COUNT)) len(frames) # 프레임 전부 읽어오기 n_frames = []ret = True while ret: ret, frame = cap.read() if not ret: break RGB = cv2.cvtColor(cv2.COLOR_BGR2RGB) n_frames.append(RGB) # 이미지 확인 cv2.imshow('img', n..

freeze_support() error 해결

개발환경 - window10 - pytorch 1.2.0 - pycham 2020.3.3 1. Problem pytorch를 사용해서 model을 학습하려고 할 때 해당 error가 발생하였다. 2. Reason window 환경은 unix, linux와 다르게 *fork 를 지원하지 않고 *spawn을 사용한다고 하는데 spawn은 부모프로세스와 자식 프로세스가 구분되지 않아 프로세스를 계속 불러오는 재귀호출이 발생한다. * fork : 부모 프로세스에서 자식 프로세스를 하나 복제 생성해 주는 역할을 한다. 이때 복제 생성시, 부모 프로세스와 같은 프로세스가 만들어짐 * spawn : 부모 프로세스는 깨끗한 새 파이썬 인터프리터 프로세스를 시작한다. 자식 프로세스는 프로세스 객체의 run() 메서드를 ..

[AWS] AWS EC2 시작부터 jupyter notebook 설치

Ubuntu Server을 선택한다. 이 화면이 나오면 그대로 '검토 및 시작' 버튼을 클릭한다. 이 화면에서도 '시작하기' 버튼을 눌러 넘어간다. 키페어를 '새 키페어 생성'으로 바꾸고 파일이름을 설정한다. 나는 보시다시피 'good'으로 지었다. 그 후 키페어를 다운받은 후 '인스턴스 시작'을 누른다. (키페어는 중요하기 때문에 잘 보관하길 바람) 실행이 완료되면 이런 화면이 뜬다! 나는 인스턴스를 중지했기 때문에 '중지됨' 이지만 처음 시작하면 실행중 이라고 되있다. 여기까지 끝나면 아까 다운받았던 키페어 파일로 간다 (good.pem 이런식으로 저장되있음) 파일의 속성을 들어가자. 그 후 보안클릭 후 고급설정을 들어가면 이런 설정이 나오는데 Administrators 와 SYSTEM을 제외한 것들..

반응형