반응형

2737

C++ : condition_variable::wait() : 사용법, 주의사항, 예제, 활용 방법

std::condition_variable::wait 현재 쓰레드 뮤텍스의 잠금을 풀고 notifu_one() 또는 notify_all()을 기다립니다. 깨어나면, 뮤텍스를 다시 잠급니다. 다시말해, notify_xxx가 wait()보다 먼저 호출되면, 해당 쓰레드는 풀리지 않고, 영원히 기다리게 됩니다. #include #include #include static std::mutex sQueueLock; static std::condition_variable sEvent; static std::queue sQueue; void Consume() { while (true) { int val; { std::unique_lock lock(sQueueLock); sEvent.wait(lock); val = s..

SW/C++ 2020.03.30

컴퓨터비전 : 학문 개념, 기능, 분야, 종류

컴퓨터 비전 컴퓨터 비전은 컴퓨터가 디지털 이미지 또는 비디오로부터 높은 수준의 이해를 얻는 방법을 다루는 과학 분야라고 합니다. 공학의 관점에서 볼 때 이러한 인간의 시각으로 할 수 있는 작업을 자동화하려고 하는 학문이라고 생각할 수 있습니다. 컴퓨터 비전의 세 가지 주요 기능 - 분류 - 감지 - 세분화 컴퓨터 비전의 최근 연구 종류와 성과 분류, 탐지 위와 같이 이미지를 분류하거나 탐지할 수 있습니다. 자동 채색 이미지를 학습하여 자연스럽게 색칠을 할 수 있습니다. 페인팅 스타일 전환 이미지를 학습하여 페인팅 스타일을 묘사할 수 있습니다. Google 번역 앱 글자를 인식하여 번역을 할 수 있습니다. 스케치 반전 스케치를 통해, 실제 사람의 얼굴을 묘사할 수 있습니다. 자동 이미지 캡션 생성 이미지..

SW/컴퓨터비전 2020.03.29

C++ : condition_variable, unique_lock : 개념, 정의, 활용 방법

std::condition_variable 이벤트 개체라고 합니다. 신호를 받을 떄까지 현재 쓰레드의 실행을 멈춥니다. notify_one(), notify_all() 를 사용해 멈춰 놓은 쓰레드 또는 전부를 다시 실행시킵니다. wait(), wait_for(), wait_until() 를 사용해 조건 변수의 조건을 충족시킬 때까지 또는 일정 시간 동안 현재 쓰레드의 실행을 멈춥니다. 이 떄 std::unique_lock을 사용해야 합니다. std::unique_lock 기본적으로 scoped_lock과 유사합니다. 생성시에 lock을 잠그지 않을 수도 있습니다. 두번째 매개변수로 std::defer_lock을 전달해야 합니다. std::recursive_mutex와 함께 써서 재귀적으로 잠글 수 있습니..

SW/C++ 2020.03.29

컴퓨터비전 : 뉴런과 인공신경망 : 개념, 역사, 종류

뉴런이란? 뉴런은 전기 및 화학적 신호에 의해 정보를 처리하고 전송하는 전기적, 화학적 세포를 뜻한다고 합니다. 생물학 뉴런에서 인공 뉴런으로 이러한 생물학적인 뉴런을 인공적인 뉴런으로 추상화하면 다음과 같이 표현할 수 있습니다. 인공 신경망 뇌와 같은 생물학적 신경계에서 영감을 얻은 정보 처리 패러다임을 뜻합니다. 인공신경망 하나의 퍼셉트론이 XOR 문제를 해결하지 못하였습니다. 하지만, 여러 퍼셉트론의 조합으로 해결할 수 있습니다. 다층 퍼셉트론으로 인공지능은 새로운 국면을 맞이합니다. 그러나 여러 한계때문에 이러한 인공 신경망에 대한 연구는 활발히 진행되지 않았고, 1970~80년대에는 인공신경망의 겨울이 찾아옵니다. 공학 연구원이 1969년에 역전파를 개발했지만 신경망 연구원들은 이를 무시하였습니..

SW/컴퓨터비전 2020.03.28

