전체 글 176

torchviz로 모델 시각화 하기

from torchviz import make_dot from torch.autograd import Variable x = Variable(torch.randn(6, 2, 64, 344)) x = x.to("cuda") make_dot(myModel(x), params=dict(list(myModel.named_parameters()))).render("myModel", format="png") 간단해 보이는 script지만 상당히 많은 부분에서 오류가 났습니다. 1. Anaconda environment의 경우에는 pip install torchviz가 아니라 conda install torchviz를 해 줍니다. 2. ubuntu의 경우에는 sudo apt도 해줘야 합니다. sudo apt-get ..

Deep Learning 2022.07.27

소리 데이터를 활용한 딥러닝 - Mel Spectrogram

소리를 이용한 딥러닝을 하는데 있어서 한 가지 방법은 Mel Spectrogram을 이용하는 방법입니다. Mel Spectrogram이란, 소리의 파형을 인간이 들을 수 있는 범위로 줄인 Mel scale로 다운 스케일한 이후 그 파형을 그림으로 그린 모양이라고 할 수 있습니다. librosa library를 이용합니다. audio_file = "sound.wav" y, sr = librosa.load(audio_file) sr = 44100 mel_spec = librosa.feature.melspectrogram(y=y, sr=sr, n_fft=2048, hop_length=1024) mel_spec = librosa.power_to_db(mel_spec, ref=np.max) plt.figure(f..

Audio Processing 2022.07.22

오디오 프로세싱 - for loop를 사용해서 오디오 자르기

오디오를 사용한 딥러닝을 하던 중, 오디오를 잘라야 하는 상황이 발생하였습니다. 참고 링크에서 librosa 라이브러리를 이용하여 오디오를 자르는 방법은 나와 있었지만, 제가 원하는 것은 4초 간격으로 0초부터 4초, 1초부터 5초, .. 등으로 잘라서, 1분짜리 오디오의 경우 56초부터 1분까지의 오디오로 총 57개의 파일로 저장하는 법의 스크립트를 공유합니다. 이를 위해서는, 오디오 파일의 길이를 측정하는 방법을 구하였고, SoundFile이라는 라이브러리를 사용하여, frame 수와 samplerate를 활용하였습니다. import os import librosa import numpy as np import soundfile as sf def trim_audio_data(audio_file, sa..

Audio Processing 2022.07.20

Anaconda 가상환경을 jupyter notebook에서 사용하기

Jupyter Notebook은 여러 개의 파이썬 스크립트를 순차적으로 실행하고 디버깅 해볼 수 있도록 가능하게 하는 좋은 툴입니다. 하지만 항상 머신러닝에서 그러듯이, 가상환경과 라이브러리 인스톨하는게 이슈입니다. 대부분의 라이브러리들은 conda 에서 인스톨이 가능합니다. 하지만 과연 jupyter notebook에서 anaconda 가상환경을 어떻게 사용할 수 있을까요? 커널 연결을 위해서는, 먼저 jupyter notebook을 깔아야됩니다. conda install jupyter notebook 다른 인터넷 자료에 의하면, 가상환경에 jupyter notebook 를 깔지 않아도 jupyter notebook 이 실행되는데, 이 경우 가상환경의 라이브러리를 실행하지 못한다고 합니다. 이후, ip..

환경설정 2022.07.20

리트코드 2337. Move Pieces to Obtain a String (Python3, Medium) - 인덱스와 직관 활용!

문제 링크 : https://leetcode.com/problems/move-pieces-to-obtain-a-string/ 문제 설명 : start라는 string에서, "L"은 왼쪽으로, "R"은 오른쪽으로 이동할 수 있습니다. start에서 target으로 이동할 수 있는지를 False, True를 통해서 return 하세요. 예시) 1. input : start = "_L__R__R_", target = "L______RR" output: True 2. input: start = "R_L_", target = "__LR" output: False 3. input: start = "_R", target = "R_" output: False 접근방법 : 처음에는 start 스트링을 수정하거나, 리스트..

Python time 라이브러리 활용한 로그 찍기

Python time library를 활용한 로그를 찍는 방법을 알아보도록 하겠습니다. Infinite loop가 돌아갈 때, 처음 time을 저장하고, 예를 들어 while loop이 돌아갈 때마다 처음 time에서 계산된 time을 프린트하는 방법을 알아보도록 하겠습니다. import time if __name__ == "__main__": start_time = time.time() while True: this_time = time.time() time_diff = round(this_time - start_time) print(time_diff) # do something # sleep(1) 쓰고 나니깐 너무 간단하네요 ㅎㅎ

Python 2022.05.10

Google Code Jam 2022 참여 후기

Google Code Jam이 끝났습니다. 요즘 리트코드를 풀면서 어느정도 자신감을 늘려 가던 중, 오, 이런 게 있네? 하면서 구글 측에서 일년에 한 번씩 낸 코딩테스트 입니다. 총 5 개의 라운드가 있습니다. Qualification Round는 1주일 정도를 주고, 1차 라운드는 세 번에 걸쳐서 이뤄지고, (1a, 1b, 1c) 두시간 반 안에 풀어야 합니다. 2차 라운드, 3차 라운드, Final Round 까지 있습니다. 1차에서는 한 번의 라운드에서만 통과해도, 통과한 것으로 친다고 합니다. 2차 라운드를 도달하면 티셔츠를 준다고 하고, 3차 라운드를 가면 구글 리쿠르터에서 연락이 온다고 합니다.. ㄷㄷ 이번에 처음 참여를 해봤지만, 느꼈던 점은, 리트코드보다도 더 느린 UI 가 있고, 문제들..

알고리즘 2022.04.30

리눅스에서 재귀적으로 파일들 지우기

%% 주의! 바로 터미널에서 커맨드를 실행하는 건 위험합니다!! %% 중요 파일들이 날아갈 경우 복구하는게 불가능하니, 책임감을 갖고 하세요! %% 큰 힘에는 큰 책임이 따릅니다! 더보기 파일 날아가는 걸 방지하기 위해서 sh 파일을 만들어서 실행하는걸 추천합니다. 정확한 영어 검색은 remove files in linux recursively 였고, 관련 포스트는 https://askubuntu.com/questions/377438/how-can-i-recursively-delete-all-files-of-a-specific-extension-in-the-current-di find . -name "*.bak" -type f 로 일단 확인하고, find . -name "*.bak" -type f -de..

Linux 2022.04.28

여러 개의 (multiple) RTSP 서버 세팅

안녕하세요 여러개의 RTSP 서버의 세팅을 알아보도록 하겠습니다. 제가 아는 분께서는 Wowza Server를 많이 사용하시는데, 이는 유료 서비스이기도 하고, 30일간의 체험 기간이 있긴 하지만 사용에 그렇게 용이하진 않다고 생각이 듭니다. 그래서 무료로 합법적으로 알려드리는 RTSP 서버, 바로 RTSP_SIMPLE_SERVER 입니다. git repository 주소 : https://github.com/aler9/rtsp-simple-server 사실 git을 다운받을 필요는 없고, release 주소에서 다운받으셔서 실행하시면 좋을 것 같습니다. https://github.com/aler9/rtsp-simple-server/releases 사실 맥을 사용해서 맥에서 사용을 해봤는데, 특성상 OS..

Image Processing 2022.04.26