一、安装
# 创建环境名为mmdet
conda create -n mmdet python=3.7
# 激活环境mmdet
conda activate mmdet
# 安装pytorch1.6
# 安装torchvision0.7.0
# 安装cuda,此处注意cuda版本要对应上或电脑已经安装了更高的版本,cuda版本向下兼容,电脑安装最新的cuda并把驱动升级到最新。
conda install pytorch==1.6.0 torchvision==0.7.0 cudatoolkit=10.2 -c pytorch
# 安装对应版本的mmcv-full,这个是官方已经给编译过的,安装时注意版本与上一步相同。cu102为cudatoolkit10.2,torch1.6.0为pytorch1.6.0。对应不上安装时看不出来,用的时候必报错,而且找不到原因。而且这是官方编译好的,意味着不能瞎改pytorch版本。
pip install mmcv-full==1.4.6 -f https://download.openmmlab.com/mmcv/dist/cu102/torch1.6.0/index.html
# 安装mmdet,安装检测模块的需要的包
pip install mmdet
# 安装mmrotate,安装旋转检测模块需要的包,这个不用mmrotate可不安
pip install mmrotate
# 也可以用另一种方法安装mmrotate
git clone https://github.com/open-mmlab/mmrotate.git
cd mmrotate
pip install -r requirements/build.txt
pip install -v -e .
1.报错不要慌,领悟每个命令行作用的同时,看看版本对没对上,csdn好多博文版本没对上或者用mim安装导致各种报错。
2.安装失败,这只是一种可能,看看是否安装了VS2019 C++buildtool,因为之前安装pycocotool的时候因为没安装这个工具导致安装不上。安装这个工具即使不需要,也没有任何害处,可能将来会用到。
二、demo演示文件测试效果
进入image_demo.py文件,读一读。
# ....
def parse_args():
parser = ArgumentParser()
parser.add_argument('img', help='Image file')
parser.add_argument('config', help='Config file')
parser.add_argument('checkpoint', help='Checkpoint file')
# ....
稍加修改,让配置参数时,更加规整而且配置时一一对应,更加严谨。
# ....
def parse_args():
parser = ArgumentParser()
parser.add_argument('--img', help='Image file')
parser.add_argument('--config', help='Config file')
parser.add_argument('--checkpoint', help='Checkpoint file')
# ....
pycharm中配置参数:1.图片路径2.模型路径3.权重路径;此处的模型与权重最好时完全对应上。
--img
D:\\Project\\mmdetection-master\\demo\\demo.jpg
--config
D:\\Project\\mmdetection-master\\configs\\faster_rcnn\\faster_rcnn_r50_fpn_1x_coco.py
--checkpoint
D:\\Project\\mmdetection-master\\faster_rcnn_r50_fpn_1x_coco_20200130-047c8118.pth
报个小错,无伤大雅。小小警告,一般都是告诉我xx已经淘汰了;被xx替代了;建议替换等等。
结果出来了,意味着你的环境配置已经问题不大了,后面如果缺组件,在现在的环境内pip install xxx即可。
三、简单的口罩检测——训练自己的数据集
1.首先准备好数据集——一些未标注的图片
2.用labelme标注软件进行标注
labelme安装很简单,在本环境安装就行。
# 安装pyqt5
pip install pyqt5
# 安装labelme
pip install labelme
# 运行labelme
labelme
标注过程过于简单,不赘述。注意:
(1)不要乱改标注后的json文件名,要一一对应。
(2)矩形框标注从左上到右下符合图片坐标的规定。
3.json to coco,格式转换。
运行一下脚本,注意输入文件位置与输出文件位置。
import os
import json
import numpy as np
import glob
import shutil
import cv2
from sklearn.model_selection import train_test_split
np.random.seed(41)
classname_to_id = {
"mask": 0, #改成自己的类别
"person": 1
}
class Lableme2CoCo:
def __init__(self):
self.images = []
se