欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 文化 > 行业人工智能研究-Python自监督方式学习图像表示算法

行业人工智能研究-Python自监督方式学习图像表示算法

2024/11/30 8:57:56 来源:https://blog.csdn.net/jiyotin/article/details/142424003  浏览:    关键词:行业人工智能研究-Python自监督方式学习图像表示算法

学术界人工智能研究落后于工业界

摘要

  • 行业或工业界在人工智能研究上超出学术界,并占据着大量的计算力,数据集和人才
  • 诱人的薪水和明朗的预期吸引大量人才离开学术界,涌入行业或工业界
  • 即使,比如Meta开源其人工智能模型,众多学者或专家仍然无法对其核心部分一探究竟。
  • 行业或工业界和学术界需要互惠互利,因为学术界从事底层基础理论研究,行业界在此基础上开始研发顶尖技术。
  • 中国,美国和德国都在加速人工智能研究。

各国AI研究

在这里插入图片描述

行业人工智能研究

摘要

  • 自监督方式学习图像表示算法应用于图像分割网络语义分割
  • 随机配置网络算法
  • 炉温预测模型
  • 非侵入式负载监控算法模型
  • 时间序列处理随机配置网络算法

Python自监督方式学习图像表示算法

图像视觉转换

import math
import numpy as np
import torch
import torch.nn as nn
import fastcore.all as fc
from PIL import Image
from functools import partial
from torchvision.transforms import RandomResizedCrop, RandomHorizontalFlip, Compose, ToTensor, ToPILImage

让我们创建一个大小为 224x224 且补丁大小为 16 的图像

img_size = 224
patch_size = 32

加载数据

imgs = fc.L(fc.Path("coco/val2017/").glob("*.jpg"))
imgs #(#5000) [Path('coco/val2017/000000182611.jpg'),Path('coco/val2017/000000335177.jpg'),Path('coco/val2017/000000278705.jpg'),Path('coco/val2017/000000463618.jpg'),Path('coco/val2017/000000568981.jpg'),Path('coco/val2017/000000092416.jpg'),Path('coco/val2017/000000173830.jpg'),Path('coco/val2017/000000476215.jpg'),Path('coco/val2017/000000479126.jpg'),Path('coco/val2017/000000570664.jpg')...]

转换

def transforms(img_size):return Compose([RandomResizedCrop(size=img_size, scale=[0.4, 1], ratio=[0.75, 1.33], interpolation=2), RandomHorizontalFlip(p=0.5), ToTensor()])def load_img(img_loc, transforms):img = Image.open(img_loc)return transforms(img)load_img = partial(load_img, transforms=transforms(img_size=img_size))
img = load_img(imgs[1])
img.shape #torch.Size([3, 224, 224])

创建图像补丁

imgp = img.unfold(1, patch_size, patch_size).unfold(2, patch_size, patch_size).permute((0, 3, 4, 1, 2)).flatten(3).permute((3, 0, 1, 2))
imgp.shape #torch.Size([49, 3, 32, 32])
fig, ax = plt.subplots(figsize=(4, 4), nrows=7, ncols=7)
for n, i in enumerate(imgp):ax.flat[n].imshow(ToPILImage()(i))ax.flat[n].axis("off")
plt.show()

创建屏蔽标记

tokens = imgp.shape[0]
mask_ratio = 0.75
mask_count = int(tokens* mask_ratio)
tokens, mask_count #(49, 36)
mask_idx = torch.randperm(tokens)[:mask_count]
mask = torch.zeros(tokens).long()
mask[mask_idx] = 1
mask
#tensor([1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1,
#        0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1,
#        0])
fig, ax = plt.subplots(figsize=(4, 4), nrows=7, ncols=7)
for n, i in enumerate(imgp):if mask[n] == 1:i = torch.zeros(3, 32, 32)ax.flat[n].imshow(ToPILImage()(i))ax.flat[n].axis("off")
plt.show()

为每个非屏蔽标记创建嵌入向量。

input_tokens = imgp[~mask.bool(), ...].flatten(1)
input_tokens.shape 
imgp[~mask.bool(), ...].shape 

👉更新:亚图跨际