如何用PyTorch训练图像分类器

2024-01-26 16:13:00
aiadmin
原创
1125

假设你方才入手运用PyTorch并思研习怎样举行根本的图像分类,那么你能够参考本教程。它将先容怎样结构教练数据,运用预教练神经收集教练模子,然后预测其他图像。

为此,我将运用由Google舆图中的舆图图块构成的数据集,并遵照它们包蕴的地形特点对它们举行分类。我会正在另一篇著作中先容怎样运用它(简而言之:为了识别无人机升起或降下的安闲区域)。不过现正在,我只思运用极少教练数据来对这些舆图图块举行分类。

下面的代码片断来自Jupyter Notebook。你能够将它们拼接正在沿途以修筑己方的Python剧本,或从GitHub下载。这些Notebook是基于Udacity的PyTorch课程的。假设你运用云端虚拟机举行深度研习开拓而且不知晓怎样长途掀开notebook,请查看我的教程。

PyTorch生机数据按文献夹结构,每个类对应一个文献夹。大大都其他的PyTorch教程和示例都生机你先遵循教练集和验证集来结构文献夹,然后正在教练集和验证聚积再遵循种别举行结构。但我以为这很是困难,务必从每个种别被选择必然数目的图像并将它们从教练集文献夹转移到验证集文献夹。因为大大都人会通过采用一组连接的文献行动验证集,于是采用能够存正在许众缺点。

于是,这儿有一个将数据集迅疾分为教练集和测试集的更好的措施,就像Python开拓职员习性运用sklearn相通。起首,让咱们导入模块:

接下来咱们将确定是否有GPU。我假设你有一台GPU机械,不然代码将起码慢10倍。不过,查验GPU可用性是个好方针。

打印模子将显示ResNet模子的图层编制构造。这能够逾越了我的认识或你的判辨,但看到那些深层障翳层内的东西依旧很趣味。

这取决于你采用什么样的模子,遵照你的特天命据集模子能够会分别。这里列出了一共的PyTorch模子。

现正在咱们进入深度神经收集的趣味个人。起首,咱们务必冻结预教练过的层,于是正在教练时候它们不会举行反向散播。然后,咱们从头界说末了的全连结层,即运用咱们的图像来教练的图层。咱们还创筑了圭臬(耗损函数)并采用了一个优化器(正在这种状况下为Adam)和研习率。

现正在已毕了,让咱们教练模子吧!正在这个例子中惟有一个epoch,但正在大大都状况下你需求更众。从代码中能够看出根本经过很是直观:加载批量图像并践诺前向散播轮回。然后推算耗损函数,并运用优化器正在反向散播中行使梯度低落。

PyTorch就这么简陋。下面的大大都代码是每10个批次显示耗损并推算切实切度,以是你正在教练运转时取得更新。正在验证时候,不要忘掉将模子设立为eval()形式,然后正在已毕后返回train()。

守候几分钟后(或更长时刻后,取决于数据集的巨细和期间数目),已毕教练并存储模子以供往后预测!

如你所睹,正在我的一个epoch的特定规子中,验证耗损(这是咱们感兴致的)正在第一个epoch终结时的平缓线条乃至入手有上升趋向,以是能够1个epoch就足够了。正如预期的那样,教练耗损很是低。

现正在进入第二个人。你教练模子,存储模子,并需求正在行使措施中运用它。为此,你需求也许对图像践诺简陋推理。你也能够正在咱们的存储库中找到此演示notebook。咱们导入与教练条记本中相通的模块,然后再次界说变换(transforms)。我只是再次声明图像文献夹,以是我能够运用那里的极少例子:

以下是Google舆图图块上此类预测的一个示例。标签是预测的类,我也正在显示它是否是确切的预测。

这即是它。延续实验数据集。只消你确切结构图像,此代码应当按原样运转。很疾我就会有更众合于神经收集和PyTorch能够做的很酷的著作。

Chris Fotache是位于 New Jersey的CYNET.ai的人工智能研商员。他涵盖了与生存中的人工智能,Python编程,机械研习,推算机视觉,自然发言措置等联系的核心。雷锋网雷锋网雷锋网

联系我们
联系人: 王先生
电话: 15640228768
微信: 1735252255
地址: 沈阳市铁西区兴华南街58-6号