머신비전이나 MES 현업자분 계실까요?

안녕하세요. 요즘 자주 글을 올리네요.

다름이 아니라, 저는 학부 때부터 C++을 이용해서 영상처리를 주로 공부해왔고

그 중에서도 특히 머신비전에 관심이 있어서 이쪽으로 준비하다가 운이 좋게도

취업이 되어서 첫 출근하기 약 2주 전입니다.

그동안 연구실 인턴이나 개인적인 프로젝트 할 때는 머신비전 특성상

속도 때문에 C++로 알고리즘 개발하고 MFC로 UI를 제공하거나 했는데요.

이번에 입사하게 된 회사는 룰베이스 기반이 아닌 딥러닝을 이용해 반도체 결함을

검출하는 회사인데 UI는 C#으로 하는 것 같습니다.

궁금한게 UI는 MFC가 아니라 C# WPF로 해도 공장에서 직접 쓸 수 있을 정도로

속도가 괜찮나요? 실시간 처리를 해야해서 C++을 주로 사용하는걸로 알고 있었는데

면접볼 때 들어보니 기술이 요즘 C#으로 가는 추세라고는 듣긴 했는데 컴퓨팅 성능이 좋아져서인가요

아니면 C# WPF랑 MFC랑 속도 차이가 별로 안 나는건가요?

그리고 요즘 현장에서도 딥러닝을 많이 도입하는 추세인가요?

제가 연구실에 있었을 때만 하더라도 대부분 룰베이스 기반으로 했었던 것 같은데

요즘 새로 짓는 공장들은 딥러닝을 적용한다고 하더라구요. 맞는지 궁금합니다.

추가로 전 C#이 아예 처음이라 입사 한달 전부터 C# 문법책을 보고 있고

지금 이것이 C#이다 1회독을 마친 상태인데, 이 상태에서 더 공부하고 가면 좋을 게 있을까요?

아니면 회사 들어가서 코드를 봐야 알 수 있을까요? 최대한 빨리 1인분을 하고 싶은데…

어떻게 하면 빨리 회사 업무에 적응할 수 있을까요?

번외로 다들 출장지가 어떻게 되시고 한 번 가시면 몇개월 체류하시나요?

제가 들어가는 회사는 미국과 헝가리가 주를 이루는데… 한 번 가면 3개월씩 간다고 합니다…ㅠㅠ

여자친구가 있어서 걱정되는데 대부분 이 정도로 장기 출장을 가는지 궁금합니다…

4개의 좋아요

C#이 상당히 빨라진 것은 사실이지만, 그래도 C++ MFC의 성능을 따라가지는 못합니다.

대다수의 .NET 어플리케이션이 느린 경우 C#을 개발하는 개발자의 문제일 확률이 높지만, 영상처리에 관해서는 정말 그 날 것의 안전하지 않은 속도 그 자체인 C++을 따라갈 수는 없습니다.

그래서 영상처리를 수행하는 부분은 C++로 모듈개발을 따로 해서 WPF에서 마샬링해서 쓰거나, C++/CLI라는 기술로 Wrapping 해서 사용하는 것으로 알고 있습니다.

참고로 C++/CLI는 MSVC를 사용하는 C++ 모듈에 한하여, .NET으로 Import해서 사용할 수 있는 Windows 전용 기술입니다.

7개의 좋아요

실시간 데이터를 받아서 처리해야된다면 무조건 C++로 해야죠.
근데, 사수가 따로 있는거 같으니 언어나 로직에 대한건 걱정할 필요없이 C#만 하면될거같네요.
회사 업무에 빨리 적응하는 방법은, 사수하고 같이 다니면서 업무에 대해 많이 물어보세요. 모르는건 이해 될때까지 물어보시구요. 업무 파악이 되야 제대로된 로직이 나오니까요.

4개의 좋아요

초보자는 GC 있는 C#, Go언어가 낫습니다.
성능은 언어보다 개발자 역량이 크게 좌우하니까요
아마 제대로 된 C++ 개발자 구인이 힘드니까 C#쪽으로 전향하는 추세 아닐지…

3개의 좋아요

