python图像缺陷识别算法_基于MASK RCNN算法实现瑕疵图像识别(准备环境)

目前图像识别领域,两步法最炙手可热的图像处理模型就是Mask RCNN了,应用该模型可以在较为广泛的工业领域实现图像化检测。近期我们实现了该模型在金属加工产品线上的质量检测识别,取得了较好的效果。

Github原代码地址:

注意该原代码没有预训练的模型,如果需要的话,预训练模型在这里:

关于该代码部署的环境:经过实际应用发现,如果没有GPU、或者其他高性能服务器的话,至少也要达到如下标准:CentOS 7 建议安装 anacoda环境,便于管理。64G内存,64 core vCPU,硬盘空间不能太小,因为每轮Epoch训练都会产生新的模型,单个模型大小256M左右,多轮调试、训练会占用大量硬盘空间。

下面先说总体步骤:

打开冰箱,放入大象,关上冰箱 。。。

正确的步骤是 :

1 调试并修改代码;2 制作训练、测试、验证数据集;3 开始训练,4 检验模型,5 应用模型。

一步一步说

先说环境,如果你要在自己的笔记本上跑跑代码,看看效果,反而麻烦一些。主要在于里面的pycocotools是需要VC2005的,安装起来很麻烦。如果是在服务器,linux下安装反而没有什么问题。按照代码说明的那些包是不太够的。

我的安装环境如下:Python3.5 tensorflow1.14

_libgcc_mutex 0.1 main

absl-py                  0.8.1                    pypi_0    pypi

alabaster                0.7.12                  pypi_0    pypi

astor                    0.8.0                    pypi_0    pypi

attrs                    19.3.0                  pypi_0    pypi

babel                    2.7.0                    pypi_0    pypi

backcall                  0.1.0                    pypi_0    pypi

bleach                    3.1.0                    pypi_0    pypi

ca-certificates          2019.10.16                    0

certifi                  2018.8.24                py35_1

chardet                  3.0.4                    pypi_0    pypi

cycler                    0.10.0                  pypi_0    pypi

cython                    0.29.13                  pypi_0    pypi

decorator                4.4.1                    pypi_0    pypi

defusedxml                0.6.0                    pypi_0    pypi

docutils                  0.15.2                  pypi_0    pypi

entrypoints              0.3                      pypi_0    pypi

gast                      0.3.2                    pypi_0    pypi

google-pasta              0.1.7                    pypi_0    pypi

grpcio                    1.24.3                  pypi_0    pypi

h5py                      2.10.0                  pypi_0    pypi

idna                      2.8                      pypi_0    pypi

imageio                  2.6.1                    pypi_0    pypi

imagesize                1.1.0                    pypi_0    pypi

imgaug                    0.3.0                    pypi_0    pypi

importlib-metadata        0.23                    pypi_0    pypi

ipykernel                5.1.3                    pypi_0    pypi

ipyparallel              6.2.4                    pypi_0    pypi

ipython                  7.9.0                    pypi_0    pypi

ipython-genutils          0.2.0                    pypi_0    pypi

ipywidgets                7.5.1                    pypi_0    pypi

jedi                      0.15.1                  pypi_0    pypi

jinja2                    2.10.3                  pypi_0    pypi

jsonschema                3.1.1                    pypi_0    pypi

jupyter-client            5.3.4                    pypi_0    pypi

jupyter-core              4.6.1                    pypi_0    pypi

jupyter-tensorboard      0.1.10                  pypi_0    pypi

keras                    2.2.2                    pypi_0    pypi

keras-applications        1.0.4                    pypi_0    pypi

keras-preprocessing      1.0.2                    pypi_0    pypi

kiwisolver                1.1.0                    pypi_0    pypi

libedit                  3.1.20181209        hc058e9b_0

libffi                    3.2.1                hd88cf55_4

libgcc-ng                9.1.0                hdf63c60_0

libstdcxx-ng              9.1.0                hdf63c60_0

markdown                  3.1.1                    pypi_0    pypi

markupsafe                1.1.1                    pypi_0    pypi

matplotlib                3.0.3                    pypi_0    pypi

mistune                  0.8.4                    pypi_0    pypi

more-itertools            7.2.0                    pypi_0    pypi

nbconvert                5.6.1                    pypi_0    pypi

nbformat                  4.4.0                    pypi_0    pypi

ncurses                  6.1                  he6710b0_1

networkx                  2.4                      pypi_0    pypi

nose                      1.3.7                    pypi_0    pypi

notebook                  6.0.1                    pypi_0    pypi

numpy                    1.17.3                  pypi_0    pypi

opencv-python            4.1.1.26                pypi_0    pypi

opencv-python-headless    4.1.1.26                pypi_0    pypi

openssl                  1.0.2t              h7b6447c_1

packaging                19.2                    pypi_0    pypi

pandocfilters            1.4.2                    pypi_0    pypi

parso                    0.5.1                    pypi_0    pypi

pexpect                  4.7.0                    pypi_0    pypi

pickleshare              0.7.5                    pypi_0    pypi

