pytorch-YOLOv3移植到寒武纪
参考
新建docker
-
裸机也可以哈,但是实验室的服务器不太好乱搞,就用了docker -
#!/bin/bash
export MY_CONTAINER="darknet2caffe"
num=`sudo docker ps -a|grep "$MY_CONTAINER"|wc -l`
echo $num
echo $MY_CONTAINER
if [ 0 -eq $num ]; then
sudo docker run --gpus all \
--ipc=host \
-it \
--privileged \
--name $MY_CONTAINER \
-v $PWD/caffe-env:/home/caffe-env \
-w /home/caffe-env \
4d1a8aaef572 \
/bin/bash
echo $MY_CONTAINER
else
sudo docker start $MY_CONTAINER
sudo docker exec -w /home/R2CNN -ti $MY_CONTAINER /bin/bash
fi
-
主体逻辑其实十分简单,查看有没有容器名相同的容器,有的话直接start&exec,没有就run一个,并制定映射目录和工作目录 -
4d1a8aaef572是我自己保存的caffe镜像,并没有上传,cuda11的话可以用这个代替:0ec3cd91fe0b,纯净的cuda11,然后看一下基于Docker的Caffe编译(CUDA11的makefile版)配置
make caffe
-
我直接复制了一份基于Docker的Caffe编译(CUDA11的makefile版)配置好的caffe来make,省去了很多配置的时间,大概指令就是: -
make all
make runtest
make pycaffe
-
如果遇到ImportError: No module named caffe 的话,可能是没有指定caffe的地址
export PYTHONPATH=/your-caffe-root/caffe/python:$PYTHONPATH
caffe扩展
pip install torch
- 由于是py2,因此从官方镜像园中找一个适合py27的torch.whl直接本地pip即可
- torchvision的话等待pytorch安装完成之后再直接
pip install torchvision 即可安装兼容的版本 - 可能会遇到:
ImportError:No module named builtins ,这时候pip install future 即可
转换结果修改
-
在寒武纪中的caffe的配置方式有稍许不同 -
layer {
bottom: "layer70-conv"
top: "layer71-upsample"
name: "layer71-upsample"
type: "Upsample"
upsample_param {
scale: 2
}
}
layer {
bottom: "layer70-conv"
top: "layer71-upsample"
name: "layer71-upsample"
type: "Interp"
interp_param {
height: 50
width: 50
}
}
-
由于转换得来的prototxt没有yolo层,于是在inference中得自己做后处理,由于我的模型是剪枝过的模型,layer层数与一般的YOLO不同,这里是写死的,于是需要对应改一下层名,以及anchor大小
-
如此依赖便算是配置好了,运行./inference.sh 应该就可以成功了
|