콘텐츠로 건너뛰기
Home » 스터디 » Page 6

스터디

오일러 프로젝트 79

문제

온라인 뱅킹에서 흔히 쓰이는 보안 기법 중에는, 비밀번호에 포함된 숫자를 랜덤하게 세 개 입력하도록 하는 것이 있습니다.
예를 들어 531278이라는 비밀번호에 대해서 2번째, 3번째, 5번째 숫자를 입력하도록 하는 식입니다. 이 때 올바른 입력은 317이 됩니다.

첨부한 텍스트 파일 keylog.txt에는 로그인에 성공한 어떤 사용자의 입력 기록이 50건 담겨져 있습니다. (비밀번호의 길이는 알 수 없습니다)

3개의 숫자는 항상 앞쪽부터 순서대로 요청된다고 할 때, 위의 접속 기록에서 알아낼 수 있는 가장 짧은 길이의 비밀번호는 무엇입니까?

더 보기 »오일러 프로젝트 79

오일러 프로젝트 75

문제

긴 철사를 구부려서 세 변이 정수인 직각 삼각형을 만들 때, 그 방법이 한 가지 뿐인 경우는 12cm를 최소로 해서 아래와 같이 여러 개가 있습니다. 

12cm: (3, 4, 5)
24cm: (6, 8, 10)
30cm: (5, 12, 13)
36cm: (9, 12, 15)
40cm: (8. 15, 17)
48cm: (12, 16, 20)

반면에, 20cm의 경우 처럼 세 변이 정수인 직각 삼각형을 만들 수 없을 때도 있고, 여러 종류의 직각 삼각형을 만들 수 있을 때도 있습니다. 예를 들어 120cm의 철사로는 세 가지의 서로 다른 직각 삼각형이 만들어집니다. 

120cm: (30, 40, 50), (20, 48, 52), (24, 45, 51)

그러면 길이가 백오십만(1,500,000)이하인 철사를 가지고 세 변이 정수인 직각삼각형을 만들 때, 그 길이로는 한가지 방법으로만 만들 수 있게 되는 경우는 모두 얼마나 됩니까?

더 보기 »오일러 프로젝트 75

C로 작성된 함수를 파이썬에서 사용하기

표준 파이썬 해석기는 C로 만들어져 있다. 그리고 C에는 동적 라이브러리를 링크하여 사용할 수 있는 기능이 마련되어 있다. 따라서 표준 파이썬 해석기를 만드는 사람들도 실행시간에 C로 만들어진 동적 라이브러리를 링크하여 사용할 수 있을 것이라는 생각을 당연히 했을 것이고, 그 결과 ctypes 라는 라이브러리가 탑재되어 있다. 

더 보기 »C로 작성된 함수를 파이썬에서 사용하기

Vision을 이용한 얼굴 인식 – 고급편

Vision을 이용해서 이미지 속에서 얼굴을 인식하는 방법을 살펴본 바 있는데, 당시 글에서 VNDetectFaceLandmarksRequest 를 사용했었다. 사실 얼굴이 들어있는 영역만 찾기 위해서는 VNDetectFaceRectsRequest 를 사용하는 것으로도 충분한데, face landmarks를 찾는다는 것은 얼굴의 주요 요소들 – 눈, 코, 입, 윤곽선 등-을 찾아낸다는 의미이다. 

이 글에서는 VNDetectFaceLandmarksRequest를 사용해서 실제로 얼굴의 각 요소를 추적하는 예제를 소개해 보겠다. 

더 보기 »Vision을 이용한 얼굴 인식 – 고급편

이미지를 익명화하는 프로그램 – Vision + CoreImage

Vision을 이용한 얼굴 인식의 보다 상세한 예제로 자동 익명화 프로그램을 작성해보았다. 이 프로그램은 터미널에서 이미지 파일의 이름을 제시하면 해당 이미지에서 사람의 얼굴을 찾아, 해당 영역을 모자이크 처리한 PNG 파일을 생성한다.

이 프로그램은 크게 세 개의 함수로 구성된다.

  1. detectFaces(in: completionHandler:) – 주어진 이미지(CGImage)에서 얼굴을 찾아낸다. 얼굴을 찾으면 해당 영역을 모자이크 처리한 이미지를 만들고, 처리된 이미지를 콜백 클로저에 전달해서 사용하도록 한다.
  2. createPixellatedImage(from:CGImage rects:[CGRect]) – 이미지와 정규화된 CGRect 들을 받아서 해당 영역을 모자이크 처리한 이미지를 합성하고, 다시 CGImage 형식으로 만들어 리턴한다.
  3. main() – 명령줄 인자로 전달된 정보를 통해 이미지 파일을 열고 1, 2의 함수를 사용해서 얼굴만 모자이크 처리한 이미지를 만들어 PNG 파일로 저장한다.
더 보기 »이미지를 익명화하는 프로그램 – Vision + CoreImage

Vision을 이용한 이미지 인식

Vision을 이용한 얼굴인식이나 QRCode 인식에 대해서 살펴보았는데, 사실 이러한 기능들은 정확도면에서 조금 뒤떨어질 수는 있지만 코어 이미지에서도 어느 정도 지원했었던 기능이다. 대신에 Vision은 CoreML과 결합하여 이미지 내의 오브젝트를 인식하고 그 이름을 추출할 수 있는 기능을 제공한다.  (고양이 사진을 보고 ‘고양이’를 알아내는 바로 그 기능이다.)

이번 시간에는 Vision + CoreML을 이용한 이미지 내 사물 인식 기능을 어떻게 구현할 수 있는지 알아보자.

더 보기 »Vision을 이용한 이미지 인식