Human distance detecting for security cameras
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
การจัดวางไฟล์
The model will seperate into 2 parts:
1.Detect
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 และใส่เส้นทางไปยังไฟล์โมเดล จากนั้นก็โหลดโมเดลและนำตัวแปรของโมเดลออกมา
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
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สำหรับส่งข้อมูลออก และตัวแปรอื่นๆ
These are the process we have to do with every frame.
ขั้นตอนต่อไปนี้จะถูกทำกับทุกๆเฟรม
- 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
- ปรับขนาดเฟรมเป็น 1280 x 720
- สร้างเลเยอร์สำหรับเส้นและกล่อง
- ใช้ตัวตรวจจับหาวัตถุจาเฟรมและนำตัวแปรออกมา
- กำหนดตัวแปรที่จำเป็นที่เหลือ
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. หาระยะห่างจริงของกล่องกับกล้องโดยคำนวณจากความสูงกล่อง ความสูงมนุษย์ และ ระยะโฟกัส
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
13. Merge line layer and box layer
14. Store distance to the output dataframe
13. รวมเลเยอร์เส้นและกล่อง
14. เก็บระยะห่างจริงไว้ใน dataframe
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.