The B-L072Z-LRWAN1 LoRa®/Sigfox™ Discovery kit is a development tool to learn and develop solutions based on LoRa®, Sigfox™, and FSK/OOK technologies. This Discovery kit features the all-in-one CMWX1ZZABZ-091 open module by Murata. The module is powered by an STM32L072CZ microcontroller and SX1276 transceiver. The transceiver features the LoRa® long-range modem, providing ultra-long-range spread-spectrum communication and high interference immunity, minimizing current consumption. Since CMWX1ZZABZ-091 is an open module, the user has access to all STM32L072CZ peripherals such as ADC, 16-bit timer, LP-UART, I2C, SPI, and USB 2.0 FS (supporting BCD and LPM).
2단계: 특징점 추출과 벡터 변환 감지된 얼굴에서 고유한 특징을 추출하는 단계입니다. 눈 코 입의 위치와 형태 얼굴 윤곽선 그리고 각 부위 간의 거리와 비율 등이 수치화됩니다. 현재는 딥러닝 기반의 임베딩(Embedding) 기술을 통해 얼굴의 특징을 고차원 벡터로 변환합니다. 이 벡터는 개인마다 고유한 값을 가지며 얼굴인식의 핵심 데이터가 됩니다.
Siamese Network와 학습 방식 최신 얼굴인증 시스템에서는 Siamese Network 구조가 널리 사용됩니다. 이는 동일한 가중치를 공유하는 두 개의 신경망이 각각 서로 다른 얼굴 이미지를 처리한 후 그 결과를 비교하는 방식입니다. Triplet Loss 함수를 사용하여 같은 사람의 얼굴 간 거리는 가깝게 다른 사람의 얼굴 간 거리는 멀어지도록 학습시킵니다.
DeepFace는 2014 년 Facebook 연구 그룹이 만든 심층 컨볼루션 신경망을 기반으로 하는 안면 인식 시스템입니다. 디지털 이미지에서 사람의 얼굴을 식별합니다. 97 %의 정확도로 얼굴 인식에 딥 러닝을 사용하는 것이 큰 도약이었습니다.
DeepID 또는 "Deep hidden IDentity 기능"은 Yi Sun 등에 의해 처음 설명 된 일련의 시스템 (예 : DeepID, DeepID2 등)입니다. 2014 년 논문에서“1 만개의 클래스를 예측하는 심층 학습 얼굴 표현”이라는 제목의 논문에서 시스템은 DeepFace와 유사하게 처음 설명되었지만 대조적인 손실을 통한 교육을 통해 식별 및 검증 작업을 모두 지원하도록 확장되었습니다.
VGGFace (더 나은 이름이 없음)는 Omkar Parkhi 등이 개발했습니다. 옥스포드의 VGG (Visual Geometry Group)의 2015년 논문 인 "Deep Face Recognition (딥 얼굴 인식)"에 설명되어 있습니다. 더 잘 조정 된 모델 외에도 작업의 초점은 매우 큰 훈련 데이터 세트를 수집하고 사용하는 방법에 있었습니다. 이를 통해 얼굴 인식을 위한 매우 깊은 CNN 모델을 훈련시켜 표준 데이터 세트에서 최첨단 결과를 얻을 수 있었습니다.
FaceNet은 2015 년 Google 연구원이 개발한 얼굴 인식 시스템으로, 다양한 얼굴 인식 벤치 마크 데이터 세트에서 최첨단 결과를 달성했습니다. FaceNet 시스템은 모델의 여러 타사 오픈 소스 구현 및 사전 훈련된 모델의 가용성 덕분에 광범위하게 사용할 수 있습니다.
딥러닝을 이용하는 최근의 방법들도 종래의 "PCA(Principle Component Analysis)와 ICA(Independent Component Analysis)"와 유사한 방법을 사용하는데, 오토인코더(Autoencoder)와 같은 인공신경망도 낮은 차원의 벡터로 얼굴 정보를 임베딩(Embedding)하여 차원을 축소한다.<
픽셀 기반 유사도 측정 - MSE(Mean Squared Error) 픽셀 기반 방법 - PSNR (Peak SNR) , MSE 기반으로 SNR 을 계산 구조기반 - SSIM (Structural Similarity Index) - 밝기 대비 구조를 이용 특징기반 - SIFT (Scale-Invariant Feature Transform) - 특징점 추출 매칭 특징기반 - SURF (Speeded Up Robust Features) - SIFT 대안, openCV 3.4.2 이상 비활성화됨(옵션활성화 후 빌드하면 사용가능) 벡터공간 - 코사인 유사도, hamming distance(이진벡터간의 차이를 측정)
nc나 make menuconfig 처럼 실행시 혹은 동적으로 창 크기나 비율을 어떻게 조절하나 궁금해짐
Name getyx, getparyx, getbegyx, getmaxyx - get curses cursor and window coordinates
Synopsis #include <curses.h>
void getyx(WINDOW *win, int y, int x); void getparyx(WINDOW *win, int y, int x); void getbegyx(WINDOW *win, int y, int x); void getmaxyx(WINDOW *win, int y, int x);
Flask 에 static_url_path와 static_folder 를 설정해서 정적으로 서빙할 경로를 지정한다.
template_folder는 template engine를 위한 경로 같긴한데, 지금은 그걸 하려는게 아니니 패스~ 하고
/ 로 요청이 들어오면 index.html을 던지도록 라우터 하나 설정하고
나머지는 자동으로 static 경로 하위에서 제공
그리고 /api 쪽은 별도로 라우터 지정해서 2개의 api를 생성해준다.
/app.py
from flask import Flask, jsonify, render_template
app = Flask(__name__,
static_url_path='',
static_folder='static',
template_folder='templates')
@app.route('/')
def serve_index():
return app.send_static_file('index.html')
# REST API 라우트
@app.route('/api/hello')
def api_hello():
return jsonify({"message": "Hello, this is a REST API response!"})
# 또 다른 REST API
@app.route('/api/sum/<int:a>/<int:b>')
def api_sum(a, b):
return jsonify({"a": a, "b": b, "sum": a + b})
if __name__ == "__main__":
# 디버그 모드 실행
app.run(debug=True)
$ python3 app.py * Serving Flask app 'app' * Debug mode: on WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. * Running on http://127.0.0.1:5000 Press CTRL+C to quit * Restarting with stat * Debugger is active! * Debugger PIN: 997-788-229