34. 딥러닝 : 학습률 (learning rate) : 좋은 학습 속도인지 분별하는 방법

학습률에 대해 이야기하지 않고 포스팅을 하는 동안, 위 그림이 매우 중요하지만, 크게 다루지는 않았습니다. 지금까지는 낮은 학습 속도 사례만 살펴보았습니다. 목표에 도달하는 작은 학습 속도를 사용했습니다. 그러나 학습 속도가 높으면 손실을 빠르게 최소화할 수 있지만, 어느정도까지만 도달하고, 진동을 시작하고 손실 값이 멈추게 됩니다. 학습률이 너무 높을수록 손실을 최소화할 수 없으며 비용은 그래프에서 볼 수 있듯이 상향으로 폭발 할 것입니다. 지수 적으로 스케쥴에 따라 정의된 학습률과 같이 잘 선택된 학습률은 낮은 학습률보다 훨씬 빨리 손실을 최소화합니다. 또한 높은 학습 속도보다 더 정확하게 수행 할 수 있습니다. 개발자는 항상 좋은 학습 속도를 목표로 하고 있습니다. 문제는 특정 데이터 모델에 대한 ..

SW/딥러닝 2020.03.28

JavaScript, jQuery : 셀렉트박스 값 가져오기 : 예제, 구현, 방법

다음 jQuery 스니펫을 사용하여 셀렉트 박스에서 선택한 옵션의 값을 가져오겠습니다. 먼저 새 jQuery 함수를 작성합니다. function getSelectedOption(id){ $('#' + id).val(); } 그리고, 셀렉트 박스를 만들어줍니다. Select Red Blue Green Yellow Purple 이제 셀렉트 박스에 대해 선택된 값을 얻기 위해 방금 만든 함수를 호출하기 만하면됩니다. var text = getSelectedOption('selectBox');

SW/JavaScript 2020.03.27

33. 딥러닝 : 학습률 (learning rate) : 방법, 원리, 설정 팁, 개념

하이퍼 매개 변수의 개념을 소개합니다. 가중치, 바이어스 매개 변수는 알고리즘의 가중치 및 깊이와 숨겨진 유닛의 값과 레이어 값과 같은 것입니다. 알고리즘과 데이터에 가장 적합한 경로를 찾기 위해 하이퍼 매개 변수를 가져야 한다고 언급 했습니다. 최소값으로 크게 진동하지 않고 최소값에 도달하거나 무한대로 분기하지 않고 손실 함수가 완만하게 내려갈 수 있을 정도로 작아야합니다. 또한 최적화가 적당한 시간 내에 이루어 지도록 충분히 커야 했습니다. 하나의 매개 변수에 대해 그라디언트 하강에 제공하는 것으로 학습 속도가 있습니다. 충분히 작거나 충분히 큰 학습률은 너무 모호합니다. 적절한 학습 속도 선택을 다루는 현명한 방법은 소위 학습 속도 스케쥴을 채택하는 것입니다. 학습 속도 스케쥴은 가장 좋은 방법 중..

SW/딥러닝 2020.03.27

JavaScript, jQuery : 브라우저 사용자 기능 막는 함수들 정리,예제, 구현

웹 사이트에서 어떤 일을 하려고 시도하지 못하게 막으려고 하지만, 막으려고 하는 것은 일반적으로 할 수 있는 표준활동입입니다. 페이지에서 텍스트를 강조 표시하거나 마우스 오른쪽 버튼을 클릭하여 복사하거나 마우스 오른쪽 버튼을 클릭하여 새 탭에서 이미지를 검색하거나 열 수 있습니다. 이러한 작업을 못하게 하기 위해 약간의 Javascript를 넣은 일부 웹 사이트를 보았습니다. Javascript를 해제하여 쉽게 돌아 다닐 수 있기 때문에 멈추는 데 시간을 낭비하는 이유를 잘 모르겠습니다. 단지 방문자는 성가실 뿐입니다. 그런 다음 팝업 상자와 같은 Javascript로 볼 수 있는 다른 성가신 것들에 대해 생각했습니다. 이러한 작업을 수행하는 데 필요한 성가신 일과 기능을 문서화해보았습니다. 웹 사이트에..

