一 maskrcnn---tensorflow环境配置(若没有gpu,仅看 一,若需要配置gpu ,在完成一的基础上,配置二。)
1. 下载anaconda 及 pycharm
2. 在anaconda中创建python3.6虚拟环境
conda create -n Tensorflow_envs python=3.6
查看环境:conda info --envs
进入环境:activate envs_name
退出环境:deactivate
3. 创建包
----tensorflow 1.11(1.13应该行)
----keras 2.1.6
在安装keras2.0.8版本时,会出现下列错误,epoch一直挂在1处,不报错,一直运行的状态
----h5py 2.10.0
----opencv 4.5.3.56
如果出现cv2的某些函数无法读取的情况,原因可能是由于opencv库函数的版本导致的
使用终端安装依赖包时,可能会出现如下图所示的错误,其原因是,更新包的时候没有关闭pycharm
4. 配置数据集
使用labelme进行标注后,所得到的时.json文件,这时需要使用labelme_json_to_dataset.exe(在安装的labelme文件夹下的一个文件)可执行文件对得到的json文件进行转换,正确的结果应该是得到五个文件,而labelme版本更新以后,只能得到四个文件,如下图所示,主要原因是labelme新版本的labelme_json_to_dataset.py文件和老版本比缺失了部分代码。
这时我们需要对labelme_json_to_dataset.py源码进行修改,将labelme3.2版本的labelme_json_to_dataset.py源文件后部分复制粘贴到新版本对应的源文件,并在新版本文件中导入import yaml,然后保存。
然后成功得到info.yaml文件
通过labelme_json_to_dataset.exe,每次只能转变一个json文件,可以通过一个批处理文件一次生成(或者自己写一个代码,也可以在网上收一下,网上有很多)
进一步将批处理后的文件整理成下面四个文件,pic文件放置我们拍摄的原图,labelme_json文件存放的是上一步通过通过labelme_json_to_dataset.exe转换后的文件,json文件是通过labelme标注后得到的文件,cv2_mask文件存放的是我们标注的mask图像
5. 源代码修改
这里如果没有指定的话,会报如下所示的错误
IndexError: boolean index did not match indexed array along dimension 0; dimension is 0 but corresponding boolean dimension is 1
本人自己做的时候,报了上述错误,修改完之后呢,部分数据可以训练,但是有部分图片呢,报错误说没有找到cv2_mask/图片的名字,后面发现是有部分图片属性里面有_json,这几个字母,把它删除后,就可以正常训练了
4.指定好路径
dataset_root_path="mydata/"(存放打包好了的训练数据的根目录)
img_floder = dataset_root_path + "pic"
mask_floder = dataset_root_path + "cv2_mask"
imglist = os.listdir(img_floder)
count = len(imglist)
5.DETECTION_MIN_CONFIDENCE 指定的稍微小一点可以得到更多结果
运行结果如下图所示
二、配置2080GPU(2080-3090都可),详细步骤请看我的另一篇文章
http://t.csdn.cn/ui67n
注:步骤一配置的是tensorflow1.x版本,步骤二配置的是tensorflow2.x版本(如果显卡支持cuda10.0的话,相同的步骤,可以配置tensorflow1.x版本,但2080显卡支持的cuda11.5,因此在这里配置的tensorflow2.x版本),如果想用2080配置的tensorflow训练tensorflow1.x框架的maskrcnn,需要在github上下载maskrcnn_tf2源码,将mrcnn文件和tensorflow1.x里的maskrcnn文件替换,替换后可能会出现某些错误,详情请看另一篇文章
http://t.csdn.cn/ISo1m