저도 머신비전쪽 회사에서 일하고있는데요? 위에 댓글달아주신 분들 말씀처럼 알고리즘 쪽은 c++, ui는 c# wpf로 개발하고 있습니다. 몇년 다니고 지금와서 생각해보니 중요한건 언어나 프레임워크가 중요한게아니라 어느 도구를줘도 만들수있는 설계능력이나 포텐셜이 중요한거같습니다 ㅠ :cry: 현장일이 아마 정신없이 바쁘실건데 적응잘하시고 주말이나 쉬는시간에 공부 게을리하지마세요. 현장 스케쥴이 빠르기때문에 구조가 어떻건 일단 양산일정 맞추는게 중요해서… (회사마다 다르지만) 회사 업무외에 기술적으로 축적하기가 쉽지않습니다.

5개의 좋아요

머신 비전은 아니고 영상 관련 작업을 많이 해 본 사람으로서 말씀을 드리자면
MFC와 WPF는 기존 컨트롤들만 썼을 경우 MFC가 빠르겠지만
크게 차이나지 않습니다. WinForm으로 가면 거의 동일한 수준이고요.

다음으로 이미지등을 사용하는 Custom UI를 사용할 경우 경우에 따라 MFC가 더 느립니다.
이유는 제대로 만든 컨트롤이 흔하지 않습니다.
거기다 WPF는 전체 화면이 3D인 상태에서 컨트롤을 그리는 형태인데
MFC의 Control들은 그 부분만 비트맵으로 그리는 형태이고 각 컨트롤들이 전부 윈도우 핸들을 갖는 일종의 윈도우라 문제 발생 가능성도 큽니다.

결론적으로 MFC에 비해서 WPF가 더 느린 건 맞지만 그게 눈에 뛸 정도는 아닙니다.
문제는 비트맵을 60FPS이상의 고속으로 그려야 할 필요가 있을 경우 WPF는 좀 어렵습니다.
고속 랜더링이 필요한거 아니면 문제 없을거고요.

그리고 입사전에 이런 고민을 할 필요가 없습니다. 들어가서 새로 만드는것이 아니신 것 같은데요.
지금 하시는 고민은 들어가서 완전히 갈아 엎어야 할 사람이 해야 할 고민 입니다.

마지막으로 글 쓰신분한테 입사하자마자 1인분 하기를 바라는 사람 아무도 없을 겁니다.
너무 급하게 뭔가를 하고 싶어 하시느라 지금 고민이 너무 과하게 가고 있습니다.
고민하실 시간에 공부를 하나라도 더 하시고 입사하시기를 바랍니다.

7개의 좋아요

같은 업계라니 너무 반갑습니다 :grinning:!
MFC와 WPF 관련해서는 다른 분들이 많이 설명해 주셔서 다른 부분 답변드리겠습니다.

검사 목적에 따라서 룰베이스와 딥러닝 중 선택합니다. 말씀하신 대로 새로 짓는 공장들이 딥러닝을 적용한다면 단순 수치 검사가 아닌 불량 종류를 구분하거나 불량 영역을 찾기 위한 검사일 수 있습니다.

출장은 제 경험상 대부분 이야기 한 기간을 꽉 채우더라구요…:smiling_face_with_tear:
화이팅입니다!

5개의 좋아요
  1. 딥러닝으로 만든 Model을 올릴때 onnx로 모델을 바꿔서 올리면 ML.NET의 cuda 지원이 가능하기때문에 연산이 느리지 않음요. 아니면 cpu만 써서 가속해도 native intel ml 가속용 라이브러리 쓰면 c++이랑 차이 없어요.
  2. UI단에서 보여주는건 PC가 똥컴이고 최적화되지 않은 코드가 아닌 이상 문제 없음요.
  3. vision이면 불량 검사 등에는 도입되고 있어요.
  4. 회사에서 파이팅 하시면 됩니다.
  5. 여친은… 저도 출장 많이 다니다보니 노총각.ㅜ.ㅜ
4개의 좋아요

도움이 되실 지 모르겠지만
방산업체 있을 때 경험인데 보통은 C++로 작업을 많이 했는데 UI쪽은 C#/ Core 통신쪽은 C++로 했었던 기억이 있습니다.
사용하는 하드웨어에 따라 달라지기는 하겠지만 Application 돌리는 하드웨어가 고사양일 경우에는 성능적인 문제는 크게 없었던 것같습니다. 개발도 C#(UI) + C++(통신)로하는게 편하기도 했구요… MFC보다는… 다만 영상 처리 부분은(타켓인식) C++ 라이브러리를 통해 특정 부분에 영상 표출하는 식으로 했던 것같아요…

3개의 좋아요

