# data[].attributes.body
목표 :
1) ADD Part 2
2) ADD Part 3
3) ADD Part 4

# data[].attributes.body
목표 :
1) Architecture Centric Lifecycles Part 2
2) Architecture Centric Lifecycles Part 3
3) ADD Part 1

학습리뷰완료 (6/15)

# data[].attributes.body
목표 : Architecture Centric Lifecycles I

학습리뷰완료 (6/14)

# data[].attributes.body
목표 :  Introduction to Architectural Structures III

학습리뷰완료 (6/11)

# data[].attributes.body
Live session (7/12 9:00 KST)
Live session (7/14 9:00 KST)
Live session (7/16 9:00 KST)

Project milestone#3 (7/17 12:59 KST
- Demo and lessons learned: For the final milestone, the team will demo the completed system, and present the lessons learned

# data[].attributes.body
Live session (7/5 9:00 KST)
Live session (7/7 9:00 KST)
Live session (7/9 9:00 KST)

Assignment #4 due date (?)

# data[].attributes.body
Live session (6/28 9:00 KST)
Live session (6/30 9:00 KST)
Live session (7/2 9:00 KST)

Assignment #3 due date (?)
Project milestone#2 (7/3 12:59 KST)
- Experimentation results, design, plan for construction: The second milestone will turn in the results of
experiments conducted, the current state of the design, and the plan for construction.

# data[].attributes.body
Live session (6/21 9:00 KST)
Live session (6/23 9:00 KST)
Live session (6/25 9:00 KST)

# data[].attributes.body
Live session (6/14 9:00 KST)
Live session (6/16 9:00 KST)
Live session (6/18 9:00 KST)

Assignment #2 due date (6/19 12:59 KST)
Project milestone#1 (6/19 12:59 KST)
- Requirements, plan and risks: For the first milestone the team will turn in the prioritized architectural
drivers, any draft design decisions they are considering, the technical risks identified, and the experimentation plans (or any results already achieved).

# data[].attributes.body
Live session (6/9 9:00 KST)
Live session (6/11 9:00 KST)
Exam (6/11 10:00 KST)

Assignment #1 due date (6/12 12:59 KST)

# data[].attributes.body
목표 :
1) Architectural Drivers - Part 1 study
2) Assignment 분석

학습리뷰완료 (6/8)

# data[].attributes.body
목표 :
1) Architectural Drivers - Part 2 study
2) Architectural Drivers - Part 3 study

학습리뷰완료 (6/9)

# data[].attributes.body
목표 :
1) Introduction to Architectural Structures I study
2) Introduction to Architectural Structures II study

학습리뷰완료 (6/10)

# data[].attributes.body
1) test mode에서 비디오 파일은 jetson에 있다고 가정? winApp에서 파일리스트를 보고 선택가능해야하는지? 정해진 경로에 1개파일만 있다는 전제로 실행버튼 누르면 되는지

# data[].attributes.body
1) UDP TCP 성능비교

# data[].attributes.body
NTCNN : https://yeomko.tistory.com/16

# data[].attributes.body
- iframe(key frame) 활용
- 확장성 관련 고민한 내용 디자인에 표현되도록(성별/나이 인식)
- Jetson code 객체화 필요
- UDP로 하되 TCP도 테스트 필요(Back data)

# data[].attributes.body
- What is the meaning of Jitter?
- What is the differences between learning mode and rescan mode?
learning mode : 기존 유저 사진 추가
rescan mode : 새로운 사람 등록?
- How to display output? (Format)
- What is the meaning of amplifying analysis information? 추가 분석되는 정보 표현을 의미? (인식률 vs 나이 / 성별 / 인종)
- Image analysis application 의미? (별도 개발 필요?)
- Is secure mode selectable?

# data[].attributes.body
<오버뷰>
Architect and add features to an embedded face recognition system running on a Jetson Nano
processor that utilizes CUDA that utilizes a windows C++ or Java control and display application.

• Ensure the best possible performance; minimize latency and
jitter while maximizing face detection, recognition accuracy,
image quality and frame rate
• Control/Display application can be written in C++ or Java (your
choice)
• Ensure application network communication is secure

<Project Responsibilities>
1. Ensure the best possible performance; minimize latency
and jitter while maximizing face detection, recognition
accuracy, image quality and frame rate.
-> CPU로 그리는 recognition 박스를 CUDA로 그리도록 전환
-> Improve SVM prediction 부분
-> Implement object tracker to improve classification by considering recent predictions for the tracked face
(나중에 성능 QA로 고려 가능)

