赞
踩
其实关于Kafka,能问的问题实在是太多了,扒了几天,最终筛选出44问:基础篇17问、进阶篇15问、高级篇12问,个个直戳痛点,不知道如果你不着急看答案,又能答出几个呢?
若是对Kafka的知识还回忆不起来,不妨先看我手绘的知识总结脑图(xmind不能上传,文章里用的是图片版)进行整体架构的梳理
梳理了知识,刷完了面试,如若你还想进一步的深入学习解读kafka以及源码,那么接下来的这份《手写“kafka”》将会是个不错的选择。
Kafka入门
为什么选择Kafka
Kafka的安装、管理和配置
Kafka的集群
第一个Kafka程序
Kafka的生产者
Kafka的消费者
深入理解Kafka
可靠的数据传递
Spring和Kafka的整合
SpringBoot和Kafka的整合
Kafka实战之削峰填谷
数据管道和流式处理(了解即可)
②视频展示
# 利用PaddleDetection部署自己的轻量级移动检测嵌入式平台(多种高性能网络模型)–Pytorch实现
2.背景
PaddleDetection 是百度飞桨推出的物体检测统一框架。支持现有的RCNN、SSD、YOLO等系列模型、支持 ResNet、ResNet-VD、ResNeXt、ResNeXt-VD、SENet、MobileNet、DarkNet等主干网络。针对不同的业务场景(性能、目标大小、准确率等)可以选择框架中的不同模块组合得到最适合的模型,实现任务。相比于tensorflow的Object_Detection,优势之一就是将YOLOv3这一目标检测的快速算法融合到了框架下。
地址:飞桨PaddlePaddle-源于产业实践的开源深度学习平台
3.安装PaddlePaddle
pip install git+https://github.com/philferriere/cocoapi.git#subdirectory=PythonAPI
或者通过Github地址:
4.预训练模型的下载
PaddleDetection提供的非常丰富的预训练库,各种经典检测、分割、识别、追踪等任务的优秀框架模型供我们选择:
YOLOv3 on COCO:
| 骨架网络 | 输入尺寸 | 每张GPU图片个数 | 学习率策略 | 推理时间(fps) | Box AP | 下载 | 配置文件 |
| — | — | — | — | — | — | — | — |
| DarkNet53(paper) | 608 | 8 | 270e | ---- | 33.0 | - | - |
| DarkNet53(paper) | 416 | 8 | 270e | ---- | 31.0 | - | - |
| DarkNet53(paper) | 320 | 8 | 270e | ---- | 28.2 | - | - |
| DarkNet53 | 608 | 8 | 270e | ---- | 39.0 | 下载链接 | 配置文件 |
| DarkNet53 | 416 | 8 | 270e | ---- | 37.5 | 下载链接 | 配置文件 |
| DarkNet53 | 320 | 8 | 270e | ---- | 34.6 | 下载链接 | 配置文件 |
| ResNet50_vd | 608 | 8 | 270e | ---- | 39.1 | 下载链接 | 配置文件 |
| ResNet50_vd | 416 | 8 | 270e | ---- | 36.6 | 下载链接 | 配置文件 |
| ResNet50_vd | 320 | 8 | 270e | ---- | 33.6 | 下载链接 | 配置文件 |
| ResNet34 | 608 | 8 | 270e | ---- | 36.2 | 下载链接 | 配置文件 |
| ResNet34 | 416 | 8 | 270e | ---- | 34.3 | 下载链接 | 配置文件 |
| ResNet34 | 320 | 8 | 270e | ---- | 31.2 | 下载链接 | 配置文件 |
| MobileNet-V1 | 608 | 8 | 270e | ---- | 29.4 | 下载链接 | 配置文件 |
| MobileNet-V1 | 416 | 8 | 270e | ---- | 29.3 | 下载链接 | 配置文件 |
| MobileNet-V1 | 320 | 8 | 270e | ---- | 27.2 | 下载链接 | 配置文件 |
| MobileNet-V3 | 608 | 8 | 270e | ---- | 31.4 | 下载链接 | 配置文件 |
| MobileNet-V3 | 416 | 8 | 270e | ---- | 29.6 | 下载链接 | 配置文件 |
| MobileNet-V3 | 320 | 8 | 270e | ---- | 27.1 | 下载链接 | 配置文件 |
| MobileNet-V1-SSLD | 608 | 8 | 270e | ---- | 31.0 | 下载链接 | 配置文件 |
| MobileNet-V1-SSLD | 416 | 8 | 270e | ---- | 30.6 | 下载链接 | 配置文件 |
| MobileNet-V1-SSLD | 320 | 8 | 270e | ---- | 28.4 | 下载链接 | 配置文件 |
YOLOv3 on Pasacl VOC:
| 骨架网络 | 输入尺寸 | 每张GPU图片个数 | 学习率策略 | 推理时间(fps) | Box AP | 下载 | 配置文件 |
| — | — | — | — | — | — | — | — |
| MobileNet-V1 | 608 | 8 | 270e | - | 75.2 | 下载链接 | 配置文件 |
| MobileNet-V1 | 416 | 8 | 270e | - | 76.2 | 下载链接 | 配置文件 |
| MobileNet-V1 | 320 | 8 | 270e | - | 74.3 | 下载链接 | 配置文件 |
| MobileNet-V3 | 608 | 8 | 270e | - | 79.6 | 下载链接 | 配置文件 |
| MobileNet-V3 | 416 | 8 | 270e | - | 78.6 | 下载链接 | 配置文件 |
| MobileNet-V3 | 320 | 8 | 270e | - | 76.4 | 下载链接 | 配置文件 |
| MobileNet-V1-SSLD | 608 | 8 | 270e | - | 78.3 | 下载链接 | 配置文件 |
| MobileNet-V1-SSLD | 416 | 8 | 270e | - | 79.6 | 下载链接 | 配置文件 |
| MobileNet-V1-SSLD | 320 | 8 | 270e | - | 77.3 | 下载链接 | 配置文件 |
| MobileNet-V3-SSLD | 608 | 8 | 270e | - | 80.4 | 下载链接 | 配置文件 |
| MobileNet-V3-SSLD | 416 | 8 | 270e | - | 79.2 | 下载链接 | 配置文件 |
| MobileNet-V3-SSLD | 320 | 8 | 270e | - | 77.3 | 下载链接 | 配置文件 |
注意: YOLOv3均使用8GPU训练,训练270个epoch。由于动态图框架整体升级,以下几个PaddleDetection发布的权重模型评估时需要添加–bias字段, 例如:
CUDA_VISIBLE_DEVICES=0 python tools/eval.py -c configs/ppyolo/yolov3_darknet53_270e_coco.yml -o weights=https://paddledet.bj.bcebos.com/models/yolov3_darknet53_270e_coco.pdparams --bias
5.模型导出(python端)
第三步骤中得到训练权重模型后,接下来进行python端的模型导出。
代码如下:
python tools/export_model.py -c configs/yolov3/yolov3_darknet53_270e_coco.yml --output_dir=./inference_model \
-o weights=weights/yolov3_darknet53_270e_coco.pdparams
配置说明:
导出成功后会出现如下几个文件:
或者其他:
我自己用的:yolov3_darknet53_270e_coco
python tools/export_model.py -c configs/yolov3/yolov3_darknet53_270e_coco.yml --output_dir=./inference_model -o weights=weights/yolov3_darknet53_270e_coco.pdparams TestReader.inputs_def.image_shape=[3,640,640]
我自己用的:cascade_rcnn_dcn_x101_vd_64x4d_fpn_1x_coco
python tools/export_model.py -c configs/dcn/cascade_rcnn_dcn_x101_vd_64x4d_fpn_1x_coco.yml --output_dir=./inference_model -o weights=weights/cascade_rcnn_dcn_x101_vd_64x4d_fpn_1x_coco.pdparams
6.模型预测
支持很多种方法的预测,包括:单张图片、文件夹下图片、单个视频、文件夹下视频、实时调用摄像头等。
参数配置如下:
| FLAG | 支持脚本 | 用途 | 默认值 | 备注 |
| — | — | — | — | — |
| -c | ALL | 指定配置文件 | None | 必选,例如-c configs/faster_rcnn/faster_rcnn_r50_fpn_1x_coco.yml |
| -o | ALL | 设置或更改配置文件里的参数内容 | None | 相较于-c
设置的配置文件有更高优先级,例如:-o use_gpu=False
|
| --eval | train | 是否边训练边测试 | False | 如需指定,直接--eval
即可 |
| -r/–resume_checkpoint | train | 恢复训练加载的权重路径 | None | 例如:-r output/faster_rcnn_r50_1x_coco/10000
|
1、看视频进行系统学习
这几年的Crud经历,让我明白自己真的算是菜鸡中的战斗机,也正因为Crud,导致自己技术比较零散,也不够深入不够系统,所以重新进行学习是很有必要的。我差的是系统知识,差的结构框架和思路,所以通过视频来学习,效果更好,也更全面。关于视频学习,个人可以推荐去B站进行学习,B站上有很多学习视频,唯一的缺点就是免费的容易过时。
另外,我自己也珍藏了好几套视频资料躺在网盘里,有需要的我也可以分享给你:
2、读源码,看实战笔记,学习大神思路
“编程语言是程序员的表达的方式,而架构是程序员对世界的认知”。所以,程序员要想快速认知并学习架构,读源码是必不可少的。阅读源码,是解决问题 + 理解事物,更重要的:看到源码背后的想法;程序员说:读万行源码,行万种实践。
Spring源码深度解析:
Mybatis 3源码深度解析:
Redis学习笔记:
Spring Boot核心技术-笔记:
3、面试前夕,刷题冲刺
面试的前一周时间内,就可以开始刷题冲刺了。请记住,刷题的时候,技术的优先,算法的看些基本的,比如排序等即可,而智力题,除非是校招,否则一般不怎么会问。
关于面试刷题,我个人也准备了一套系统的面试题,帮助你举一反三:
只有技术过硬,在哪儿都不愁就业,“万般带不去,唯有业随身”学习本来就不是在课堂那几年说了算,而是在人生的旅途中不间断的事情。
人生短暂,别稀里糊涂的活一辈子,不要将就。
举一反三:
[外链图片转存中…(img-QYc7WkWW-1715504575921)]
只有技术过硬,在哪儿都不愁就业,“万般带不去,唯有业随身”学习本来就不是在课堂那几年说了算,而是在人生的旅途中不间断的事情。
人生短暂,别稀里糊涂的活一辈子,不要将就。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。