SW/JavaScript 2020.03.26

32. 딥러닝 : 모멘텀 (Momentum) : 개념, 원리, 필요 이유

주변 값에 얽매이지 않고 최소값에 도달 할 수있는 기회를 개선 할 수 있는 추가 방법을 모색해보겠습니다. 그라디언트 하강 및 확률적 그라디언트 하강은 모델을 훈련시키는 좋은 방법입니다. 그것들을 적용하면서 할 가장 간단한 확장으로 진행해야합니다. 모멘텀 (momentum) 모멘텀이란 무엇입니까? 모멘텀을 설명하는 쉬운 방법은 물리학적 비유를 통한 것입니다. 작은 언덕은 볼이 멈추지 않는 평평한 표면에 도달 할 때까지 롤링을 계속하지 않을 것입니다. 작은 언덕은 지역 최소값이고, 큰 계곡은 전역 최소값입니다. 운동량이 없으면 공은 원하는 최종 목적지에 도달하지 못합니다. 속도가 전혀 떨어지지 않고 작은 언덕에서 멈추었을 것입니다. 지금까지 모멘텀을 고려하지 않았습니다. 즉, 작은 언덕에 빠질 가능성이있는 ..

SW/딥러닝 2020.03.26

JavaScript, jQuery : 내부 링크로 부드럽게 스크롤 이동하기 : 방법, 예제, 구현

jQuery를 사용하면 코드를 거의 사용하지 않고도 웹 사이트와 상호 작용하는 방식을 변경할 수 있습니다. jQuery에는 스크롤 기능을 포함하여 jQuery가 하는 모든 것을 애니메이션 할 수 있는 함수가 있습니다. 애니메이션 스크롤은 페이지의 특정 위치로 작업하는 것보다 방문자에게 더 나은 효과를 줍니다. 내부 링크를 사용하여 페이지의 다른 부분으로 이동하는 많은 웹 사이트가 있습니다. 이는 앵커 태그의 #과 엘리먼트 ID를 사용하여 수행됩니다. Jump to services 위의 작업을 수행하면 페이지를 클릭 할 때 서비스 div로 페이지를 이동시키는 링크가 작성됩니다. 그러나이 위치로 이동하고 페이지 아래로 떨어지면 방문자에게 가장 좋은 방식은 아닙니다. 방문자가 이 위치를 볼 수 있도록 실제로 ..

SW/JavaScript 2020.03.25

31. 딥러닝 : 경사 하강 함정 (gradient descent pitfalls) : 원인, 이유, 배경

포스팅할 내용으로 기다리고 있었고 가장 중요하지만 일찍 포스팅하는 것은 합리적이지 않았습니다. 지금까지 그래디언트 하강과 확률적 그래디언트 하강을 보았습니다. 그라디언트 디센트 알고리즘이 시작하고, 단일 배치 GD를 내림차순으로 시작하는 것은 느리지만 결국 일관된 방식으로 최소값에 도달합니다. SGD는 이전 포스팅에서 말했듯이 여전히 많은 가치를 지니고 있지만 훨씬 더 빠릅니다. 실제 함수는 그렇게 규칙적이지 않습니다. 실제 함수에서는 마지막 함수값이 최소값이 아니라는 것입니다. 최소한 중 하나 일뿐입니다. 최소 손실 지점을 나타냅니다. 각 로컬 최소값은 기계 학습 최적화에 대한 차선책입니다. 그라디언트 디센트는 이 문제에 취약합니다. 종종 글로벌 최소값이 아닌 시작점에서 가장 가까운 최소값에 속할 수 ..

SW/딥러닝 2020.03.25

JavaScript, jQuery : 이미지 로딩 오류 처리 방법 : 예제, 구현

