분류 전체보기 176

오디오 딥러닝을 해봅시다! (Sound Classification) - 2. 모델을 이용해서 학습하기

전 포스팅 데이터 전처리 에서 데이터 전처리 과정에 대해서 다뤄봤습니다. 이번 포스팅에서는 데이터 전처리에서 처리한 SoundDS 클래스를 어떻게 사용하는지 살펴봅시다. Data Loader 를 사용한 데이터 Batch 사용하기 custom Dataset을 사용하여 Feature와 Label을 모은 데이터를 8:2로 나눕니다. 다음 이미지를 참조하여 주세요! from torch.utils.data import random_split myds = SoundDS(df, data_path) # Random split of 80:20 between training and validation num_items = len(myds) num_train = round(num_items * 0.8) num_val = n..

Deep Learning 2022.09.08

오디오 딥러닝을 해봅시다! (Sound Classification) - 1. 데이터 전처리

오디오 딥러닝을 해 봅시다! (사운드 분류) 전체 개념 오디오 딥러닝을 하기 위해서는, 오디오 파일을 Spectrogram이라는 이미지 파일로 만들고, 그걸 이용해서 CNN을 이용한 딥러닝이 가능합니다. 참조에서는 4초 정도의 오디오 파일들을 모은다고 합니다. 데이터 전처리 및 라벨링 라벨링은 여러가지 방법이 있겠지만, 여기서는 CSV 파일을 활용합니다. Pandas를 이용해서 label 정보를 모아줍니다. Pandas는 conda를 이용한다면 conda install, 또는 pip로 설치가 가능합니다. # ---------------------------- # Prepare training data from Metadata file # ---------------------------- import p..

Deep Learning 2022.09.06

Python 에서 많이 쓰이는 라이브러리 defaultdict

리트코드를 하다보면, 파이썬에서 많이 쓰이는 라이브러리들이 몇 가지 있는데, 그 중 많이 쓰는 라이브러리인 defaultdict에 대해서 알아보도록 하겠습니다. 리트코드를 하다보면, 대략 20프로, 30프로 정도의 문제에서 defaultdict를 쓰면 코드양을 확연하게 줄일 수 있는 좋은 함수라고 생각합니다. 1. import 방법 from collections import defaultdict 2. 활용 및 설명 (1) Counter로 활용! Python에서 자주 사용하는 Counter 모듈도 defaultdict로 쉽게 구현할 수 있습니다. lst에 수를 구하고 싶은 item들이 있다고 할 때, from collections import Counter lst = ["a", "a", "a", "b", ..

알고리즘 2022.08.31

안드로이드에서 소리 분류 custom data를 학습시키기 (tflite, yamnet)

안드로이드에서 tflite를 이용해서 모델을 이용한 소리 분류 앱을 만드는 튜토리얼을 진행해 보았습니다. 대부분의 코드는 이 튜토리얼 참조 하였습니다. 참조: 선행학습된 커스텀 오디오 분류 모델 빌드 튜토리얼에서는 새 데이터를 사용하여서 5종류의 새 울음소리를 학습하였습니다. 기본적인 앱은 앞선 튜토리얼과 상당히 비슷합니다. 오디오 분류를 위한 기본 앱 만들기 MainActivity 안에 모든 코드가 있으며, 다음과 같습니다. class MainActivity : AppCompatActivity() { var TAG = "MainActivity" // TODO 2.1: defines the model to be used var modelPath = "this_model.tflite" // TODO 2.2..

anaconda를 사용한 tensorflow lite 환경설정

tensorflow lite 에서의 anaconda 환경설정에 대해 알아보도록 하겠습니다. 우선 파이썬 버전을 3.8 이하로 맞춰주는게 중요합니다. anaconda 환경을 만들면서, python 버전을 맞춰줍시다. Linux 의 경우 3.5에서 3.8까지 가능하다고 합니다. Mac의 경우 3.5에서 3.7까지 가능하다고 하네요! (주의주의!!) 참조 : 텐서플로우 라이트 환경설정 파이썬 3.8로 만들어봅시다. conda create --name tflite python=3.8 conda install 이 아닌 pip로 인스톨을 해준다고 합니다. python3 -m pip install tflite-runtime jupyter 를 실행시키기 위해서 jupyter notebook 을 인스톨 하고, 환경을 등..

환경설정 2022.08.26

안드로이드 앱 tflite 모델 로드하던 중 에러 해결(metadata)

안드로이드에서 머신러닝을 몇 가지 해 보던 중, object detection 어플리케이션을 해 봤는데, audio classification 앱은 실행되지 않는 것을 발견했습니다. 오랜 디버깅 끝에, LogCat에서 다음 로그를 발견했습니다. E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.mysoundclassification, PID: 31078 java.lang.AssertionError: Error occurred when initializing AudioClassifier: Models are assumed to have the ModelMetadata and SubGraphMetadata. 알아보니, model을 asset 폴더에 ..

안드로이드 스튜디오 사용해서 안드로이드 폰에 포팅하기

일단 먼저, 안드로이드 폰을 개발자 모드로 만들어야 합니다. 제가 가지고 있는 폰 (갤럭시 S22)의 경우에는 먼저 개발자 모드를 들어가야 합니다. 참조 : 온디바이스 개발자 옵션 구성 안드로이드 9 이상에서, 설정 -> 휴대전화 정보 -> 빌드 번호를 7번 클릭하면 개발자 모드로 설정이 가능한데, 여기서 비밀번호를 잊어버려서 굉장히 고생을 했습니다. 결국 비밀번호를 기억해 냈지만, 비밀번호를 기억해 내지 못하면, 삼성계정으로 원격 풀기를 하지 않으면 실질적으로 상당히 힘들어 보입니다. 삼성계정으로 원격잠금해제 여튼 개발자 모드를 들어간 이후엔, 설정 -> 시스템 -> 고급-> 개발자 옵션 -> USB 디버깅 모드를 켜 줍니다. 여기서 안드로이드 스튜디오로 들어가서 실행을 누르면 앱이 자동적으로 깔아짐을..

pycocotools를 이용해 masking하기!

pycocotools를 통해서 masking을 하는 방법을 알아보도록 하겠습니다. 주피터 노트북에서의 파일을 준비하는 과정입니다. coco 포맷은 yolo 포맷과는 달리 segmentation이 있기 때문에 bounding box가 아닌 masking이 가능한 것 같습니다. 1. COCO Dataset 사용 준비하기 %matplotlib inline from pycocotools.coco import COCO import numpy as np import skimage.io as io import matplotlib.pyplot as plt import pylab # pylab.rcParams['figure.figsize'] = (8.0, 10.0) dataDir='.' dataType='val2017'..

Image Processing 2022.08.08

Weekly Contest 305. (2367~2370) (list, graph, dp)

오랜만에 리트코드 컨테스트를 다 풀었습니다. problem 2367. Number of Arithmetic Triplets 코드 : class Solution: def arithmeticTriplets(self, nums: List[int], diff: int) -> int: res = 0 for i in range(len(nums)-2): for j in range(i+1, len(nums)-1): for k in range(j+1,len(nums)): if nums[j] - nums[i] == diff and nums[k] - nums[j] == diff: res += 1 return res 설명 : Brute force 알고리즘이 통할 것으로 보여서, Brute force를 사용하였습니다. O(n^..