笔记教程,方便自己回忆,纯小白,目前啥也不懂,只知道步骤
系统:Ubuntu 18.04
1、准备工作
1.1、克隆项目
- 为了防止文件夹混乱,自己在主目录下
cd ~
创建一个文件夹mkdir YOLOv3
,专门用于存放关于YOLOv3的一些工作。 - 进入YOLOv3
cd YOLOv3
- 克隆
git clone https://github.com/eriklindernoren/PyTorch-YOLOv3
1.2、安装模块
- 创建虚拟环境
conda create -n yolov3-pytorch python=3.6
,之前安装的虚拟环境python版本为3.8,这个版本的python安装的tensorflow版本为2.0+,高版本的tensorflow对此版本到yolov3有许多不适配的地方,所以最好安装3.6版本到python. - 激活虚拟环境并进入
conda activate yolov3-pytorch
- 通过项目下面的 requirements.txt 安装项目需要的模块
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt
,如果设置过了pip源,就直接使用pip3 install -r requirements.txt -i
,否则下载速度会很慢。
pip国内的一些镜像:
- 阿里云 http://mirrors.aliyun.com/pypi/simple/
- 中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/
- 豆瓣(douban) http://pypi.douban.com/simple/
- 清华大学 https://pypi.tuna.tsinghua.edu.cn/simple/
- 中国科学技术大学 http://pypi.mirrors.ustc.edu.cn/simple/
1.3、下载预训练权重
- 进入项目目录下,进入权重文件夹
cd weights/
- 下载
bash download_weights.sh
。下载慢的话,可以直接将下面的链接通过迅雷下载或者IDM下载下来。
1.4、下载coco数据集
cd ..
cd data/
bash get_coco_dataset.sh
2、测试
- 进入test.py同级目录下
- 在COCO测试中评估模型
python3 test.py --weights_path weights/yolov3.weights
3、预测
- 进入detect.py同级目录下
- 使用预训练的权重对图像进行预测
python3 detect.py --image_folder data/samples/
- 输出结果可以在output看到
4、训练
train.py [-h] [--epochs EPOCHS] [--batch_size BATCH_SIZE]
[--gradient_accumulations GRADIENT_ACCUMULATIONS]
[--model_def MODEL_DEF] [--data_config DATA_CONFIG]
[--pretrained_weights PRETRAINED_WEIGHTS] [--n_cpu N_CPU]
[--img_size IMG_SIZE]
[--checkpoint_interval CHECKPOINT_INTERVAL]
[--evaluation_interval EVALUATION_INTERVAL]
[--compute_map COMPUTE_MAP]
[--multiscale_training MULTISCALE_TRAINING]
- 要使用在ImageNet上预训练的Darknet-53在COCO上进行训练,请运行(根据自己需求更改):
python3 train.py --data_config config/coco.data --pretrained_weights weights/darknet53.conv.74
4.1、遇到的问题
UserWarning: indexing with dtype torch.uint8 is now deprecated, please use a dtype torch.bool instead.
- 找到model.py
- 添加如下标记的两行代码
obj_mask = obj_mask.bool() # convert int8 to bool
noobj_mask = noobj_mask.bool() # convert int8 to bool
RuntimeError: CUDA out of memory. Tried to allocate 32.00 MiB (GPU 0; 7.79 GiB total capacity; 6.61 GiB already allocated; 29.38 MiB free; 94.51 MiB cached)
- 显存溢出,可更据电脑配置调整batch_size大小,默认为8,如下
parser.add_argument("--epochs", type=int, default=100, help="number of epochs")
parser.add_argument("--batch_size", type=int, default=8, help="size of each image batch")
parser.add_argument("--gradient_accumu