摘要:本次 Project 中,我们利用 TCP 协议、通过基于 Python 的 socket 的模块,实现了人群分布数据的传输与远程卷积神经网络的模型部署和识别应用。具体流程与功能包括:将本地笔记本和树莓派设备上的摄像头获取的视频流进行编码后上传至服务器;服务器端利用训练好的基于 Caffe 的 CNN 模型,计算出每帧图片的人群分布密度图;最后,服务器再用类似的方法将结果回传到本地客户端上并显示。
目录
基于 TCP 协议与 Python 中 Socket 模块的人群分布数据传输与远程 CNN 识别模型部署 1
1. 概述 2
1.1 问题提出 2
1.2 程序总体设计 3
1.3 最终成果简述 3
1.4 报告结构 3
2. 基本概念与原理 4
2.1 TCP 4
2.1.1 TCP 原理概述 4
2.1.2 发展历史与应用 4
2.1.3 运作方式 5
2.1.4 可靠传输 7
2.1.5 流量控制 10
2.1.6 拥塞控制 11
2.1.7 报文段格式 11
2.2 Python Socket 11
2.1.1 概述 12
2.1.2 Socket 类型 12
2.1.3 Socket 函数 12
2.1.4 Socket 程序的整体一般结构 14
3. 程序实现 15
3.1 客户端Python 程序client.py 15
3.1.1 程序框图 15
3.1.2 详细实现步骤与部分关键代码 16
3.2 服务端Python 程序server.py 18
3.3 socket_send_recv.py 文件 21
4. 问题排查与解决方法 23
4.1 出现的问题 23
4.2 问题排查与解决 26
4.2.1 假设一与分析 26
4.2.2 假设二与分析 26
# 开启多线程服务器,一次连接一个线程 29
5. 结果展示 31
5.1 项目成果 31
5.2 利用WireShark 抓包分析 32
6. 总结与心得 34