TenFlow 训练一个神经网络并在转换TFlite在树莓派上部署

TenFlow 训练一个神经网络并在转换TFlite在树莓派上部署

废话不多说直接开讲,第一次写文章。不仔细的地方多多包涵。

0.Anaconda+python虚拟环境

如果你需要用到tensorflow了那我相信你一定会用Anaconda,Anaconda的安装不再赘述。只是提个醒,如果你第一次用conda create -n创建环境那么路径一定在C盘,而换默认路径一定是可以设置的,这里也不再展开
创建TensorFlow环境:(tf是环境名字,尽量取短点吧,要不然以后手都输麻)

# 创建虚拟环境
conda create -n tensorflow2_8 pip python=3.8 

1.安装CUDA以及cudnn

在训练神经网络前你需要一块英伟达显卡,例如我的电脑 戴尔笔记本G5 5587 搭配一块1050Ti显卡。本教程以此环境来讲解。
查看当显卡驱动CUDA版本 ,找到NVIDIA控制面板->帮助->系统信息->组件看一下CUDA版本,我的12.2是目前最新的,一般向下兼容;
在这里插入图片描述
作为最高效的安装方法,接下来的每一个下载都只在终端里完成
首先在Tensorflow官网里看一眼

2.安装Tensorflow2.8 GPU版本

(1).接下来就进入刚才创建好的环境,在官网找到2.8对应的 cudatoolkit版本cudnn版本

# 进入虚拟环境
conda activate tensorflow2_8   
# 安装 cudatoolkit
conda install cudatoolkit=11.2.0 
 # 安装 cudnn
conda install cudnn=8.1.0.77

(2)把百度云里面的文件放到磁盘的主界面。这里我放到了F盘下
在这里插入图片描述
(3)继续输入以下命令安装好编译器编译文件

 # 安装pyyaml 5.3 版本
pip install pyyaml==5.3   
# 安装编译器
conda install -c anaconda protobuf
# 然后你应该cd到TensorFlow\models\research目录
cd models\research
# 然后编译原型
protoc object_detection\protos\*.proto --python_out=.
# 在 TensorFlow 2 中,pycocotools 是对象检测 API 的依赖项。要使用 Windows 支持进行安装,请使用
pip install cython
pip install git+https://github.com/philferriere/cocoapi.git#subdirectory=PythonAPI
# 进入到这个目录
cd F:\Tensorflow\models\research
# 拷贝文件
copy object_detection\packages\tf2\setup.py 
# 执行安装命令
python -m pip install .	
# 在安装tensorflow-gpu 2.8.0
pip install tensorflow-gpu==2.8.0

3.验证当前

如果有任何错误,请报告问题,但它们很可能是 pycotools 问题,这意味着您的安装不正确。但是,如果一切按计划进行,您可以使用

python object_detection\builders\model_builder_tf2_test.py      # 运行model_builder_tf2_test 

如果环境安装成功会输出一下信息

[       OK ] ModelBuilderTF2Test.test_create_ssd_models_from_config
[ RUN      ] ModelBuilderTF2Test.test_invalid_faster_rcnn_batchnorm_update
[       OK ] ModelBuilderTF2Test.test_invalid_faster_rcnn_batchnorm_update
[ RUN      ] ModelBuilderTF2Test.test_invalid_first_stage_nms_iou_threshold
[       OK ] ModelBuilderTF2Test.test_invalid_first_stage_nms_iou_threshold
[ RUN      ] ModelBuilderTF2Test.test_invalid_model_config_proto
[       OK ] ModelBuilderTF2Test.test_invalid_model_config_proto
[ RUN      ] ModelBuilderTF2Test.test_invalid_second_stage_batch_size
[       OK ] ModelBuilderTF2Test.test_invalid_second_stage_batch_size
[ RUN      ] ModelBuilderTF2Test.test_session
[  SKIPPED ] ModelBuilderTF2Test.test_session
[ RUN      ] ModelBuilderTF2Test.test_unknown_faster_rcnn_feature_extractor
[       OK ] ModelBuilderTF2Test.test_unknown_faster_rcnn_feature_extractor
[ RUN      ] ModelBuilderTF2Test.test_unknown_meta_architecture
[       OK ] ModelBuilderTF2Test.test_unknown_meta_architecture
[ RUN      ] ModelBuilderTF2Test.test_unknown_ssd_feature_extractor
[       OK ] ModelBuilderTF2Test.test_unknown_ssd_feature_extractor
----------------------------------------------------------------------
Ran 20 tests in 45.304s

OK (skipped=1)

如果有需要资料包,请私信我。后面会陆续写如何采集数据集,数据标注,和部署的。

### LiteFlowNet3 使用教程 #### 安装配置 为了安装配置 LiteFlowNet3,可以按照以下方法操作: 通过 Git 将项目克隆到本地环境中[^4]: ```bash git clone https://github.com/sniklaus/pytorch-liteflownet.git cd pytorch-liteflownet ``` 确保环境中有 Python 和 PyTorch 的支持。对于特定版本依赖项的要求,请参阅官方文档或仓库中的 `README.md` 文件。 #### 示例代码 下面是一个简单的例子来展示如何加载模型对两张图片计算光流[^5]: ```python import torch from networks import NetworkLiteFlownet as Network def estimate(tensorFirst, tensorSecond): objectFrom = { "intWidth": 768, "intHeight": 512, "strModel": 'liteflownet3' } netNetwork = None if netNetwork is None: netNetwork = Network().cuda().eval() intWidth = objectFrom["intWidth"] intHeight = objectFrom["intHeight"] tenPreprocessedFirst = torch.FloatTensor(torch.ByteTensor(tensorFirst).view(1, 3, intHeight, intWidth)).cuda() / 255.0 tenPreprocessedSecond = torch.FloatTensor(torch.ByteTensor(tensorSecond).view(1, 3, intHeight, intWidth)).cuda() / 255.0 intArgmentation = 0 tenFlow = torch.nn.functional.interpolate(input=netNetwork(tenPreprocessedFirst, tenPreprocessedSecond), size=(objectFrom["intHeight"], objectFrom["intWidth"]), mode='bilinear', align_corners=False) return tenFlow[0] tensorImageFirst = torch.load('path_to_first_image.pt') tensorImageSecond = torch.load('path_to_second_image.pt') tenOutput = estimate(tensorImageFirst, tensorImageSecond) print(tenOutput) ``` 此段代码展示了怎样初始化网络以及处理输入图像数据以获得它们之间的光流动向图。注意这里假设已经准备好了两个张量形式的第一帧和第二帧图像文件(`*.pt`)作为测试样本。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值