神经网络-分类(识别骨折图像)

一、环境介绍

  • 系统:win10
  • 语言:python3.7
  • 框架:pytorch

二、功能说明

现有骨折数据集,分为骨折和正常两类。需要训练神经网络使其识别这两类图片(二分类),两种类型的数据分别如下:

0_enhance

0_enhance_0

第一张为骨折图像,第二张为正常图片,图片的大小为112*112

对,功能就是这么简单。

三、实现步骤

3.1 找车轮

自己造轮子是不可能的,这辈子都不会的!!

在github上面找一个基于pytorch的图像分类网络,里面包含现在比较主流的分类网络。

pytorch_image_classification

这里面有以下几种网络可供选择:

1580982930465

功能全面,就用这个轮子。

3.2 分析车轮

经过一番debug跟踪之后,发现了轮子一些不足的地方:

  • 配置比较分散:数据集、网络和数据增强不是在同一个地方配置的。
  • 没有自定义数据集,换句话说,不能训练自己的数据。(这里需要改)

3.3 改造轮子

3.3.1 配置分散

分散就分散吧,能用就好,不改。

3.3.2 添加自定义数据集

train.py文件中,添加CUSTOM类型。

1
2
3
4
5
parser.add_argument(
'--dataset',
type=str,
default='CUSTOM',
choices=['CIFAR10', 'CIFAR100', 'MNIST', 'FashionMNIST', 'KMNIST', 'CUSTOM'])

argparser.py中的_cleanup_args函数的最下面添加:

1
2
3
elif args.dataset == 'CUSTOM':
args.input_shape = (1, 3, 112, 112) # 图片尺寸,根据实际图片尺寸来
args.n_classes = 2 # 图片类型

dataloader.py中,emmm,这里面动的比较多,直接全贴进来吧

dataloader

3.4 启动车子

把数据放到data文件夹下面,train表示训练集,val表示验证集。bad和good是两个分类(不同类用不同的文件夹装起来就好)

1580983915473

再修改一下config文件里面的学习率和bachsize就好!!

启动训练:

1
python train.py --arch resnet_preact --depth 56 --outdir results

四、结果

二分类还是比较简单,10个epoch就可以达到99.9%的正确率。使用的数据集有1000多张bad图片,200多张good图片。

1580984214850

修改后的完整代码,且带有数据集

-------------本文结束感谢您的阅读-------------
0%