YOLOv5 & Socket

Choi·2023년 5월 14일
0

캡스톤

목록 보기
7/12
post-thumbnail

이제 YOLOv5 객체 인식 정보를 서버로 모아야한다.

  1. detect.py에 client code 추가
  2. server 구축
  3. motor client 구축

1번은 간단하게 해결했다. 객체 인식 정보를 보내기만 하면 된다. 수신은 하지 않기 때문에 전송 기능에 초점을 맞췄다. 하지만 중요한 것이 있다.

언제 전송할 것인가?

그저 사람이라는 이유로 데이터를 보낸다면 서버에서는 구분하기 힘들다.
즉 횡단을 원하는 보행자가 있을 때 서버로 객체 인식 정보를 보내야한다.
조건문을 한 번 거치고 서버로 보내야 서버의 부담이 적다.

조건문
1. 사람이다
2. 바운딩 박스의 넓이가 일정 넓이 이상이다.
3. 일정 시간동안 지속적으로 인식된다.

이 때 서버로 객체 인식 정보를 보낸다.


차량을 인식하는 detect.py에서는 안전을 위해 조금 먼 거리에 있는 차량이라도
인식 된다면 서버로 정보를 전송하도록 했다.

조건문
1. 차량이다
2. 바운딩 박스의 넓이가 일정 넓이 이상이다.

이 데이터들은 JSON 타입으로 주고 받을 것이다. 단순한 문자열이라면 활용도가 떨어진다.
JSON 타입을 통해 복잡성을 낮추고, 활용도를 높게 한다.

{id:1,
label:int(label),
time:now.time
}

server는 4개의 클라이언트로 부터 YOLOv5 인식 결과를 전송 받는다. 그리고 이 정보들을 취합하여
보행자를 건너게 할 것인지 판단한다. 그리고 모터 클라이언트에게 모터 동작 명령을 내린다.

조건
1) 차량이 멀리 있거나 없는가
2) 횡단 하고싶어하는 보행자가 있는가
3) 일정 시간 이 전에 동작하지 않았는가

수신, 송신이 동시에 되야한다. 멀티 스레드를 통해 병렬처리를 해준다.
그리고 모터 동작에게 동작 명령을 전송한다.

motor client는 모터 동작 명령이 오는지 무한루프를 통해 확인한다. 그리고 명령이 온다면
모터를 일정시간 동안 동작시킨다.

코딩 like 젠가... 무너트리지말자..

profile
느려도 내 것으로 만드는게 좋잖아?

0개의 댓글