- 프로그래머스 과제 테스트를 봐야해서 팀원들에게 양해를 구하고 모임을 미뤄야 했다. 과제테스트를 처음해 봤는데, 구글링이 가능해서 열심히 코드를 복붙해서 과제를 제출했는데, 다행히도 1차 과제 심사는 합격이다. 면접 기회를 얻을 수 있다면 좋겠는데, 아직 연락은 없다. 서류 탈락인가,,
- 대면 미팅을 하게 되면 세미나도 진행하고 두 번째 미니프로젝트도 진행해야하는데 요새 프로젝트 및 해커톤 등으로 일정이 너무 바빠서 준비를 거의 하지 못했다. 서울에서 대면 미팅을 하게 되면 유익한 시간이 될 수 있도록 준비를 잘 해야한다.
- 이번 주 데이크루 포스팅에는 내가 세미나 발표 했던 부분이 게시되었다. 코드는 거의 책에서 가져오지만 조금씩 변형하면서 실험하고 어떤 것들이 반영되는지 확인하는 것만으로도 opencv에서 지원하는 것들을 알 수 있어서 좋았다. 프로젝트 진행하면서 opencv도 많이 사용하게 되는데 확실히 도움이 된다.
import streamlit as st
from hydralit_components import HyLoader, Loaders
from hydralit.app_template import HydraHeadApp
class LoadingApp(HydraHeadApp):
def run(self,app_target):
try:
app_title = ''
if hasattr(app_target,'title'):
app_title = app_target.title
# with HyLoader("Now loading {}".format(app_title), loader_name=Loaders.standard_loaders,index=[3,0,5]):
app_target.run()
except Exception as e:
raise e
File "/opt/conda/envs/lib/lib/python3.8/site-packages/streamlit/scriptrunner/script_runner.py", line 475, in _run_script
exec(code, module.__dict__)
File "/opt/ml/input/code/project/pipeline/zzolflix.py", line 4, in <module>
import hydralit as hy
File "/opt/conda/envs/lib/lib/python3.8/site-packages/hydralit/__init__.py", line 5, in <module>
from hydralit.hydra_app import HydraApp
File "/opt/conda/envs/lib/lib/python3.8/site-packages/hydralit/hydra_app.py", line 4, in <module>
from hydralit.sessionstate import SessionState
File "/opt/conda/envs/lib/lib/python3.8/site-packages/hydralit/sessionstate.py", line 8, in <module>
from streamlit.script_run_context import get_script_run_ctx
ModuleNotFoundError: No module named 'streamlit.script_run_context'
라이브러리를 설치하고, hydralit까지 설치해서 가장 기본적인 앱을 실행시켰는데, 해당 에러가 나왔다.
hydralit은 streamlit에 영향을 받는 라이브러리인 것 같다.
streamlit에 버전에 따라 hydralit쪽에서 에러가 발생할 수 있다.
[해결방법]
File "/opt/conda/envs/lib/lib/python3.8/site-packages/hydralit/sessionstate.py", line 8, in <module>
이 경로로 이동한 뒤, 소스를 직접 수정해주어야 한다.
#v1.7.0
from streamlit.script_run_context import get_script_run_ctx
#v1.8.0
from streamlit.scriptrunner.script_run_context import get_script_run_ctx
에러 메세지를 타이틀만 기록해서 상세한 에러 메세지는 stackoverflow에서 가지고 왔다.
Searching for pyaudio
Reading http://pypi.python.org/simple/pyaudio/
Reading http://people.csail.mit.edu/hubert/pyaudio/
Best match: pyaudio 0.2.4
Downloading http://people.csail.mit.edu/hubert/pyaudio/packages/pyaudio-0.2.4.tar.gz
Processing pyaudio-0.2.4.tar.gz
Running PyAudio-0.2.4/setup.py -q bdist_egg --dist-dir /tmp/easy_install-0Tetss/PyAudio-0.2.4/egg-dist-tmp-PYy9T8
In file included from /usr/include/python2.7/Python.h:8:0,
from src/_portaudiomodule.c:30:
/usr/include/python2.7/pyconfig.h:1155:0: warning: "_POSIX_C_SOURCE" redefined
/usr/include/features.h:214:0: note: this is the location of the previous definition
src/_portaudiomodule.c:31:23: fatal error: portaudio.h: No such file or directory
compilation terminated.
error: Setup script exited with error: command 'gcc' failed with exit status 1
- 예전에 알고리즘을 활용해서 제스쳐 분류를 했을 때, 제스쳐를 하나 추가할 때마다 조건문 사이에 간섭이 일어나 동작을 추가하기 어려웠다. 하지만 인공지능을 활용하여 데이터를 구축하면 보다 쉽게 제스쳐를 추가할 수 있다는 메리트가 발생하게 되었다. 전부터 시간이 나면 혼자서라도 코드 업데이트 해야지 했던 것을 데이크루에서 팀원들과 같이 할 수 있어서 좋았다.
- 인공지능사관학교 시절 한 손 제스쳐 모델인 지화 모델 제작 프로젝트에서 정규화를 적용할 때, 좌표 정규화와 벡터 정규화를 나눠서 실험을 진행했고, 실험 결과 좌표 정규화가 잘 나왔던 경험이 있었다. 그래서 이번 양손 제스쳐에서도 좌표 정규화가 잘 나올 것이라 생각했는데, 벡터 정규화가 성능이 더 잘 나와서 신기했다. 아마 양 손으로 변경된 점, 모델 네트워크 구조 변경으로 데이터 정규화에 영향을 미친 것 같다. 과적합 방지를 위해 모델 구조를 변경하면서 데이터 정규화의 효과가 크게 나타나지 않았지만, 전에 했던 프로젝트에서는 효과가 엄청났었다. 이번 기회를 통해 데이터 전처리도 중요하고 모델 네트워크도 복합적으로 영향을 준다는 사실을 체험할 수 있었다.
- 데이크루 활동을 하면서 OpenCV 공부를 하게 되니 네이버 부스트캠프 프로젝트를 진행하면서 확실히 도움이 되는 것 같다. 간단한 opencv 코드는 금방 작성할 수 있게 되었다. 예를 들어 비디오를 불러와 사진으로 모두 저장하는 코드를 간단하지만 팀원들 앞에서 라이브 코딩을 하게 되었다. Computer Vision Task에서 시시때때로 opencv가 등장하기 때문에 분명 좋을 것이라는 생각으로 시작한 것이 잘한 일이라고 생각한다. 데이크루 3기 팀장으로 다음 기수를 이끌어 볼 수 있을지 모르겠다.
- 데이크루 덕분에 블로그에 게시글을 주에 1개씩을 올릴 수 있어서 좋다. 내 블로그의 취지는 에러를 만날 때마다 글을 작성하여 다른 개발자들에게 도움을 주는 것이었는데, 요새 에러를 많이 아주 많이 만났지만, 시간을 내서 기록하지 못했다. 기록 해야지 해야지만 하고 아직 못 하고 있는데, 작은 것이라도 기록하려고 노력해야 한다. 내 머리를 믿어선 안 된다. 열심히 기록해두고 나중에 오답노트처럼 활용해야 한다.
[해야할 것]
- 두 번째 미니프로젝트 공부하기(새로운 데이터로 학습시켜보기, attention network 공부하기)
- 세미나 준비를 위해 영상 분할을 공부하였는데, 역시 세미나의 힘은 대단했다. 공부에 강제성을 부여할 수 있었고, 내 발표 파트를 집중적으로 공부할 수 있었다. 준비하면서는 OpenCV의 함수 사용 위주였으나, 함수 인자로 들어가는 method를 변경하면 결과가 달라져 method를 변경하며 실험 결과를 가시화했다. 몰아서 하지 않기 위해 하루하루 2 ~ 3개의 예제를 기록했다. 세미나를 맡게 된 주는 매일 한 시간 정도씩은 발표 자료 제작을 위해 투자한 것 같다.
- 첫 번째 미니프로젝트가 내 의도대로 디자인 되었다. Mediapipe와 LSTM을 활용한 양손 제스쳐 인식 프로그램을 직접 학습시켜 보는데, 이 때 2가지 문제가 발생하게 된다. 첫 번째는 과적합에 대한 문제이고 두 번째는 위치 종속성에 대한 문제이다. 예전에 인공지능 공부를 하면서 그냥 넘어갔던 부분을 팀원들과 함께 다시 복기할 수 있어서 좋았다. 팀원들이 서로 의견을 공유하면서 나름 의미있는 결과물이 나온 것 같아서 좋다.
- 정환님께서 준비해주신 다음 프로젝트를 공부해야할 것 같다. pytorch에 익숙해져야 하고 네트워크 구조를 변경하면서 실험을 진행하고 성능을 향상시켜보는 것을 목표로 하자고 하셨다. 팀장님이 생각보다 공부를 열심히 해서 오셨다. UNet의 네트워크 구조에 대한 설명 그리고 팀장님께서 정환님의 코드를 돌려보고 코드에 대한 설명을 해주셨다. 다행히도 부스트 캠프에서 Segmentation Task를 진행할 때였고, UNet에 대한 설명을 공부하고 가서 이해가 잘 되었다.
- 벌써 데이크루 2기도 절반 이상 지나가고 있다. 부스트 캠프도 프로젝트에 들어갔고, 마무리 단계에 있다. 나태해지는 것을 방지하여 데이크루를 신청했던 것으로 바쁜 나날을 보내고 있는데, 또 좋은 점은 데이콘에 더 방문하게 되고 대회들이 눈에 들어오면서 시간 날 때마다 코드 제출을 해봐야겠다라는 생각을 하게 되었다. 수어 관련한 데이콘 자체 대회가 열리는데 도전해 볼 수 있을 것 같다는 생각이 들어 참가 버튼을 눌러 놓은 상태이다. 도전!
[해야할 것]
- 두 번째 미니프로젝트 공부하기(새로운 데이터로 학습시켜보기)
- 차주 게시물을 위한 첫 번째 프로젝트의 정규화 관련 내용 정리하기(이태범 팀원과 함께 작업)