[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-LeonLok--Multi-Camera-Live-Object-Tracking":3,"tool-LeonLok--Multi-Camera-Live-Object-Tracking":64},[4,18,26,35,44,53],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":17},4358,"openclaw","openclaw\u002Fopenclaw","OpenClaw 是一款专为个人打造的本地化 AI 助手，旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚，能够直接接入你日常使用的各类通讯渠道，包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息，OpenClaw 都能即时响应，甚至支持在 macOS、iOS 和 Android 设备上进行语音交互，并提供实时的画布渲染功能供你操控。\n\n这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地，用户无需依赖云端服务即可享受快速、私密的智能辅助，真正实现了“你的数据，你做主”。其独特的技术亮点在于强大的网关架构，将控制平面与核心助手分离，确保跨平台通信的流畅性与扩展性。\n\nOpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者，以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力（支持 macOS、Linux 及 Windows WSL2），即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你",349277,3,"2026-04-06T06:32:30",[13,14,15,16],"Agent","开发框架","图像","数据工具","ready",{"id":19,"name":20,"github_repo":21,"description_zh":22,"stars":23,"difficulty_score":10,"last_commit_at":24,"category_tags":25,"status":17},3808,"stable-diffusion-webui","AUTOMATIC1111\u002Fstable-diffusion-webui","stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面，旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点，将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。\n\n无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师，还是想要深入探索模型潜力的开发者与研究人员，都能从中获益。其核心亮点在于极高的功能丰富度：不仅支持文生图、图生图、局部重绘（Inpainting）和外绘（Outpainting）等基础模式，还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外，它内置了 GFPGAN 和 CodeFormer 等人脸修复工具，支持多种神经网络放大算法，并允许用户通过插件系统无限扩展能力。即使是显存有限的设备，stable-diffusion-webui 也提供了相应的优化选项，让高质量的 AI 艺术创作变得触手可及。",162132,"2026-04-05T11:01:52",[14,15,13],{"id":27,"name":28,"github_repo":29,"description_zh":30,"stars":31,"difficulty_score":32,"last_commit_at":33,"category_tags":34,"status":17},2271,"ComfyUI","Comfy-Org\u002FComfyUI","ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎，专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式，采用直观的节点式流程图界面，让用户通过连接不同的功能模块即可构建个性化的生成管线。\n\n这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景，也能自由组合模型、调整参数并实时预览效果，轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性，不仅支持 Windows、macOS 和 Linux 全平台，还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构，并率先支持 SDXL、Flux、SD3 等前沿模型。\n\n无论是希望深入探索算法潜力的研究人员和开发者，还是追求极致创作自由度的设计师与资深 AI 绘画爱好者，ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",107888,2,"2026-04-06T11:32:50",[14,15,13],{"id":36,"name":37,"github_repo":38,"description_zh":39,"stars":40,"difficulty_score":10,"last_commit_at":41,"category_tags":42,"status":17},4487,"LLMs-from-scratch","rasbt\u002FLLMs-from-scratch","LLMs-from-scratch 是一个基于 PyTorch 的开源教育项目，旨在引导用户从零开始一步步构建一个类似 ChatGPT 的大型语言模型（LLM）。它不仅是同名技术著作的官方代码库，更提供了一套完整的实践方案，涵盖模型开发、预训练及微调的全过程。\n\n该项目主要解决了大模型领域“黑盒化”的学习痛点。许多开发者虽能调用现成模型，却难以深入理解其内部架构与训练机制。通过亲手编写每一行核心代码，用户能够透彻掌握 Transformer 架构、注意力机制等关键原理，从而真正理解大模型是如何“思考”的。此外，项目还包含了加载大型预训练权重进行微调的代码，帮助用户将理论知识延伸至实际应用。\n\nLLMs-from-scratch 特别适合希望深入底层原理的 AI 开发者、研究人员以及计算机专业的学生。对于不满足于仅使用 API，而是渴望探究模型构建细节的技术人员而言，这是极佳的学习资源。其独特的技术亮点在于“循序渐进”的教学设计：将复杂的系统工程拆解为清晰的步骤，配合详细的图表与示例，让构建一个虽小但功能完备的大模型变得触手可及。无论你是想夯实理论基础，还是为未来研发更大规模的模型做准备",90106,"2026-04-06T11:19:32",[43,15,13,14],"语言模型",{"id":45,"name":46,"github_repo":47,"description_zh":48,"stars":49,"difficulty_score":10,"last_commit_at":50,"category_tags":51,"status":17},4292,"Deep-Live-Cam","hacksider\u002FDeep-Live-Cam","Deep-Live-Cam 是一款专注于实时换脸与视频生成的开源工具，用户仅需一张静态照片，即可通过“一键操作”实现摄像头画面的即时变脸或制作深度伪造视频。它有效解决了传统换脸技术流程繁琐、对硬件配置要求极高以及难以实时预览的痛点，让高质量的数字内容创作变得触手可及。\n\n这款工具不仅适合开发者和技术研究人员探索算法边界，更因其极简的操作逻辑（仅需三步：选脸、选摄像头、启动），广泛适用于普通用户、内容创作者、设计师及直播主播。无论是为了动画角色定制、服装展示模特替换，还是制作趣味短视频和直播互动，Deep-Live-Cam 都能提供流畅的支持。\n\n其核心技术亮点在于强大的实时处理能力，支持口型遮罩（Mouth Mask）以保留使用者原始的嘴部动作，确保表情自然精准；同时具备“人脸映射”功能，可同时对画面中的多个主体应用不同面孔。此外，项目内置了严格的内容安全过滤机制，自动拦截涉及裸露、暴力等不当素材，并倡导用户在获得授权及明确标注的前提下合规使用，体现了技术发展与伦理责任的平衡。",88924,"2026-04-06T03:28:53",[14,15,13,52],"视频",{"id":54,"name":55,"github_repo":56,"description_zh":57,"stars":58,"difficulty_score":32,"last_commit_at":59,"category_tags":60,"status":17},2268,"ML-For-Beginners","microsoft\u002FML-For-Beginners","ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程，旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周，包含 26 节精炼课程和 52 道配套测验，内容涵盖从基础概念到实际应用的完整流程，有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。\n\n无论是希望转型的开发者、需要补充算法背景的研究人员，还是对人工智能充满好奇的普通爱好者，都能从中受益。课程不仅提供了清晰的理论讲解，还强调动手实践，让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持，通过自动化机制提供了包括简体中文在内的 50 多种语言版本，极大地降低了全球不同背景用户的学习门槛。此外，项目采用开源协作模式，社区活跃且内容持续更新，确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路，ML-For-Beginners 将是理想的起点。",85013,"2026-04-06T11:09:19",[15,16,52,61,13,62,43,14,63],"插件","其他","音频",{"id":65,"github_repo":66,"name":67,"description_en":68,"description_zh":69,"ai_summary_zh":69,"readme_en":70,"readme_zh":71,"quickstart_zh":72,"use_case_zh":73,"hero_image_url":74,"owner_login":75,"owner_name":76,"owner_avatar_url":77,"owner_bio":78,"owner_company":79,"owner_location":80,"owner_email":79,"owner_twitter":81,"owner_website":82,"owner_url":83,"languages":84,"stars":93,"forks":94,"last_commit_at":95,"license":96,"difficulty_score":97,"env_os":98,"env_gpu":99,"env_ram":100,"env_deps":101,"category_tags":112,"github_topics":113,"view_count":32,"oss_zip_url":79,"oss_zip_packed_at":79,"status":17,"created_at":133,"updated_at":134,"faqs":135,"releases":165},4480,"LeonLok\u002FMulti-Camera-Live-Object-Tracking","Multi-Camera-Live-Object-Tracking","Multi-camera live traffic and object counting with YOLO v4, Deep SORT, and Flask.","Multi-Camera-Live-Object-Tracking 是一款基于 YOLO v4、Deep SORT 和 Flask 构建的开源系统，专为多摄像头实时交通监控与目标计数设计。它有效解决了传统单视角监控覆盖范围有限、跨镜头目标追踪困难以及复杂场景下计数不准等痛点，特别适用于需要统计人流车流或分析交通流向的场景。\n\n该工具非常适合开发者、计算机视觉研究人员及智能交通系统的构建者使用。其核心亮点在于支持异步视频流处理，允许用户通过 ImageZMQ 将普通智能手机模拟为 IP 摄像头，从而以低成本搭建分布式监控网络。在算法层面，项目采用了基于 DETRAC 数据集训练的专业模型，并引入了低置信度过滤机制，显著降低了误检率。此外，它具备独特的“交叉线计数”逻辑，即使目标短暂丢失追踪后重新锁定，也能确保只被计数一次，同时支持按角度统计方向性流量并记录详细的时空数据。虽然模型主要针对中国交通场景优化，但其灵活的架构允许用户在云端部署并根据实际需求进行微调，是进行实时物体检测与追踪研究的优秀参考方案。","\u003Ch1 align='center'>\nMulti-Camera Live Object Tracking\n\u003C\u002Fh1>\n\nThis repository contains my object detection and tracking projects. All of these can be hosted on a cloud server.\n\nYou can also use your own IP cameras with asynchronous processing thanks to [ImageZMQ](https:\u002F\u002Fgithub.com\u002Fjeffbass\u002Fimagezmq). I've written a blog post on how to stream using your own smartphones with ImageZMQ [here](https:\u002F\u002Fleonlok.co.uk\u002Fblog\u002Flive-video-streaming-using-multiple-smartphones-with-imagezmq\u002F).\n\n## Deep SORT and YOLO v4\nCheck out my [Deep SORT repository](https:\u002F\u002Fgithub.com\u002FLeonLok\u002FDeep-SORT-YOLOv4) to see the tracking algorithm that I used which includes the options for Tensorflow 2.0, asynchronous video processing, and low confidence track filtering.\n\n***\n## Traffic Counting ([Link](https:\u002F\u002Fgithub.com\u002FLeonLok\u002FMulti-Camera-Live-Object-Tracking\u002Ftree\u002Fmaster\u002Ftraffic_counting))\nThis project is an extension of the object counting app.\n\n\u003Cdiv align='center'>\n\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FLeonLok_Multi-Camera-Live-Object-Tracking_readme_826fdceca329.gif\" width=\"80%\"\u002F>\n\u003C\u002Fdiv>\n\n### ([Full video](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=x6vkXf-mgaw&feature=youtu.be))\n\n### Features\n\n* Trained using a total of **244,617** images generated from the DETRAC dataset. You can find the conversion code that I created [here](https:\u002F\u002Fgithub.com\u002FLeonLok\u002FMulti-Camera-Live-Object-Tracking\u002Ftree\u002Fmaster\u002Fdetrac_tools). \n    * I used this [paper](https:\u002F\u002Fieeexplore.ieee.org\u002Fdocument\u002F8909903) as a guideline for data preparation and training.\n* Only counts each tracking ID once.\n* Counts objects by looking at the intersection of the path of the tracked object and the counting line.\n    * Hence, those that lose tracking but are retracked with the same ID still get counted.\n* Tracked using low confidence track filtering from the same [paper](https:\u002F\u002Fieeexplore.ieee.org\u002Fdocument\u002F8909903).\n    * Offers much lower false positive rate.\n    * Tracked objects show average detection confidence.\n    * Tracked classes determined by most common detection class.\n* Showing detections is optional (but hides average detection confidence).\n* Multiple IP cameras possible.\n* Video streaming possible via emulated IP camera.\n* Directional counts can be configured based on angle.\n* Records counts for every set interval of the hour.\n    * Total count.\n    * Class-based counts.\n* Records intersection details for each counted object.\n    * Time of intersection.\n    * Coordinate of intersection.\n    * Angle of intersection.\n* Can be hosted on a cloud server.\n\nNote that since DETRAC doesn't contain any motorcycles, they are the only vehicles that are ignored. Additionally, the DETRAC dataset only contains images of traffic in **China**, so it struggles to correctly detect certain vehicles in other countries due to lack of training data. For example, it can frequently misclassify hatchbacks as SUVs, or not being able to detect taxis due to different colour schemes.\n\n\n***\n## Object Counting ([Link](https:\u002F\u002Fgithub.com\u002FLeonLok\u002FMulti-Camera-Live-Object-Tracking\u002Ftree\u002Fmaster\u002Fobject_counting))\nThis project was originally intended to be an app for counting the current number of people in multiple rooms using my own smartphones, where the server would be remotely hosted. Below shows detection, tracking, and counting of people and cars.\n\n\u003Cdiv align='center'>\n\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FLeonLok_Multi-Camera-Live-Object-Tracking_readme_9ae63ecd773c.gif\" width=\"50%\"\u002F>\n\u003C\u002Fdiv>\n\n### Features\n\n* Counts the current number of objects in view.\n* Tracking is optional.\n* Multiple IP cameras possible.\n* Records current counts for every set interval of the hour.\n    * Current total count.\n    * Current class-based counts.\n* Can be hosted on a cloud server.\n\n***\n## Using my own smartphones as IP cameras\n\n\u003Cdiv align='center'>\n\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FLeonLok_Multi-Camera-Live-Object-Tracking_readme_4f89b71138e8.gif\" width=\"50%\"\u002F>\n\u003C\u002Fdiv>\n\n***\n## Training your own vehicle tracking model ([Link](https:\u002F\u002Fgithub.com\u002FLeonLok\u002FMulti-Camera-Live-Object-Tracking\u002Ftree\u002Fmaster\u002Fdetrac_tools))\nI trained a YOLO v4 and Deep SORT model using the [DETRAC](http:\u002F\u002Fdetrac-db.rit.albany.edu\u002F) training dataset with v3 annotations. I've provided the scripts for converting the DETRAC training images and v3 annotations into the correct format for training both the YOLO v4 model as well as the Deep SORT tracking model.\n\nI had to train the YOLO v4 model using Darknet and then convert it to Keras format using `convert.py` from the [Keras-to-YOLOv4 repository](https:\u002F\u002Fgithub.com\u002FMa-Dan\u002Fkeras-yolo4). The Deep SORT model was trained using [cosine metric learning](https:\u002F\u002Fgithub.com\u002Fnwojke\u002Fcosine_metric_learning).\n\nIf you don't want to train your own models, this repository already includes the trained Deep SORT model (mars-small128.pb) from the [original Deep SORT repository](https:\u002F\u002Fgithub.com\u002Fnwojke\u002Fcosine_metric_learning). Follow the instructions in the [Keras-to-YOLOv4 repository](https:\u002F\u002Fgithub.com\u002FMa-Dan\u002Fkeras-yolo4) for downloading and converting an already trained Darknet YOLO v4 model to Keras format.Alternatively, you can also find these in my [Deep SORT and YOLOv4 repository](https:\u002F\u002Fgithub.com\u002FLeonLok\u002FDeep-SORT-YOLOv4)\n\nPlease note that if you decide not to train your own models, the vehicle tracking performance will most likely be worse than if you trained your own models on the DETRAC dataset or any other traffic dataset. This is mainly because the original Deep SORT model (mars-small128.pb) was trained on tracking people and not vehicles. However, if your goal is to use this app to count people then this shouldn't be much of an issue.\n\n### Deep SORT conversion parameters\nDETRAC images are converted into the Market 1501 training format.\n\n* Occlusion threshold - ignore vehicle sequences with too high occlusion ratio.\n* Truncation threshold - ignore vehicle sequences with too high truncation ratio.\n* Number of occurrences - vehicle sequences that are too short (i.e. not enough images) are discarded after considering occlusion and truncation ratios.\n\n### YOLO conversion parameters\nDETRAC images are converted into the Darknet YOLO training format.\n\n* Occlusion threshold - ignore vehicle sequences with too high occlusion ratio.\n* Truncation threshold - ignore vehicle sequences with too high truncation ratio.\n\nBoth models were trained and evaluated on the DETRAC training set, but no evaluation has been done yet on the test set due to lack of v3 annotations and I don't have MATLAB for the Deep SORT evaluation software. It's been good enough though for my use case so far. \n\n\n***\n## Hardware used\n* Nvidia GTX 1070 GPU\n* i7-8700K CPU\n\nTo give some idea of what do expect, I could run two traffic counting streams at around 10fps each (as you can see in the traffic counting gif). Of course, this heavily depends on stream resolution and how many frames are being processed for detection and tracking.\n\n***\n## YOLO v3 vs. YOLO v4\nI used YOLO v3 when I first started the object counting project which gave me about ~10FPS with tracking, making it difficult to run more than one stream at a time. Using YOLO v4 made it much easier to run two streams with a higher resolution, as well as giving a better detection accuracy.\n\n***\n## Dependencies\n* Tensorflow-GPU 1.14\n* Keras 2.3.1\n* opencv-python 4.2.0\n* ImageZMQ\n* numpy 1.18.2\n* Flask 1.1.1\n* pillow\n\nThis project was built and tested on Python 3.6.\nYou can use the conda environment file to set up all dependencies.\n\nIf environment.yml isn't working, try environment_windows.yml if you're on a Windows machine.\n\n***\n## Credits\n\n* https:\u002F\u002Fgithub.com\u002Fmiguelgrinberg\u002Fflask-video-streaming\n* https:\u002F\u002Fgithub.com\u002FMa-Dan\u002Fkeras-yolo4\n* https:\u002F\u002Fgithub.com\u002Fnwojke\u002Fdeep_sort\n* https:\u002F\u002Fgithub.com\u002FQidian213\u002Fdeep_sort_yolov3\n* https:\u002F\u002Fgithub.com\u002Fyehengchen\u002FObject-Detection-and-Tracking\n","\u003Ch1 align='center'>\n多摄像头实时目标跟踪\n\u003C\u002Fh1>\n\n这个仓库包含了我关于目标检测与跟踪的一些项目。所有这些项目都可以部署在云服务器上。\n\n你也可以利用自己的IP摄像头，并借助[ImageZMQ](https:\u002F\u002Fgithub.com\u002Fjeffbass\u002Fimagezmq)实现异步处理。我写了一篇博客，介绍了如何使用ImageZMQ通过自己的智能手机进行视频流传输，[点击这里](https:\u002F\u002Fleonlok.co.uk\u002Fblog\u002Flive-video-streaming-using-multiple-smartphones-with-imagezmq\u002F)查看。\n\n## Deep SORT与YOLO v4\n请查看我的[Deep SORT仓库](https:\u002F\u002Fgithub.com\u002FLeonLok\u002FDeep-SORT-YOLOv4)，其中包含了我所使用的跟踪算法，支持TensorFlow 2.0、异步视频处理以及低置信度轨迹过滤等功能。\n\n***\n## 交通流量计数（[链接](https:\u002F\u002Fgithub.com\u002FLeonLok\u002FMulti-Camera-Live-Object-Tracking\u002Ftree\u002Fmaster\u002Ftraffic_counting)）\n该项目是目标计数应用的扩展版本。\n\n\u003Cdiv align='center'>\n\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FLeonLok_Multi-Camera-Live-Object-Tracking_readme_826fdceca329.gif\" width=\"80%\"\u002F>\n\u003C\u002Fdiv>\n\n### （完整视频[这里](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=x6vkXf-mgaw&feature=youtu.be)）\n\n### 功能特点\n\n* 使用来自DETRAC数据集生成的共计**244,617**张图像进行训练。我编写的转换代码可以在[这里](https:\u002F\u002Fgithub.com\u002FLeonLok\u002FMulti-Camera-Live-Object-Tracking\u002Ftree\u002Fmaster\u002Fdetrac_tools)找到。\n    * 我参考了这篇[论文](https:\u002F\u002Fieeexplore.ieee.org\u002Fdocument\u002F8909903)，作为数据准备和训练的指导。\n* 每个跟踪ID只计数一次。\n* 通过检测被跟踪物体的运动轨迹与计数线的交点来统计数量。\n    * 因此，即使暂时丢失跟踪但随后以相同ID重新跟踪到的物体仍会被计入。\n* 跟踪过程中采用了来自同一[论文](https:\u002F\u002Fieeexplore.ieee.org\u002Fdocument\u002F8909903)的低置信度轨迹过滤技术。\n    * 这种方法显著降低了误报率。\n    * 显示的跟踪对象会标注平均检测置信度。\n    * 跟踪到的类别由出现频率最高的检测类别决定。\n* 可选择是否显示检测结果（但会隐藏平均检测置信度）。\n* 支持连接多个IP摄像头。\n* 可通过模拟IP摄像头进行视频流传输。\n* 可根据角度配置不同方向的计数。\n* 按设定的时间间隔记录每小时的计数结果。\n    * 总计数。\n    * 按类别计数。\n* 记录每个被计数对象的交点详情。\n    * 交点发生时间。\n    * 交点坐标。\n    * 交点角度。\n* 可部署在云服务器上。\n\n需要注意的是，由于DETRAC数据集中不包含摩托车，因此摩托车将被忽略。此外，DETRAC数据集仅包含**中国**地区的交通图像，所以在其他国家可能难以正确检测某些车辆，因为缺乏相应的训练数据。例如，它可能会经常把两厢车误判为SUV，或者因颜色方案不同而无法识别出租车。\n\n\n***\n## 目标计数（[链接](https:\u002F\u002Fgithub.com\u002FLeonLok\u002FMulti-Camera-Live-Object-Tracking\u002Ftree\u002Fmaster\u002Fobject_counting)）\n该项目最初设计用于通过我自己的智能手机统计多个房间内当前的人数，服务器则远程托管。下图展示了对人和汽车的检测、跟踪及计数过程。\n\n\u003Cdiv align='center'>\n\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FLeonLok_Multi-Camera-Live-Object-Tracking_readme_9ae63ecd773c.gif\" width=\"50%\"\u002F>\n\u003C\u002Fdiv>\n\n### 功能特点\n\n* 统计当前视野内的对象数量。\n* 跟踪功能可选。\n* 支持连接多个IP摄像头。\n* 按设定的时间间隔记录当前计数。\n    * 当前总人数。\n    * 按类别统计的人数。\n* 可部署在云服务器上。\n\n***\n## 使用自己的智能手机作为IP摄像头\n\n\u003Cdiv align='center'>\n\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FLeonLok_Multi-Camera-Live-Object-Tracking_readme_4f89b71138e8.gif\" width=\"50%\"\u002F>\n\u003C\u002Fdiv>\n\n***\n## 训练属于你自己的车辆跟踪模型（[链接](https:\u002F\u002Fgithub.com\u002FLeonLok\u002FMulti-Camera-Live-Object-Tracking\u002Ftree\u002Fmaster\u002Fdetrac_tools)）\n我使用带有v3标注的[DETRAC](http:\u002F\u002Fdetrac-db.rit.albany.edu\u002F)训练数据集，训练了一个YOLO v4和Deep SORT模型。我提供了脚本，可以将DETRAC的训练图像和v3标注转换成适合YOLO v4模型以及Deep SORT跟踪模型训练的格式。\n\n我先用Darknet框架训练了YOLO v4模型，然后使用[Keras-to-YOLOv4仓库](https:\u002F\u002Fgithub.com\u002FMa-Dan\u002Fkeras-yolo4)中的`convert.py`将其转换为Keras格式。Deep SORT模型则是基于[余弦度量学习](https:\u002F\u002Fgithub.com\u002Fnwojke\u002Fcosine_metric_learning)进行训练的。\n\n如果你不想自己训练模型，这个仓库已经包含了来自[原版Deep SORT仓库](https:\u002F\u002Fgithub.com\u002Fnwojke\u002Fcosine_metric_learning)的预训练Deep SORT模型（mars-small128.pb）。你可以按照[Keras-to-YOLOv4仓库](https:\u002F\u002Fgithub.com\u002FMa-Dan\u002Fkeras-yolo4)中的说明，下载并转换一个已训练好的Darknet YOLO v4模型至Keras格式。另外，你也可以在我的[Deep SORT与YOLOv4仓库](https:\u002F\u002Fgithub.com\u002FLeonLok\u002FDeep-SORT-YOLOv4)中找到这些模型。\n\n请注意，如果你选择不自己训练模型，那么车辆跟踪性能很可能会比你自己在DETRAC或其他交通数据集上训练的效果差。这主要是因为原版Deep SORT模型（mars-small128.pb）是针对人员跟踪训练的，而非车辆。不过，如果你的目标只是用这个应用来统计人数，那这应该不会成为大问题。\n\n### Deep SORT转换参数\nDETRAC图像被转换为Market 1501训练格式。\n\n* 遮挡阈值：忽略遮挡比例过高的车辆序列。\n* 截断阈值：忽略截断比例过高的车辆序列。\n* 出现次数：对于过于短暂的车辆序列（即图像数量不足），在考虑遮挡和截断比例后将被丢弃。\n\n### YOLO转换参数\nDETRAC图像被转换为Darknet YOLO训练格式。\n\n* 遮挡阈值：忽略遮挡比例过高的车辆序列。\n* 截断阈值：忽略截断比例过高的车辆序列。\n\n这两个模型均在DETRAC训练集上进行了训练和评估，但由于缺乏v3标注，目前尚未在测试集上进行评估，而且我也没有用于Deep SORT评估软件的MATLAB。不过，就我目前的使用场景而言，这样的效果已经足够好了。\n\n\n***\n## 使用的硬件\n* Nvidia GTX 1070显卡\n* i7-8700K处理器\n\n简单来说，我可以同时运行两条大约10fps的交通流量计数流（如交通流量计数gif所示）。当然，这很大程度上取决于视频流的分辨率以及用于检测和跟踪的帧数。\n\n## YOLO v3 与 YOLO v4\n我在刚开始进行目标计数项目时使用的是 YOLO v3，当时在开启跟踪功能的情况下只能达到约 10 FPS 的帧率，因此难以同时处理多个视频流。而改用 YOLO v4 后，不仅能够更轻松地以更高分辨率同时运行两个视频流，检测精度也有所提升。\n\n***\n## 依赖项\n* Tensorflow-GPU 1.14\n* Keras 2.3.1\n* opencv-python 4.2.0\n* ImageZMQ\n* numpy 1.18.2\n* Flask 1.1.1\n* pillow\n\n本项目是在 Python 3.6 环境下构建并测试的。您可以使用 conda 环境文件来一次性安装所有依赖项。\n如果 environment.yml 文件无法正常工作，请在 Windows 系统上尝试使用 environment_windows.yml 文件。\n\n***\n## 致谢\n\n* https:\u002F\u002Fgithub.com\u002Fmiguelgrinberg\u002Fflask-video-streaming\n* https:\u002F\u002Fgithub.com\u002FMa-Dan\u002Fkeras-yolo4\n* https:\u002F\u002Fgithub.com\u002Fnwojke\u002Fdeep_sort\n* https:\u002F\u002Fgithub.com\u002FQidian213\u002Fdeep_sort_yolov3\n* https:\u002F\u002Fgithub.com\u002Fyehengchen\u002FObject-Detection-and-Tracking","# Multi-Camera-Live-Object-Tracking 快速上手指南\n\n本指南帮助开发者快速部署基于 YOLO v4 和 Deep SORT 的多摄像头实时目标跟踪与计数系统。该项目支持云端部署，并可通过 ImageZMQ 利用智能手机作为 IP 摄像头进行异步视频流处理。\n\n## 环境准备\n\n### 系统要求\n*   **操作系统**: Linux (推荐) 或 Windows\n*   **Python 版本**: 3.6 (项目构建与测试版本)\n*   **硬件建议**:\n    *   GPU: Nvidia GTX 1070 或更高 (用于加速推理)\n    *   CPU: i7-8700K 或同等性能\n    *   *注：在 GTX 1070 上可同时运行两路约 10fps 的交通计数流，具体帧率取决于分辨率和处理帧数。*\n\n### 前置依赖\n项目主要依赖以下库：\n*   Tensorflow-GPU 1.14\n*   Keras 2.3.1\n*   opencv-python 4.2.0\n*   ImageZMQ\n*   numpy 1.18.2\n*   Flask 1.1.1\n*   pillow\n\n> **注意**：本项目使用较旧版本的 TensorFlow (1.x) 和 Keras。若在中国大陆地区安装，建议配置国内镜像源以加速下载：\n> *   Pip 镜像：`https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple`\n> *   Conda 镜像：`https:\u002F\u002Fmirrors.tuna.tsinghua.edu.cn\u002Fanaconda\u002Fpkgs\u002Fmain\u002F`\n\n## 安装步骤\n\n推荐使用 Conda 管理环境，以确保依赖版本兼容。\n\n1.  **克隆仓库**\n    ```bash\n    git clone https:\u002F\u002Fgithub.com\u002FLeonLok\u002FMulti-Camera-Live-Object-Tracking.git\n    cd Multi-Camera-Live-Object-Tracking\n    ```\n\n2.  **创建并激活 Conda 环境**\n    \n    *Linux\u002FMac 用户:*\n    ```bash\n    conda env create -f environment.yml\n    conda activate multi-camera-tracking\n    ```\n\n    *Windows 用户 (若上述文件失效):*\n    ```bash\n    conda env create -f environment_windows.yml\n    conda activate multi-camera-tracking\n    ```\n\n    *手动安装 (若 conda 文件不可用):*\n    ```bash\n    pip install -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple tensorflow-gpu==1.14 keras==2.3.1 opencv-python==4.2.0 imagezmq numpy==1.18.2 flask==1.1.1 pillow\n    ```\n\n3.  **模型准备**\n    *   **Deep SORT 模型**: 仓库已包含预训练模型 `mars-small128.pb` (源自原始 Deep SORT 仓库，主要针对行人优化)。\n    *   **YOLO v4 模型**: \n        *   **方案 A (推荐)**: 自行使用 DETRAC 数据集训练车辆检测模型以获得最佳效果（脚本位于 `detrac_tools` 目录）。\n        *   **方案 B (快速开始)**: 下载预训练的 Darknet YOLO v4 权重，并使用 [keras-yolo4](https:\u002F\u002Fgithub.com\u002FMa-Dan\u002Fkeras-yolo4) 仓库中的 `convert.py` 转换为 Keras 格式。\n        *   *注意*: 若不针对交通数据微调，直接使用通用预训练模型可能导致车辆分类不准（如将掀背车误判为 SUV），但用于人数统计影响较小。\n\n## 基本使用\n\n本项目包含两个主要应用场景：**交通计数 (Traffic Counting)** 和 **通用目标计数 (Object Counting)**。\n\n### 1. 启动交通计数服务\n该模块专门用于统计通过特定线的车辆数量，支持方向判定和每小时记录。\n\n```bash\ncd traffic_counting\npython main.py\n```\n*功能特点*:\n*   基于轨迹与计数线的交点进行去重计数。\n*   支持低置信度过滤以降低误报。\n*   记录相交时间、坐标及角度。\n*   *局限*: 由于训练数据 (DETRAC) 仅包含中国交通场景且无摩托车数据，摩托车将被忽略，部分国外车型可能识别不准。\n\n### 2. 启动通用目标计数服务\n该模块用于统计视野内的当前目标数量（如房间内的人数），支持多房间监控。\n\n```bash\ncd object_counting\npython main.py\n```\n*功能特点*:\n*   实时显示视野内目标总数及各类别数量。\n*   跟踪功能可选。\n*   按小时区间记录当前存量数据。\n\n### 3. 使用智能手机作为 IP 摄像头\n利用 [ImageZMQ](https:\u002F\u002Fgithub.com\u002Fjeffbass\u002Fimagezmq) 将手机摄像头画面异步传输至服务器。\n\n*   **手机端**: 安装支持 ZMQ 推流的 App 或使用作者提供的脚本（参考作者博客关于使用手机推流的教程）。\n*   **服务端**: 确保 `main.py` 中配置了正确的 ZMQ 连接地址，即可接收多路手机视频流进行处理。\n\n### 4. 云端部署\n所有模块均可部署在云端服务器。启动后，通过 Flask 提供的 Web 接口访问视频流和统计数据。确保服务器防火墙开放相应端口。","某大型物流园区的安保团队需要实时统计进出闸口的货车流量，并监控仓储区的人员密度以优化调度。\n\n### 没有 Multi-Camera-Live-Object-Tracking 时\n- 依赖人工轮询多个监控屏幕进行计数，高峰期极易因视觉疲劳导致漏记或重复统计。\n- 无法区分同一车辆在不同摄像头的反复出现，导致跨镜头的流量数据严重失真。\n- 缺乏方向性识别能力，难以自动分辨车辆的“进入”与“离开”状态，需人工二次核对。\n- 历史数据仅能依靠人工填写表格，无法按小时自动生成分类报表，数据分析滞后。\n- 现有普通摄像头无法联动，若想增加覆盖范围需购买昂贵的专用智能分析硬件。\n\n### 使用 Multi-Camera-Live-Object-Tracking 后\n- 基于 YOLO v4 和 Deep SORT 算法自动完成多路视频流的实时检测与追踪，彻底消除人工计数误差。\n- 利用唯一追踪 ID 和交叉线计数逻辑，确保每辆车无论经过几个镜头只被统计一次，数据精准可靠。\n- 支持自定义角度配置方向计数，系统自动记录物体穿越的时间、坐标及角度，清晰区分进出流向。\n- 自动按小时间隔生成总数量及分类（如轿车、卡车）报表，并详细记录每次穿越的具体细节供追溯。\n- 可直接复用园区现有的普通 IP 摄像头甚至员工手机作为推流端，无需额外硬件投入即可部署上云。\n\nMulti-Camera-Live-Object-Tracking 将原本分散且低效的人工监控转变为自动化、可量化的智能数据流，显著提升了物流调度的响应速度与决策准确性。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FLeonLok_Multi-Camera-Live-Object-Tracking_1f08bcf6.png","LeonLok","Leon Lok","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002FLeonLok_a0a11895.jpg","Data Scientist",null,"Leeds","leonlokk","www.youtube.com\u002Fleonlokk","https:\u002F\u002Fgithub.com\u002FLeonLok",[85,89],{"name":86,"color":87,"percentage":88},"Python","#3572A5",99.2,{"name":90,"color":91,"percentage":92},"HTML","#e34c26",0.8,1093,292,"2026-04-02T08:40:06","GPL-3.0",4,"Linux, Windows","需要 NVIDIA GPU (测试使用 GTX 1070)，需安装 Tensorflow-GPU，具体 CUDA 版本未说明 (依赖 TF 1.14)","未说明",{"notes":102,"python":103,"dependencies":104},"项目提供 conda 环境配置文件 (environment.yml 用于 Linux\u002FMac, environment_windows.yml 用于 Windows)。作者测试硬件为 i7-8700K CPU 和 GTX 1070 GPU，在此配置下可运行两路约 10fps 的交通计数流。若不使用自定义训练的车辆模型，默认的人行追踪模型 (mars-small128.pb) 在车辆追踪任务上表现可能较差。模型训练涉及 Darknet 和 Keras 格式转换。","3.6",[105,106,107,108,109,110,111],"tensorflow-gpu==1.14","keras==2.3.1","opencv-python==4.2.0","imagezmq","numpy==1.18.2","flask==1.1.1","pillow",[15],[114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,108,132],"yolo","tracking","object-detection","object-tracking","people-counter","flask","deep-sort","opencv","livestream","real-time-analytics","yolov4","traffic","traffic-monitoring","traffic-counter","traffic-counting","yolov4-cloud","yolov4-deepsort","yolo-v4","camera-stream","2026-03-27T02:49:30.150509","2026-04-06T23:56:26.444349",[136,141,146,151,156,161],{"id":137,"question_zh":138,"answer_zh":139,"source_url":140},20374,"运行 camera_client.py 时出现 'AttributeError: NoneType object has no attribute flags' 错误怎么办？","该错误通常表示摄像头未成功发送图像帧（frame 为 None）。最常见的原因是 IP 摄像头设置了密码，但在配置路径时未包含凭据。请检查并修改摄像头路径格式，从 'http:\u002F\u002FIP:端口' 改为 'http:\u002F\u002F用户名:密码@IP:端口\u002F'。例如：将 'http:\u002F\u002F192.xxx.x.xx:xxxx' 修改为 'http:\u002F\u002Fadmin:123456@192.xxx.x.xx:xxxx\u002F'。","https:\u002F\u002Fgithub.com\u002FLeonLok\u002FMulti-Camera-Live-Object-Tracking\u002Fissues\u002F2",{"id":142,"question_zh":143,"answer_zh":144,"source_url":145},20375,"如何获取或替换项目中的摄像头流地址（RTSP\u002FHTTP）？","你需要将代码（如 camera_client_0.py）中的默认路径替换为你自己的摄像头地址。如果是网络摄像头，通常格式为 'rtsp:\u002F\u002F用户名:密码@IP 地址：端口\u002F流名称' 或 'http:\u002F\u002F用户名:密码@IP 地址：端口\u002F路径'。如果不确定地址，请查阅摄像头说明书或在局域网扫描工具中查找。确保替换后摄像头能正常推流。","https:\u002F\u002Fgithub.com\u002FLeonLok\u002FMulti-Camera-Live-Object-Tracking\u002Fissues\u002F8",{"id":147,"question_zh":148,"answer_zh":149,"source_url":150},20376,"程序运行成功但浏览器中不显示视频画面，可能是什么原因？","这通常是由于硬件资源不足导致的。日志中若出现 'Allocation of ... exceeds 10% of system memory' 警告，说明内存分配失败。解决方案是更换更高配置（特别是内存更大）的机器运行，或者尝试在 CPU 模式下运行（如果当前使用的是 GPU 且显存不足）。","https:\u002F\u002Fgithub.com\u002FLeonLok\u002FMulti-Camera-Live-Object-Tracking\u002Fissues\u002F9",{"id":152,"question_zh":153,"answer_zh":154,"source_url":155},20377,"遇到 'KeyError: (\"yolo\", \"1\")' 或 YOLO 流无法显示的问题如何解决？","此错误表明系统试图访问尚未生成的 YOLO 处理流。这通常发生在多摄像头配置中，当代码期望有多个输出但实际只初始化了一个时。维护者指出，每个摄像头输出会创建对应的 YOLO 流，需确保所有摄像头连接正常且代码逻辑已正确配置为多路输入。如果是单摄像头测试，请检查是否错误地请求了第二个流（索引为 1）。","https:\u002F\u002Fgithub.com\u002FLeonLok\u002FMulti-Camera-Live-Object-Tracking\u002Fissues\u002F3",{"id":157,"question_zh":158,"answer_zh":159,"source_url":160},20378,"没有网络摄像头或 IP 摄像头，如何使用本地视频文件进行测试？","需要修改代码以支持本地视频读取而非网络流。主要步骤包括：1. 移除 base_camera.py 中 server_thread 里的 ImageHub 相关代码；2. 修改 camera_server.py 中的循环逻辑，使其从本地文件路径读取视频帧；3. 不再需要 ImageZMQ 库和 camera_client 相关文件。由于涉及较多代码改动，建议参考社区讨论或直接修改基类逻辑以适应 cv2.VideoCapture(本地文件路径) 的方式。","https:\u002F\u002Fgithub.com\u002FLeonLok\u002FMulti-Camera-Live-Object-Tracking\u002Fissues\u002F7",{"id":162,"question_zh":163,"answer_zh":164,"source_url":160},20379,"修改代码使用本地视频后，摄像头流正常但 YOLO 检测流仍不显示怎么办？","即使摄像头流（原始视频）能显示，YOLO 流不显示通常意味着视频帧未能正确传递给 YOLO 处理线程。请检查修改后的代码中，读取本地视频的帧是否正确赋值给了基类的 frame 字典，且键名（如 ('yolo', '0')）与前端请求的键名一致。确保在读取视频帧后，调用了 YOLO 推理函数并将结果存入对应的流缓冲区。",[]]