当前位置:   article > 正文

anomalib实战学习记录:安装及训练官方数据_anomalib训练自己的数据集

anomalib训练自己的数据集

源码下载地址:GitHub - openvinotoolkit/anomalib: An anomaly detection library comprising state-of-the-art algorithms and features such as experiment management, hyper-parameter optimization, and edge inference.icon-default.png?t=N7T8https://github.com/openvinotoolkit/anomalib

我下载的版本是:anomalib-1.1.0

操作系统是:win11

代码的结构为:新版本的anomalib没有单独的train.py文件了,后面需要自己新建train.py文件,或者用命令行进行训练。

一、安装

1、需要通过conda新建一个python=3.10的虚拟环境:

conda create -n anomalib_env python=3.10

2、激活环境:

conda activate anomalib_env

3、通过下载源码进行安装:

  1. git clone https://github.com/openvinotoolkit/anomalib.git
  2. cd anomalib
  3. pip install -e .

4、安装anomalib需要的相关库

  1. anomalib install -h
  2. anomalib install
  3. anomalib install -v
  4. anomalib install --option core
  5. anomalib install --option openvino

后面三个的命令我没有截图,依次安装即可。

二、训练

我是使用pycharm进行训练的。使用pycharm打开源码,新建train.py文件。train.py内容如下(来自官网):

  1. # Import the required modules
  2. from anomalib.data import MVTec
  3. from anomalib.models import Patchcore
  4. from anomalib.engine import Engine
  5. # Initialize the datamodule, model and engine
  6. datamodule = MVTec()
  7. model = Patchcore()
  8. engine = Engine()
  9. # Train the model
  10. engine.train(datamodule=datamodule, model=model)

开始训练即可。刚开始训练的时候,会下载MVTec数据集,可能会下载不下来,可以在报错信息里面复制下载链接,自行下载,下载好了之后,放在对应的文件夹中。

我在训练的过程中,报错如下:

参考:解决RuntimeError: An attempt has been made to start a new process before...办法 - 知乎 (zhihu.com)icon-default.png?t=N7T8https://zhuanlan.zhihu.com/p/553407062

 修改train.py:

  1. datamodule = MVTec()
  2. # 修改为:
  3. datamodule = MVTec(num_workers=0)

然后就可以训练了。

三、推理

  1. predictions = engine.predict(
  2. datamodule=datamodule,
  3. model=model,
  4. ckpt_path="model.ckpt", #修改成自己训练生成的model.ckpt文件路径
  5. )

训练的时候,会生成一个results文件夹,model.ckpt文件就在results文件夹里面。推理的代码可以直接放在train.py文件的最下面,即engine.train(datamodule=datamodule, model=model)后面。

 四、数据集的划分

官方教程:

Custom Data — Anomalib 2022 documentationicon-default.png?t=N7T8https://anomalib.readthedocs.io/en/latest/markdown/guides/how_to/data/custom_data.html通过官网给的链接,下载hazelnut_toy数据集放在datasets文件夹里面:

 可以重新建一个train_toy.py

内容如下:

  1. from anomalib.models import Patchcore
  2. from anomalib.engine import Engine
  3. from anomalib.data import Folder
  4. # Create the datamodule
  5. datamodule = Folder(
  6. name="hazelnut_toy",
  7. root="datasets/hazelnut_toy",
  8. normal_dir="good",
  9. abnormal_dir="colour",
  10. task="classification",
  11. num_workers=0,
  12. image_size=[256,256],
  13. val_split_ratio=0.5,
  14. )
  15. # Setup the datamodule
  16. datamodule.setup()
  17. i, train_data = next(enumerate(datamodule.train_dataloader()))
  18. print(train_data.keys())
  19. i, val_data = next(enumerate(datamodule.val_dataloader()))
  20. print(val_data.keys())
  21. i, test_data = next(enumerate(datamodule.test_dataloader()))
  22. print(test_data.keys())
  23. model = Patchcore()
  24. engine = Engine(task="classification")
  25. engine.train(datamodule=datamodule, model=model)

推理的代码为:

  1. predictions = engine.predict(
  2. datamodule=datamodule,
  3. model=model,
  4. ckpt_path="model.ckpt", # 存放model.ckpt文件的路径,需要对应修改
  5. )

结果如下:

五、onnx模型导出

新建export.py文件,内容如下:

  1. from anomalib.models import Patchcore
  2. from anomalib.engine import Engine
  3. model = Patchcore()
  4. engine = Engine(task="classification")
  5. onnx_model = engine.export(
  6. model= model,
  7. export_type='onnx',
  8. export_root=None,
  9. input_size=[256, 256],
  10. transform=None,
  11. compression_type=None,
  12. datamodule = None,
  13. metric = None,
  14. ov_args = None,
  15. ckpt_path='model.ckpt', # 存放model.ckpt文件的路径,需要对应修改
  16. )
  17. print(onnx_model)

可以导出onnx模型,具体细节可以研究一下engine.py文件里面的export部分,有比较详细的说明。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/1011715
推荐阅读
  

闽ICP备14008679号