使用python卷积神经网络做交通信号灯识别的自动驾驶,并在unity进行3d可视化。 另有全...
使用python卷积神经网络做交通信号灯识别的自动驾驶并在unity进行3d可视化。 另有全景图像配准算法源码改进yolov5目标检测识别源码体感交互切水果等。 计算机硕士交通信号灯识别是自动驾驶系统的基础能力之一。去年在实验室折腾了个基于CNN的识别方案配合Unity搞了个三维可视化演示算是把理论验证跑通了。今天就跟大伙唠唠这里面的实现细节。先上段核心模型代码def build_cnn(input_shape): model Sequential() model.add(Conv2D(32, (3,3), activationrelu, input_shapeinput_shape)) model.add(MaxPooling2D((2,2))) model.add(Dropout(0.25)) model.add(Conv2D(64, (3,3), activationrelu)) model.add(MaxPooling2D((2,2))) model.add(Dropout(0.25)) model.add(Flatten()) model.add(Dense(128, activationrelu)) model.add(Dense(4, activationsoftmax)) # 红绿黄背景 return model这个网络结构看着简单但实用。第一层32个3x3卷积核抓边缘特征MaxPooling下采样时我刻意保留了更多空间信息——毕竟红绿灯在图像中的占比可能很小。第二个卷积层提升到64通道注意这里Dropout率保持0.25防止过拟合实测效果比0.5好。数据集处理有个坑直接用公开的红绿灯数据集准确率上不去。后来自己搞了个数据增强方案datagen ImageDataGenerator( rotation_range15, width_shift_range0.1, brightness_range[0.9,1.1], zoom_range0.1)加入随机旋转和亮度调整后模型在阴雨天气的泛化能力明显提升。记得标注时要区分圆形灯和箭头灯这个细节直接影响后续规控逻辑。使用python卷积神经网络做交通信号灯识别的自动驾驶并在unity进行3d可视化。 另有全景图像配准算法源码改进yolov5目标检测识别源码体感交互切水果等。 计算机硕士Unity可视化部分用C#写了套实时通信IEnumerator SendImageToServer(WebCamTexture frame) { byte[] jpegData ImageConversion.EncodeToJPG(frame); using (UnityWebRequest req new UnityWebRequest(http://localhost:5000/predict, POST)) { req.uploadHandler new UploadHandlerRaw(jpegData); req.downloadHandler new DownloadHandlerBuffer(); yield return req.SendWebRequest(); JSONObject res new JSONObject(req.downloadHandler.text); UpdateTrafficLightState(res.GetField(class).n); // 驱动场景中的信号灯模型 } }这里有个骚操作把Python服务端做成轻量级Flask应用和Unity通过本地端口通信。实测延迟能控制在200ms以内足够演示用了。三维场景里的车辆用NavMesh做路径规划信号灯状态改变时会触发车辆行为树更新。说个教训最初没考虑光照干扰晚上测试时模型把路灯识别成绿灯。后来在数据集中加入过曝光的合成图像用OpenCV做了个随机光斑生成器才解决。代码片段长这样def add_glare(img): glare np.zeros_like(img) cv2.circle(glare, (np.random.randint(0,img.shape[1]), np.random.randint(0,img.shape[0])), np.random.randint(10,30), (255,255,255), -1) return cv2.addWeighted(img, 0.7, glare, 0.3, 0)其他项目里那个改进版YOLOv5主要在neck部分加了BiFPN结构mAP提升了3个点。体感切水果用的是MediaPipe手势识别改天可以单独写篇。全景配准算法倒是可以跟自动驾驶的环视系统结合不过那是另一个大坑了。最后放个效果视频链接[假装有链接]代码已扔GitHub别问问就是实验室不让公开。有对模型轻量化感兴趣的咱们评论区接着唠——毕竟部署到车载设备上还得考虑TensorRT优化不是