yolov3-docker复现
一、docker环境搭建
二、yolov3复现
这张图片就是本博客的主要内容
一、docker环境的复现
1.了解docker 如果读者为docker新手,或者跟我一样一知半解的话,建议百度搜索:docker-从入门到实践,这个文档对初学者帮助很大。
2.由于每个人机型不一样,所以关于docker安装我这里就不再叙述了,上述给的文档说的非常详细,如果还是不会的话,可以私信我,就是我也不一定能解决的说。
3.这里从docker pull开始进行详细介绍:
1)docker pull 的格式如下 :docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签]
2) 看不懂也没关系,这个地方给对应的例子: Eg: docker pull 192.163.101.180:5020/nvidia/pytorch:21.03
3)pytorch:21.03版本根据复现code环境来,ip也是根据自己环境来,我是因为前面有大佬建好网站了所以用这个ip,具体ip解释可以看刚刚说的docker文档。博主是因为需要复现https://github.com/ultralytics/yolov3,需要python3.8,所以选21.03 具体版本可以根据https://ngc.nvidia.com选择
4.docker pull 之后就可以run相应的docker了,docker run 这个地方也分为三步解释:
1)一般来说,我们运行一个docker只需要docker run -it --rm 192.168.101.180:5000/nvidia/pytorch:17.10 bash 就可以了,具体的参数在一开始提到的文档【从入门到实践】都有介绍
2)但是这样得到的docker是孤立的 ,而我们复现code都是需要数据集的,所以这个地方我们需要把本地文件与docker进行绑定装载 ,所以需要使用docker -v这种命令,需要注意的是,这种方法最好在一开始就把你想绑定的文件夹一次性敲定,至少我暂时没有找到中途加入的方法
3)最后整个命令如下:
docker run --gpus all --ipc=host -it
-v /rdata/datasets/COCO:/coco \
-v /data2/yourdate:/docker_data \ (-v可以多次使用 把你想映射的文件都映射过去就行)
–name jingxiang(镜像名称 给自己看的 非必要)
-h mynet(网络 给自己看的 非必要)
192.128.101.180:5200/nvidia/pytorch:21.03 bash
5.docker run 之后的故事;
1)如果你刚刚没有退出,你就可以愉快的玩耍了 如果需要使用apt-get 记得对他进行更新apt update。
2)如果刚刚退出了,docker stop了 你可以使用docker start id ,如果docker本身没有stop,那可以使用docker attach id 或者 docker exec -it id 【具体百度就知道了】如果使用vscode进行远程连接的可以使用右键直接进入
二、yolov3复现
这个地方我复现的是上面这个网络,一开始说了,python是3.8版本的,所以docker环境记得选对,本博客复现的网址为https://github.com/ultralytics/yolov3
1、环境配置
1)clone code: git clone git://github.com/ultralytics/yolov3.git
2)pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
3)一般来说 cv2会报错 ImportError: libGL.so.1: cannot open shared object file: No such file or directory 这个时候其实就是新容器缺少依赖 apt install libgl1-mesa-glx 就可以了。大家具体可以看https://felaim.blog.csdn.net/article/details/108726908这位大佬的博客,一看她博客就很有意思 哈哈哈
2、coco数据集摆放
1)先看官方提示 https://github.com/ultralytics/yolov3/wiki/Train-Custom-Data
2)大概知道数据集的摆放之后,需要注意以下几点:
(1)coco数据集下面一定要有images&labels文件,images下包括train2017&val2017,lables下也是如此,并且与images一一对应,这个地方大家可以找json转txt或者json转voc再转txt的code,这里不是我不乐意分享,是因为我找的code会缺失部分图片【没有对象的image不转化了】
( 2)coco.yaml数据集的文件路径记得改,这个path指的是train.txt&val.txt[相应数据集所有图片的位置] 代码如下:
# encoding : utf-8
import os
file_path = 'coco图片路径eg:/coco/images/train2017'
path_list = os.listdir(file_path)
path_name =[]
for i in path_list:
path_name.append(i)
print(path_name)
with open('train.txt','w') as file:
for file_name in path_name:
file.write(file_path+file_name+'\n')
file.close()
3.数据集也整好了之后,就可以开始训练了,不想用wandb也可以把他关了:https://blog.csdn.net/qq_38495194/article/details/114671925
4.最后 跑起来:
CUDA_VISIBLE_DEVICES=4 python train.py --data coco.yaml --cfg yolov3.yaml --batch-size 16 --cache-images
博主是2080的卡,嫌弃–img-size 640 有点慢,就改为320了,主要想先看看效果,batchsize 啥的大家根据自己卡的情况决定。 吼 终于结束了 中间有些地方让大家跳转到其他大佬的博客对不住,但是吃水不忘挖井人 嗯 希望bug少一些