pillow                    6.2.1                    pypi_0    pypi

pip                      19.3.1                  pypi_0    pypi

prometheus-client        0.7.1                    pypi_0    pypi

prompt-toolkit            2.0.10                  pypi_0    pypi

protobuf                  3.10.0                  pypi_0    pypi

ptyprocess                0.6.0                    pypi_0    pypi

pycocotools              2.0.0                    pypi_0    pypi

pygments                  2.4.2                    pypi_0    pypi

pyparsing                2.4.2                    pypi_0    pypi

pyrsistent                0.15.5                  pypi_0    pypi

python                    3.5.6                hc3d631a_0

python-dateutil          2.8.0                    pypi_0    pypi

pytz                      2019.3                  pypi_0    pypi

pywavelets                1.1.1                    pypi_0    pypi

pyyaml                    5.1.2                    pypi_0    pypi

pyzmq                    18.1.0                  pypi_0    pypi

qtconsole                4.5.5                    pypi_0    pypi

readline                  7.0                  h7b6447c_5

requests                  2.22.0                  pypi_0    pypi

scikit-image              0.15.0                  pypi_0    pypi

scipy                    1.3.1                    pypi_0    pypi

send2trash                1.5.0                    pypi_0    pypi

setuptools                40.2.0                  py35_0

shapely                  1.6.4.post2              pypi_0    pypi

six                      1.12.0                  pypi_0    pypi

snowballstemmer          2.0.0                    pypi_0    pypi

sphinx                    2.2.1                    pypi_0    pypi

sphinxcontrib-applehelp  1.0.1                    pypi_0    pypi

sphinxcontrib-devhelp    1.0.1                    pypi_0    pypi

sphinxcontrib-htmlhelp    1.0.2                    pypi_0    pypi

sphinxcontrib-jsmath      1.0.1                    pypi_0    pypi

sphinxcontrib-qthelp      1.0.2                    pypi_0    pypi

sphinxcontrib-serializinghtml 1.1.3                    pypi_0    pypi

sqlite                    3.30.1              h7b6447c_0

tensorboard              1.14.0                  pypi_0    pypi

tensorflow                1.14.0                  pypi_0    pypi

tensorflow-estimator      1.14.0                  pypi_0    pypi

termcolor                1.1.0                    pypi_0    pypi

terminado                0.8.2                    pypi_0    pypi

testpath                  0.4.2                    pypi_0    pypi

tk                        8.6.8                hbc83047_0

tornado                  6.0.3                    pypi_0    pypi

traitlets                4.3.3                    pypi_0    pypi

urllib3                  1.25.6                  pypi_0    pypi

wcwidth                  0.1.7                    pypi_0    pypi

webencodings              0.5.1                    pypi_0    pypi

werkzeug                  0.16.0                  pypi_0    pypi

wheel                    0.31.1                  py35_0

widgetsnbextension        3.5.1                    pypi_0    pypi

wrapt                    1.11.2                  pypi_0    pypi

xz                        5.2.4                h14c3975_4

zipp                      0.6.0                    pypi_0    pypi

zlib                      1.2.11              h7b6447c_3

顺便说一下:为了后期的评估方便,我同时开启了服务器端jupyter和基于jupyter的tensorboard。实现方法就不赘述了,网上一搜一大把。建议大家也要开启,方便模型后期的调试和评估。另外虽然装了anacoda,但是装包的时候能用pip就用pip,混装会出现很多莫名其妙的冲突,教训深刻。

装好了之后,可以登陆jupyter notebook上看看demo,如果能跑完到演示图片识别,说明程序已经没问题,可以开始改了!

原代码是在高性能、多gpu设备上实现的,我没有那些好设备,所以必须修改,关键调整是

如果没有GPU,必须要将该参数改为1,即使拥有GPU,增加IMAGES_PER_GPU数值也要小心,很容易在训练模型的时候跑死机或者程序闪退。

看注释就明白原作者还是很土豪的。

接下来就是理解原代码的结构并且改造属于自己的模型了。

核心代码放到mrcnn文件夹里,其实也就用这里面即可。samples文件夹里的例子可以作为自己代码修改的基础和参考,也很有用

简单的说config.py主要进行基础参数的定义,如果你选择了 from mrcnn.config import Config,然后在自己的class中集成绝大部分的config定义,那么一定要看看这里的设置是不是真的属于你需要的。上述的 IMAGES_PER_GPU,还有NUM_CLASSES  STEPS_PER_EPOCH 等等,都要注意匹配。

model.py是这个算法的精髓部分,基于tensorflow和keras实现训练和识别,算法理解将在后面详述。

utils.py实现了图像的准确评估,比如mAP IOU的计算等等,非常方便。

visualize.py 实现了图像的检测的可视化展现,也是非常有效的工具。

parallel_model.py 多GPU专用(土豪专用)它把模型做多个copy到每一个GPU里,然后把输入数据也切片到每一个模型copy里,当然最终输出会重新合并,并且基于合并后的输出给出loss值。

你可能感兴趣的:(python图像缺陷识别算法)