브라우저에서 이미지를 올바르게 로드 할 수 없는 경우 사용중인 브라우저에 따라 여러 가지 작업을 수행합니다. 물음표 이미지 또는 아무것도 표시되지 않습니다. 이미지를 찾을 수 없으면 브라우저에서 오류가 발생하며 jQuery를 사용하여 이러한 오류를 찾아 사용할 수 있습니다. 이미지에 이벤트 핸들러를 추가하여 오류가 있는지 확인하고 오류를 반환하면 jQuery가 무언가를 수행하도록 할 수 있습니다. 예를 들어 이미지를 찾을 수 없는 경우 이미지를 누락된 이미지 그림으로 변경하거나 jQuery에서 이미지 상자를 숨길 수 있습니다. 다음은 jQuery 상자를 숨기거나 이미지를 다른 것으로 변경하는 작은 스니펫입니다. // Hide the image on error $("img").error(function()..

SW/JavaScript 2020.03.24

30. 딥러닝 : 확률적 경사 하강 : 개념, 원리, 장점, 사용 이유

이 섹션에서는 최적화에 대한 섹션으로, 모델 매개 변수에 모두 사용하는 알고리즘을 참조합니다. 지금까지 기울기 하강 만 보았으므로 이제 개선된 알고리즘으로 이어지는 사항에 대해 논의할 때입니다. 대부분 이론적인 관점에서 볼 때 가치가 있지만 실제 실행에서는 느립니다. 따라서 이러한 상황을 극복해야할 단계가 있습니다 . 가중치를 업데이트 하기전에 전체 훈련 세트를 통한 각 업데이트는 변화가 매우 작습니다. 이것은 학습 속도의 작은 값에 의해 구동되는 기울기 하강의 전체 개념 때문입니다. 기억하는 것처럼 위험에 처할 때 너무 높은 값을 사용할 수 없었습니다. 따라서 매우 작은 학습 속도를 사용하여 많은 포인트에 걸쳐 많은 에포크를 가지고 있습니다. 이것은 느립니다. 기본적으로 그라디언트를 항해합니다. SGD..

SW/딥러닝 2020.03.24

JavaScript, jQuery : 키 입력 폼을 비활성화하는 방법 : 예제, 구현