영상처리쪽 업계를 잘 몰라서 이해가 안가는게요,
엄청 열악한 스펙의 구형 산업장비를 유지보수하는것도 아니고
이미 영상처리같은 하드웨어에 부담이 큰 동작을 해야하는데, 게임도아니고 예쁠필요도 없이 그냥 사람이 알아볼수만 있으면 될 GUI를 출력하는데 어떤 고도화나 퍼포먼스가 중요한 비중을 차지하나요…?
영상처리단이 GUI프레임워크위에 종속되어 개발되야 하는건가요 ???

4개의 좋아요

핸드폰UI가 꼭 예쁠 필요는 없지만 좀 더 이쁘고 반응성이 좋은 UI를 원하죠?
마찬가지입니다.
기능이 비슷하면 좀 더 이쁜걸 원합니다.
뭐 B2C랑 B2B는 다르지 않냐? 라고 생각하실수도 있는데요.
결국 사용자는 같고 본인이 일상에서 사용하는 UI랑 비슷한것이 적용된 전문장비를 쓰고 싶어하는거죠.

5개의 좋아요

제일 안중요하면서 제일 중요하네요, 정말 고놈의 답없는 gui에 좀 벗어나고싶습니다.

4개의 좋아요

제가 경험은 없지만 들은 얘기로 터치 스크린 랩으로 싸서 쓰는 환경이고
작업자는 글자 크고 반응 빠르고 기존 쓰던 UI와 동일한 것을 원한다고 합니다.
예쁠 필요 없고 그냥 일하는 장비일 뿐이죠. UI에 애착 같은 거 없고 빨리 퇴근하고 싶을 뿐…

2개의 좋아요

오… 현직자분 계시는군요. 답변 감사드립니다!

2개의 좋아요

C#은 한 번도 안 써본 기술이라 입사전에 공부 열심히 하고 들어가는건 당연하다고 생각하네요. 전혀 급하다고 생각 안합니다만…

2개의 좋아요

아, 출장은 다 그런가보군요…ㅠㅠ

3개의 좋아요

감사합니다!! C#도 cuda가 되는건 처음 알게 되었네요

2개의 좋아요

안녕하세요. 벌써 4년도 더 된 일이고 현업자는 아니지만, 작은 조언이 되었으면 좋겠어서 이렇게 글을 적어봅니다.
첫번째로, C#과 WPF를 사용하는 주된 이유는 UI + (상용)라이브리를 사용할것이라고 생각하시는게 편할 듯 합니다. 속도는 앞선 분들이 댓글을 많이 남겨주셔서 참고하시면 좋을 듯합니다.
두번째로, 네 딥러닝을 많이 사용하고 적용하려고 합니다. 제가 L사, S사, C사, H사에 주로 적용을 많이 해봐서 잘 알고 있습니다. 딥러닝 이론이나 프로그램을 다루는 법을 잘 아신다면, 큰 문제가 없으리라 생각합니다.
세번째로, 저는 주로 미국과 중국을 출장다녔습니다. 아시다시피, 미국은 ESTA 비자로 3개월 체류일것이고요. 입국심사를 잘못하시면, 큰일납니다. 영어 공부는 필수로 하세요. 헝가리는 큰 자동차와 전기배터리 공장이 있습니다. 회사 규모와 출장 규칙에 따라 많이 다르겠지만, 저는 1년 마다 300일 가까이 출장을 다녀왔습니다. 2년 연애 후 결혼을 했는데, 그동안 아내가 견뎌준것도 감사하다고 할까요. 두 분이 더 먼 미래를 꿈꾸신다면 많이 이야기 하시길 추천드립니다.
너무 주저리 주저리 적은것 같아 미안합니다. 질문 있으시면 답글로 남겨주세요.

5개의 좋아요

오, 정말 많은 정보 얻었습니다.
딥러닝은 생각도 못했는데 의외의 기회를 얻게 되었네요. 열심히 해야겠습니다.
혹시 대학원을 나오셨나요?

3개의 좋아요

C# 사용잘하면 C++ 만큼 빠르게 사용할수 있습니다. 저는 20년 넘게 방송관련 솔루션 (영상처리,모리터링,분석…) 개발하고 보통 한 프로세스에서 최대 uncompressed 4K 데이타 처리도 문제없이 잘 사용중입니다. 저의 회사의 경우 C/C++ (5%) 나머지는 다 C# 이고 UI (WPF, Blazor, AngularJS + Typescript) 사용중입니다. 참고로 저는 외국에 있으니 저의 정보가 많이 다를수 있습니다.

7개의 좋아요