Script언어의 매력
학부 생활을 하면서 python에 대해서 듣기는 많이 들었지만 실제로 사용해본 적이 없었다. 당시 학교에서는 계산 및 시뮬레이션 연산을 하는데 매트랩 위주였기 때문에 접할 필요성을 느끼지 못한 것이 사실이다. 그러다 취업을 하고 회사를 다니면서 파이썬의 매력에 빠지게 되었다. 회사에서는 매트랩은 1 copy만 보유하고 있기 때문에 필요한 사람들끼리 돌려쓰거나, 공용 PC에 설치해서 사용하는 방법으로 사용하는데는 한계가 있다. 그래서 찾아보니 내가 매트랩으로 하는 간단한 이미지 처리는 파이썬으로도 충분히 하고도 남는다는 사실을 알았다. 거기다가 파이썬은 무료!!다.
파이썬 기본 모듈 이외의 다양한 모듈은 인터넷, github에서 다운로드 받을 수 있다. 매트랩을 써본 사람이라면 알겠지만 매트랩의 경우 추가적인 toolbox를 따로 판매한다. Signal processing, Image processing 등 tool box를 게임 DLC처럼 판매하는 방식이다. 반면 파이썬의 경우, 매트랩의 tool box보다 더 다양한 모듈이 지금도 다양한 사람들에 의해 만들어지고, 많은 수가 github에 오픈소스로 올려두고 있기 때문에 파이썬 코드로 상업적인 영리 활동을 하지 않는 이상 무료로 사용할 수 있다.
내가 일하는 Computer vision 분야에서는 실제 산업 환경에서 대부분 C/C++ 언어를 적용한다. 적당히 유연하고, 레퍼런스가 많고 성능적으로 유연하고 비전과 다른 제어를 비롯한 하드웨어 장비들과의 호환이 좋고, 파이썬에 비해 메모리 관리 부분에서도 C/C++이 훨씬 더 자유롭기 때문이다. 파이썬을 직접 산업 분야에 바로 적용하는 일은 거의 없다. 매우 low level 산업이거나 성능이 중요하지 않고 성능이 크게 필요로 하지않는 분야에서만 파이썬을 매우 제한적으로 사용해왔다.
하지만 최근 파이썬을 사용하는 고객들이 매우 늘었는데, 산업 현장 적용은 여전히 C/C++ 언어로 진행하되 최적 환경 및 파라미터를 찾는 부분, 그리고 적용 전 테스트 부분을 파이썬으로 자동화 시켜놓고 있다. 그렇다. 오늘 내가 어필하려고 하는 파이썬, 스크립트 언어의 매력은 여기 있다. 이 언어는 여전히 산업현장에서 쓰이기에는 부적절한 요소가 많다. 하지만 산업현장에 들어가기 위한 셋업 테스트 단계에서 파이썬은 사용자에게 많은 유연성을 제공하기 때문에 유용하다.
예를 들어 Jupyter notebook 이나 Spyder같은 파이썬 기반 interactive 프로그램을 사용하면 셀 단위로 스크립트 코드를 실행할 수 있다. 이 말은 C/C++ 처럼 한 번 컴파일 후에 다른 동작을 위해서 코드 수정/혹은 추가 작성 후 다시 컴파일/디버깅 해야하는 다소 번거로운 과정 대신 파이썬에서는 코드를 수정/추가해서 해당 셀만 다시 실행시키면 되기 때문에 바로바로 변수들이나 데이터 값들을 확인할 수 있다. 이런 장점을 살린 python interactive 모드도 있다. 만약 추정치를 입력 후, 데이터를 뽑아내고, 또다시 최적 근접치에 가까운 추정치를 입력하는 loop 방식으로 최적화를 하는 테스트 환경이라면 파이썬이 빛을 발할 가능성이 높다.
내가 파이썬으로 주로 사용하는 부분은 이미지 프로세싱 테스트다. 이미지 처리를 하기 위해서는 다양한 파라미터, mask kernel 사이즈, threshold를 각 이미지 별로, 혹은 환경 별로 최적화된 값을 찾아내야한다. 어떤 공식이 있는 것도 아니고 노가다 성으로 원본과 처리 후 이미지, 그리고 입력한 파라미터 값을 보면서 결정해 나가야하는 최적화방식을 채택해야했다. 파이썬 interactive 모드(Spyder) 등을 사용하여