HTML 양식에서 텍스트 상자를 채우고 Enter 키를 누르면 나머지 정보를 작성하지 않은 경우에도 양식을 제출합니다. Enter 키를 누를 때 Google 검색 창이 제출하는 등 이 기능을 사용하는 많은 웹 사이트가 있습니다. 텍스트 상자가 하나만 작성되어 있지만 입력 할 필드가 두 개 이상인 경우 Enter 키에 양식을 제출하지 않으려는 경우에 효과적입니다. 이 기본 기능을 변경하려면 양식 제출을 중지하기 위해 페이지에 약간의 Javascript를 추가해야합니다. jQuery를 사용하므로 다음 스니펫은 jQuery를 사용하여 enter 키를 해제하는 방법을 보여줍니다. $("form").keypress(function(e) { //Enter key if (e.which == 13) { return f..

SW/JavaScript 2020.03.23

29. 딥러닝 : Xavier Initialization (변수 초기화 방법 ) : 개념, 방식, 원리, 적용

이번 포스팅에서는 초기화에 대해 계속 이야기 할 것입니다. 고급 전략으로 Xavierinitialization이라 합니다. Xavierinitialization은 Glorot이라고도 합니다. Glorot 또는 Xavier는 2010년에 이 방법을 제안하고 대규모로 빠르게 채택되었으므로 좋은 기술이라 할 수 있습니다. 처음 배운 방법은 임의로 선택하는 방법이었습니다. 균일하고 일반적인 Xavier 초기화는 모두 기본입니다. 랜덤화에 사용되는 방법은 중요하지 않습니다. 각 레이어의 통과와 함께 다음과 같은 경우 아웃풋 수입니다. 초기화는 일부 범위에서 분산을 유지합니다. 두 가지 공식이 있습니다. Uniform Xavier Initialization입니다. -x, x까지의 무작위 균일 분포에서 각 가중치 W..

SW/딥러닝 2020.03.23

JavaScript, jQuery : 마우스와 엘리먼트 사이 거리 계산 : 방법, 예제, 구현

이 튜토리얼에서는 jQuery를 사용하여 페이지의 특정 엘리먼트에서 마우스의 거리를 얻는 방법을 배웁니다. 이 코드는 사용자 상호 작용이 많고 사용자 마우스가 요소와 특정 거리에 있을 때 이벤트를 실행하려는 소규모 웹 앱에서 유용 할 수 있습니다. 거리를 픽셀 단위로 표시하는 레이블과 중앙 위치를 차지할 엘리먼트가 있다고 가정합니다. jQuery 코드 먼저 전역 변수와 이 이벤트에 대한 준비 이벤트를 만듭니다. (function() { var mX, mY, distance, $distance = $('#distance span'), $element = $('#element'); $(document).mousemove(function(e) { distance = calculateDistance($eleme..

SW/JavaScript 2020.03.22

28. 딥러닝 : 단순 초기화의 타입 : 초기화 유형, 방법, 개념, 유념

초기화 문제를 안다는 것을 알고 어떻게 처리 할 수 ​​있는지 살펴보겠습니다. 간단한 접근 방식은 작은 범위 내에서 무작위로 가중치를 초기화하는 것입니다. 최소한의 예에서는 무작위로 균일하게 사용하고 범위는 0과 1 사이였습니다. 1과 0.1에서 무작위로 값을 선택합니다. 그러나 균일한 방식으로 각 방법은 동일한 확률로 선택될 확률이 동일합니다. 두 번째 방법은 정규 이니셜 라이저를 선택하는 것입니다. 기본적으로 아이디어는 동일합니다. 이번에는 평균 0, 정규 분포에서 숫자를 선택합니다. 그러나 분산은 임의적이지만 작아야 합니다. 정규 분포를 따르기 떄문에 예측할 수 있습니다. 0에 더 가까운 값은 다른 값보다 훨씬 더 많이 선택될 수 있습니다. 초기화의 예는 평균이 0인 정규분포를 사용하는 것입니다. ..

SW/딥러닝 2020.03.22

JavaScript, jQuery : CDN이 실패 할 경우 로컬 jQuery의 대체 방법, 구현, 예제

CDN의 장점? 많은 대형 웹 사이트에서 jQuery와 같은 CDN 서비스를 제공하고 있습니다. Google은 자체 CDN 네트워크에서 가장 큰 자바 스크립트 라이브러리를 제공합니다. 또한 Microsoft는 CDN을 사용하여 웹 사이트에서 jQuery를 구현할 수 있습니다. 이것의 장점은 jQuery를 로드하면 로컬 서버에서 다운로드되기 때문에 대역폭이 줄어들기 때문에 다운로드 속도가 빨라지고 이 스크립트를 사용하는 여러 웹 사이트에서 이 스크립트를 캐시해야 한다는 것입니다. CDN이 동작안하면? CDN을 사용하여 CSS 및 Javascript를 제공하면 페이지 로딩 시간이 단축됩니다. 그러나 이 CDN에 어떤 일이 발생하면 어떻게 됩니까? jQuery가 로드되지 않고 일부 웹 사이트 기능이 더 이상 ..

SW/JavaScript 2020.03.21

Web, jQuery : 스크롤 움직임으로 맨 위로 가기 버튼을 만드는 방법

사람들에게 페이지를 유지시키려면 웹 사이트에서 좋은 사용자 환경을 만드는 것이 매우 중요합니다. 좋은 사용자 환경을 만드는 가장 좋은 방법은 사람들이 쉽게 사용할 수 있도록 하는 것입니다. 사이트를 사용하기 어려운 경우 사람들을 귀찮게하고 계속 움직일 것입니다. 페이지에 많은 정보가 있는 웹 사이트의 경우 페이지를 아래로 스크롤하여 정보를 소비합니다. 페이지 스크롤이 무한한 Google+와 같은 웹 사이트는 페이지 상단으로 돌아가 링크를 클릭하면 매우 성가실 수 있습니다. 페이지를 새로 고치거나 스크롤 막대를 맨 위로 다시 이동할 수 있습니다. 시작 스크롤이 있는 웹 사이트는 상단으로 쉽게 돌아갈 수 있도록 무언가가 필요합니다. 이것은 맨 위로 스크롤하는 버튼으로 수행됩니다. 이 튜토리얼에서는 jQuer..

SW/JavaScript 2020.03.20
반응형