Human distance detecting for security cameras

Sippapas Charoenkul
3 min readJun 29, 2021

--

This human distance detecting model use human detection model from one of TensorFlow’s tutorial called model zoo. There you can find several object (or human) detecting models and other models.

โมเดลตรวจวัดระยะห่างของคน อันนี้ได้ใช้โมเดลตรวจจับคน จากตัวอย่างโมเดลของTensorFlow ซึ่งถูกเรียกว่า model zoo. ในนั้นจะสามารถหาโมเดลตรวจจับวัตถุหรือมนุษย์ และรวมถึงโมเดลอื่นๆ อีกหลายโมเดลอีกด้วย

This model is built for video from security cameras but it also work with video from normal cameras too. You can modify the focal length in the model to fit your video’s camera to make the distance more accurate. additionally you can also change average human height to fit the photo shoot location.

โมเดลนี้ถูกสร้างมาเพื่อวิดีโอจากกล้องวงจรปิดแต่ก็สามารถปรับเพื่อให้เข้ากับวิดีโอจากกล้องธรรมดาได้เช่นกัน โดยสามารถปรับความยาวโฟกัสเพื่อให้ตรงกับกล้องที่ใช้ถ่ายวิดีโอ นอกจากนี้ยังสามารถปรับความสูงเฉลี่ยของมนุษย์เพื่อให้ตรงกับความสูงเฉลี่ยของคนที่ที่ตั้งของกล้อง

File Placement

การจัดวางไฟล์

File Placement

The model will seperate into 2 parts:

1.Detect

Part 1 Detect: Load and Extract Model

In the first part we will create a class and input model’s path. next we load in the frozen model and extract it’s variable

เริ่มแรกสร้าง class และใส่เส้นทางไปยังไฟล์โมเดล จากนั้นก็โหลดโมเดลและนำตัวแปรของโมเดลออกมา

Part 1 Detect: Detect Human in Image

Second, we will run model to detect object in each each frame and output boxes list(where detected object is in the picture) scores(confidence of prediction in each object) classes(what object it is) num(number of object detected). Then close the session.

ต่อมาใช้โมเดลตรวจจับวัตถุในแต่ละเฟรม และนำค่า boxes list(ตำแหน่งทีพบวัตถุ) scores(ค่าความมั่นใจของโมเดลต่อแต่ละวัตถุ) classes(ประเภทของวัตถุ) num(จำนวนวัตถุ)ออกมา แล้วปิด Session

2.Process

Part 2 Process: Setting Path and Valuable

In the second part, we will start by setting path to model and input video. Create a detector, output dataframe and other valuable

ในขั้นที่ 2 เราจะเริ่มด้วยการตั้งเส้นทางไปยังโมเดลและวิดีโอที่จะใช้ จากนั้นสร้าง ตัวตรวจจับ dataframeสำหรับส่งข้อมูลออก และตัวแปรอื่นๆ

Part 2 Process: Process for each frame

These are the process we have to do with every frame.

ขั้นตอนต่อไปนี้จะถูกทำกับทุกๆเฟรม

Part 2 Process: Step 1–4
  1. Resizes frame to 1280 x 720

2. Create layers for lines and boxes

3. Detect object from frame and extract valuable

4. Create some necessary valuables

  1. ปรับขนาดเฟรมเป็น 1280 x 720
  2. สร้างเลเยอร์สำหรับเส้นและกล่อง
  3. ใช้ตัวตรวจจับหาวัตถุจาเฟรมและนำตัวแปรออกมา
  4. กำหนดตัวแปรที่จำเป็นที่เหลือ
Part 2 Process: Step 5–8

5. Create box surrounding every object that is human

6. Find center of every human’s box

7. Put texts and boxes on box layer

8. Find true distance of each box to the camera by calculating box height , human height and focal length

5. สร้างกล่องรอบวัตถุทุกชิ้นที่เป็นมนุษย์

6. หาจุดศูนย์กลางของแต่ละกล่อง

7. บันทึก ข้อความและกล่องลงในเลเยอร์ของกล่อง

8. หาระยะห่างจริงของกล่องกับกล้องโดยคำนวณจากความสูงกล่อง ความสูงมนุษย์ และ ระยะโฟกัส

Part 2 Process: Step 9–12

9. Create a line between every boxes

10. Put lines on line layer

11. Find ratio between every 2 boxes

12. Find distance between every 2 boxes by using ratio,distance between box and camera, distance between 2 box in pixel

9. สร้างเส้นระหว่างกล่องทุกกล่อง

10. บันทึกเส้นลงบนเลเยอร์ของเส้น

11. หาอัตราส่วนระหว่างกล่อง2กล่อง

12. หาระยะห่างระหว่างกล่อง2กล่อง โดยใช้ อัตราส่วน,ระยะระหว่างกล่องกับกล้อง และ ระยะห่างของแต่ละกล่องในหน่วยpixel

Part 2 Process: Step 13–14

13. Merge line layer and box layer

14. Store distance to the output dataframe

13. รวมเลเยอร์เส้นและกล่อง

14. เก็บระยะห่างจริงไว้ใน dataframe

Output: Video and CSV File

Finally, we write video and save output dataframe to a csv file

และสุดท้ายเราบันทึกวิดีโอและ dataframe เป็นไฟล์ csv

GitHub: https://github.com/MysteryJack/Distance_Detection

Thank you so much for reading , if you found this helpful please share.

--

--

No responses yet