docker
# 将镜像转为容器
docker run --name ubuntu-20.04 -it --network host --env="DISPLAY" --gpus all -e NVIDIA_DRIVER_CAPABILITIES=all --privileged --runtime=nvidia -v /home/$USER/share:/share noetic:latest /bin/bash
docker run -it --name ros-noetic --network host --env="DISPLAY" --gpus all -e NVIDIA_DRIVER_CAPABILITIES=all --privileged --runtime=nvidia -v /home/$USER/Desktop/workspace/:/workspace ros-noetic-autocar:latest /bin/bash
docker run -it \
--network host \
--env="DISPLAY" \
--gpus all \
-e NVIDIA_DRIVER_CAPABILITIES=all \
--privileged \
--runtime=nvidia \
-v /home/$USER/workspace:/workspace \
humble-autoware:awsim-stable \
/bin/bash
# 启动镜像
sudo docker exec -it amazing_margulis /bin/bash
# 查看容器列表
docker ps -a
# 将容器转为镜像
docker commit 21c8dbd2bf13 lst-bev:v1.0
# 保存镜像
docker save -o first-bev.tar first-bev:v1.0
# 显示不出图像
sudo xhost +
cuda
根据nvidia-smi信息所支持GPU版本要<= 下载 相应文件
# 执行下载好的文件
sudo sh cuda_11.6.2_510.47.03_linux.run
# 配置环境
sudo vim ~/.bashrc
# 在文件末尾添加
export CUDA_HOME=/usr/local/cuda-11.6
export PATH=$PATH:/usr/local/cuda-11.6/lib64
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-11.6/lib64
# 更新系统环境
source ~/.bashrc
sudo ldconfig
# 验证CUDA是否安装成功
nvcc -V
cudnn
根据已安装的CUDA版本 下载 相应文件
# 8.2.1版本.tgz
tar -xf cudnn-11.3-linux-x64-v8.2.1.32.tgz
# 8.6.0版本.tar.xz
tar -xf cudnn-linux-x86_64-8.6.0.163_cuda11-archive.tar.xz
# 解压后得到的文件,拷贝到/usr/local/cuda-11.3/中
cp cuda/lib64/* /usr/local/cuda-11.3/lib64/
cp cuda/include/* /usr/local/cuda-11.3/include/
# 查看cudnn版本
cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2
cat /usr/local/cuda-11.3/include/cudnn_version.h | grep CUDNN_MAJOR -A 2
# 上面2句结果都一样,证明cudnn复制成功,并生效
TensoRT
根据已安装的CUDA版本 下载 相应文件
# c++ 解压就能用
tar -xf TensorRT-8.6.1.6.Linux.x86_64-gnu.cuda-11.8.tar.gz
# python版本的tensorrt安装,根据python版本选择,这里是python3.8
# 进入解压后的tensorRT/python目录
cd TensorRT-8.6.1.6/python
# 虚拟环境中安装python3.8版本
pip install tensorrt-8.6.1.6-cp38-none-linux_x86_64.whl
# 自此,c++版本和python版本的tensorRT已经安装完成。
bev
https://zhuanlan.zhihu.com/p/658363330
https://blog.youkuaiyun.com/h904798869/article/details/133279972
https://blog.youkuaiyun.com/h904798869/article/details/134886204
https://github.com/linClubs/BEVDet-ROS-TensorRT
conda
# 下载完后,先加权限,再运行安装包
# 安装一直yes就行,安装路径可以自己设定, 不懂就直接默认即可
chmod +x Miniconda3-latest-Linux-x86_64.sh
sudo ./Miniconda3-latest-Linux-x86_64.sh
# conda初始化设置
cd Miniconda3
./bin/conda init
# conda和pip换源
# conda换源,终端中依次执行5句代码就ok
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/linux-64/
conda config --set show_channel_urls yes
# pip换源
1、创建一个~/.pip/pip.conf文件,然后将下面的源地址添加进去
# 创建~/.pip/pip.conf文件
mkdir ~/.pip && vim ~/.pip/pip.conf
2、源地址。把下面代码粘贴进~/.pip/pip.conf即可
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple/
error : installing the package 'python3-empy'
原因是系统使用了Anaconda的python环境,但是在conda中没有找到python3-empy包,直接使用conda install python3-empy会报错,找不到安装包。
因为python3-empy在附加包中所以应使用命令conda install -c conda-forge empy
error : ImportError: "from catkin_pkg.package import parse_package" failed: No module named 'catkin_pkg'
Make sure that you have installed "catkin_pkg", it is up to date and on the PYTHONPATH.
应使用命令conda install -c conda-forge catkin_make
conda
#查看安装了那些包
conda list
#查看当前存在哪些虚拟环境
conda env list
conda info -e
#检查更新当前conda
conda update conda
#创建虚拟环境 - 可以在Anaconda安装目录envs文件下找到
conda create -n env_name python=x.x
#对虚拟环境中安装额外的包
conda install -n env_name [package]
#关闭虚拟环境
deactivate env_name
#进入虚拟环境
conda activate env_name
#删除虚拟环境
conda remove -n env_name --all
#删除环境中某个包
conda remove --name env_name package_name
工具
sudo apt install zeal
sudo apt install gimp
sudo apt install flameshot
sudo apt install kolourpaint4
# 数据结构
├── img
│ ├── m1.png
│ ├── m1.txt
│ ├── m2.png
│ ├── m2.txt
│ ├── m3.png
│ ├── m3.txt
│ ├── m4.png
│ ├── m4.txt
│ ├── m5.png
│ ├── m5.txt
│ ├── m6.png
│ ├── m6.txt
│ ├── t7.png
│ ├── t7.txt
│ ├── t8.png
│ ├── t8.txt
│ ├── t9.png
│ └── t9.txt
├── obj.data
├── obj.names
├── test.txt
└── train.txt
# 数据集准备
obj.data
- classes = 1 # 改为自己的分类个数
- train = train.txt # 改为自己训练集的路径文件
- vaild = test.txt # 改为自己测试集的路径文件
- names = obj.names # 分类名文件
- backup = backup/ # 存放训练权值的文件夹路径
obj.names
- person
test.txt
- /workspace/Yolo_mark-master/x64/Release/data/img/t7.png
- /workspace/Yolo_mark-master/x64/Release/data/img/t8.png
- /workspace/Yolo_mark-master/x64/Release/data/img/t9.png
train.txt
- /workspace/Yolo_mark-master/x64/Release/data/img/m1.png
- /workspace/Yolo_mark-master/x64/Release/data/img/m2.png
- /workspace/Yolo_mark-master/x64/Release/data/img/m3.png
- /workspace/Yolo_mark-master/x64/Release/data/img/m4.png
- /workspace/Yolo_mark-master/x64/Release/data/img/m5.png
- /workspace/Yolo_mark-master/x64/Release/data/img/m6.png
# cfg配置
修改 1:
[net]
# 测试 - 注释训练
batch=1
subdivisions=1
# 训练 - 注释测试
# batch=32
# subdivisions=16
修改 2:
filters=18 # 修改为 3 * (classes + 5)
activation=linear
[yolo]
mask = 6,7,8
anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326
classes=1 # 修改为实际数量
# 共有三处相同方式修改即可!!!
修改 3:
max_batches的值不能低于60000,一般情况为(classes*2000+200)
steps的值为max_batches的0.8倍和0.9倍
# 打开本地摄像头进行检测
./darknet detector demo cfg/coco.data cfg/yolov3.cfg weights/yolov3.weights
# 检测图片中的物体
./darknet detect cfg/yolov3.cfg weights/yolov3.weights data/dog.jpg
./darknet detector test ../../../Yolo_mark-master/x64/Release/data/obj.data cfg/yolov3-voc.cfg backups/yolov3-voc_900.weights ../../../yolo_map/t8.png
# 检测视频中的物体
./darknet detector demo ../../../Yolo_mark-master/x64/Release/data/obj.data cfg/yolov3-voc.cfg backups/yolov3-voc_final.weights /workspace/parking.mp4 -thresh 0.2
# 使用opencv单独打开图片
./darknet imtest data/eagle.jpg
# 训练(需要修改cfg)
./darknet detector train cfg/voc.data cfg/yolov3-voc.cfg weights/darknet53.conv.74
./darknet detector train ../../../Yolo_mark-master/x64/Release/data/obj.data cfg/yolov3-voc.cfg weights/darknet53.conv.74
# 检测(需要修改cfg)
./darknet detector demo cfg/voc.data cfg/yolov3-voc.cfg backup/yolov3-voc_final.weights