2. Measure and display performance frame rate, frame size, jitter, latency and recognition accuracy.
Accuracy should be measured using the demo video and identifying people on key frames.
Accuracy will be computed using a set of 25 provided frame numbers in the demo video.
-> 퍼포먼스 측정해서 출력할 방법 필요 - FPS 숫자 / Frame size / Jitter / Latency / Accuracy 등
-> Accuracy의 경우는 Key frame(I frame)에 존재하는 사람의 숫자를 통해 측정되어야만 함
-> Accuracy는 25개의 frame을 통해 계산되어질 것이다. -> 총 25개의 key frame을 measure해서 최종 정확성 계산할거다..인듯
(FR로 고려 가능)

3. Implementing the specified enhancements to the applications.
-> 1번 것들 적용 or 추가 feature 구현하여 적용

4. Proper fault/error detection, recovery, and reporting.
-> 네트워크 에러 / 시스템 stuck / 등등..
(FR로 고려 가능)

5. Ensure application network communication is secure
-> TCP는 자체가 secure...? / UDP에 대한 대책...스트림을 encrypt 할 것인가.. 전체 혹은 일부만.. 등등
(FR로 고려 가능)

<The user display and system control application is responsible>
1. Establishing secure and authenticated communication with the camera and image
analysis application and user interface when secure mode is selected or
requested.
-> Secure 모드는 App을 통해 유저 선택

2. Provides the user interface to control the system. User Interface shall support the
following modes of operation:
a) Learning Mode - User images can be added to the image database. In this mode the
interface should query for the name of the person in front of the camera and the number of
samples to be collected.
b) Rescan Mode - Ability to add a new person face directory on the embedded system and
have the system restart with new image set for recognition.
c) Run Mode – System utilizes camera to identify faces and perform facial recognition.
d) Test Run Mode – System utilizes a video file to identify faces and perform facial recognition.
-> Jetson 쪽을 control 할 수 있는 인터페이스가 필요.. 네트워크를 통해 유저 application이 이를 호출하게 됨
(External interface로 고려 가능 / select mode를 위한 인터페이스 필요)
-> 정의된 4가지 모드에 맞게 Jetson이 동작할 수 있어야 함
-> 러닝 모드에서는 기존에 등록된 사람(이름을 Jetson에 전달 필요)에 대해 카메라에 보이는 사람(or 이미지파일)과 샘플 개수를 Jetson에게 알려줘서 DB에 습득(?)시킬 수 있어야 함
-> 리스캔 모드에서는 신규 사람을 추가하는 것으로, face 디렉토리에 인식된 새로운 사람을 추가.. 그런데 image set 이 카메라 소스일지, 이미지 파일인지 확인필요함. 이후에 시스템 리부팅함
-> 런 모드는 카메라를 통한 일반적인 얼굴 인식 모드.. DB에 있는 사람과 매핑해서 누군지 알려주는..
-> 테스트 런 모드는 비디오 파일을 통한 얼굴 인식 모드

3. Communicating with the camera and image analysis application is secure.
-> Secure 모드 지원

4. Display image frames, frame size, performance information, and any
accompanying amplifying analysis information received from the camera and
image analysis application in the format specified.
-> 퍼포먼스 관련 정보를 화면에 출력해줘야 하는데... amplifying analysis information은 정확한 의미 확인 필요

You may use your laptops to assume various roles in your system in anyway you like
You may use 3rd party, open-source SW, but please check with the owner (course instructor).
-> 오픈소스 라이브러리 써도 됨.. System의 여러 요구사항을 충족시키는 부분을 랩탑(Control application) 영역으로 둬도 된다..로 이해..

---------------------------------------------------------------------------------------
1. 개발항목 (System)
- Jetson Nano 상에서 동작되는 바이너리 + (image processing 하기 위한 추가 바이너리? -> 구조 설계 영역)
- 위의 바이너리와 통신하면서 Windows(랩탑)상에서 control and display 가 가능한 System Control Application

2. Project Planning
- 역할분담 - 많은 일들이 서로 연관되어 있지만, 독립적인 일을 정의해서 분담 (향후에 이 항목들에 대해 어떻게 프로그레스를 서로 체크할지 방법 필요)
- 리스크 도출 & 매니지먼트 (Risk Driven Approach)

3. 마일스톤
- (1) 6월 18일 : 개발계획 / Architectural Drivers / Architectural approach 드래프트 / 도출된 테크니컬 Risk / 실험(테스트?) 계획 및 초기 실험 결과
- (2) 7월 2일 : 업데이트된 개발계획 / 업데이트된 디자인 / 남아있는 테크니컬 Risk / 실험 계획 및 결과
- (3) 7월 16일 : 최종 데모 / 레슨 앤 런

다음 스텝..

. Functional Requirement 도출하고..

. Quality Attribute 도출하고..

. 3가지 Perspective에 따라 스태틱 / 다이내믹 / 피지컬 관점으로 확인

. 아키텍쳐 디자인 및 대인 도출하고..

. QA에 따라 아키텍쳐 디시젼 하여 설계 결정

. 실제 구현..