От разработки программного обеспечения до инженеров ИИ: обучение модели

искусственный интеллект

предисловие

Популярная корейская дорама "Королевство" в апреле, интересно, смотрели ли вы ее? Я не досмотрел серию. Когда принц Юань-цзы родился, это было во время хаоса зомби в утробе матери, и Юань-цзы тоже был укушен.Однако, поскольку нейроны в мозгу еще не сформировались, паразиты не могут контролировать нейроны, поэтому девушка-врач сделала простое лечение и решили, что это не повлияет на мозг. Здесь упоминается нейрон головного мозга человека, который также является источником исследований нейронных сетей ИИ, и поговорим о нем подробнее.

Всего в мозгу человека 86 миллиардов нейронов, в том числе 16 миллиардов нейронов в коре головного мозга. Количество нейронов в коре головного мозга определяет уровень интеллекта животных.Количество нейронов в коре головного мозга человека намного выше, чем у других видов, поэтому люди умнее других видов. В мозгу слона всего 257 миллиардов нейронов, но 98% нейронов находятся в мозжечке слона, а в коре головного мозга слона всего 5,6 миллиарда нейронов, что не идет ни в какое сравнение с человеческим. Чем больше нейронов в коре головного мозга, тем больше расход энергии. Энергия, потребляемая человеческим мозгом каждый день, составляет 25% от общего потребления энергии человеческим организмом, именно поэтому нам приходится есть несколько раз в день, и легко проголодаться. Причина, по которой люди могут быстро превзойти другие виды, заключается главным образом в том, что люди освоили методы приготовления пищи и могут потреблять большое количество калорий за короткий период времени для поддержания работы мозга, в то время как другие виды используют потребляемые калории для поддержания работы. тела Количество нейронов в коре головного мозга.

Причина, по которой я сначала рассказываю о принципе работы нейронов мозга, заключается в том, чтобы подчеркнуть суть этой статьи — современные технологии искусственного интеллекта.Прежде чем официально войти в технологию ИИ, позвольте мне рассказать о работе инженера-программиста, потому что есть много инженеров-программистов, которые готовы перейти в индустрию ИИ.

программист

Я инженер-программист.Когда я закончил учебу в 2004 году, я написал код JSP (метод написания, который встраивает язык Java в HTML-код).После нескольких лет работы я переключился на технологию распределенного программного обеспечения, а затем на технологию больших данных , Последние 4 года я занимаюсь исследованиями и разработками платформы ИИ.

Требования инженеров-программистов обычно делятся на два аспекта: базовое кодирование и системная архитектура.Поэтому, когда я изучаю инженеров-программистов, особенно при наборе студентов, чтобы дополнительно изучить их всесторонние способности, я каждый раз буду сам готовить вопросы для интервью. Эти темы включают основные концепции программирования, вопросы по программированию алгоритмов, операционные системы, программирование баз данных, чтение открытого исходного кода, механизмы сборки мусора и описания системной архитектуры.

О теме кодирования можно говорить долго, и история развития очень длинная.Когда мне было 15 лет, я использовал язык Basic для изучения программирования, а язык C я выучил, когда учился в колледже.Первый язык Я использовал после окончания колледжа и работы была Java.Различные истории и понимания можно написать в нескольких статьях, которые не будут здесь обсуждаться.

Я думаю, что когда дело доходит до работы инженера-программиста, невозможно избежать проектирования архитектуры программного обеспечения. Когда общественность говорит об архитектуре программного обеспечения, многие думают, что архитектура программного обеспечения - это комбинация множества фреймворков. На самом деле это не так. Сама архитектура программного обеспечения является проработкой организационной формы программных сущностей. Смысл использования фреймворков заключается в том, чтобы быстро завершить проектирование архитектуры программного обеспечения, а не заменить архитектуру программного обеспечения.Дизайн, это не одно и то же, но больше похоже на чертежи и используемое сырье. Архитектура программного обеспечения - это способ достижения цели доступа к росту самого программного обеспечения за счет разделения жизненного цикла программного обеспечения в соответствии с предпосылкой соответствия бизнес-архитектуре. Этот рост требует роста разработки программного обеспечения, а также роста эксплуатации программного обеспечения и, следовательно, роста поддерживаемого бизнеса.

На рынке действительно есть много книг, которые следуют этой тенденции, например, «Архитектура распределенной системы», «Архитектура микросервисов» и т. д., но после ее прочтения я останавливаюсь только на использовании некоторых фреймворков с открытым исходным кодом для построения общей инфраструктуры. Я говорю о строительстве, а не о дизайне. Это действительно строительство. Ваши способности подобны строительным кубикам ребенка. Вы только используете фиксированные обсуждения или почти учитесь, и вы даже не изучаете фиксированные процедуры. Это не очень хорошо для развития ваших личных способностей. Вот почему многие После того, как программист завершает переход от программиста к архитектору, ему не требуется много времени, чтобы переключиться на чистое управление или полностью покинуть технический мир, потому что системная архитектура никогда не была полностью понята.

Причина, по которой я упомянул о столь многих рабочих пониманиях, связанных с системной архитектурой, заключается в том, что я думаю, что системные архитекторы обладают систематическим мышлением, и мы также систематически думаем о системах ИИ, От системных архитекторов с сильными способностями к программированию до технологии ИИ, относительно проще.

инженер ИИ

Зачем переключаться с инженера-программиста на разработку продуктов ИИ? Потому что разработка продуктов с ИИ более привлекательна, потому что это сложнее, и мы не уверены, когда мы действительно сможем это сделать, и сделать действительно воспроизводимый продукт с ИИ. На первый взгляд это тоже порог — «доступная» и «воспроизводимая» технология ИИ, но поскольку она достаточно сложна, она сложна, и необходимо постоянно совершенствовать технологию и делать технологии, которые еще не созданы. в глобальном масштабе. Некоторые проблемы, связанные с разработкой программного обеспечения, могли быть решены другими компаниями, а не «людьми».

Исследования ИИ восходят к силлогизму Аристотеля, затем к созданию логики обработки данных Лейбницем, вкладу Буля в булеву алгебру, вкладу Фреда в современную логику, вкладу Рассела в логицизм — все эти работы посвящены логике данных. Принято считать, что обсуждение современных технологий ИИ зародилось на летнем семинаре, проходившем в Дартмутском колледже в 1956 году, а истоком этой дисциплины может быть Алан Тьюринг (Alan Turing) в 1948 году в Британской национальной физической лаборатории (NPL) писал внутренний отчет, в котором упоминается телесный и бестелесный разум, что в некотором смысле предвещало более поздние дебаты между символической и статистической школами, или статья Тьюринга 1950 года в философском журнале «Сердце». Во всяком случае, Тьюринг.

Можно утверждать, что современный ИИ — это общий термин для ряда технологий общего назначения. Современная технология искусственного интеллекта в основном относится к ряду методов и приложений, основанных на машинном обучении (ML)/глубоком обучении (DL), которые являются лишь ветвью области ИИ и в настоящее время являются наиболее быстрорастущими и наиболее широко используемыми ветвями. .

Принцип машинного обучения/глубокого обучения можно понять следующим образом: построить модель, ввести данные и получить результат посредством работы модели. Его можно использовать для решения простой задачи, такой как определение того, является ли изображение собакой, или его можно использовать для решения сложных задач, таких как игра в шахматы, вождение автомобиля, медицинская диагностика, управление дорожным движением и т. д. Его также можно понять. что модель представляет собой функцию f(x), описанный выше процесс можно выразить так: f (картинка) = собака / не собака.

Разработка приложения ИИ условно делится на три этапа:

  • На первом этапе идентифицируется проблема, строится модель и выбирается модель. Развитие ИИ похоже на воспитание ребенка.Разные дети имеют разные увлечения и специальности.Так же и ИИ имеет множество моделей/алгоритмов, и разные модели/алгоритмы подходят для решения разных задач. Итак, сначала определите, какую проблему вы пытаетесь решить, а затем выберите подходящую модель/алгоритм;
  • Второй этап – обучение модели. Так же как и воспитание ребенка, даже если вы обнаружите, что у ребенка есть музыкальный талант, он не может быть пианистом по натуре, ему нужна профессиональная подготовка. То же самое верно и для разработки ИИ: после выбора модели/алгоритма, каким бы хорошим ни был алгоритм, он не может сразу работать эффективно, необходимо обучать модель на большом количестве данных и постоянно оптимизировать параметры во время обучения. процесс, чтобы модель работала более эффективно. Рабочее состояние модели ИИ на этом этапе называется «обучение»;
  • Третий этап, развертывание модели. После того, как модель обучена, ее можно развернуть. Например, модель распознавания лиц можно развернуть на мобильном телефоне для проверки подлинности при включении питания, развернуть на воротах парка для управления доступом или развернуть на клиенте банка, использовать для проверки подлинности в бизнесе и т. д. Когда ребенок вырастет и станет пианистом, он сможет выступать на концертах или на семейных праздниках. Рабочее состояние модели ИИ после развертывания, говоря профессиональным языком, называется «вывод».

Благодаря приведенному выше краткому описанию процесса разработки ИИ можно обнаружить, что алгоритмы, данные и вычислительная мощность являются тремя движущими силами развития ИИ, и все три необходимы.

  • Алгоритмы эквивалентны генам. Если у вас плохие гены, как бы вы ни старались, все будет напрасно. Как выявлять проблемы, выбирать алгоритмы на основе проблем и даже разрабатывать новые алгоритмы — это основная конкурентоспособность высококлассных экспертов по ИИ;
  • Данные — это учебный материал. Оптогены хороши, но без хороших учебных материалов они не могут научить мастеров. Обучение ИИ требует массивных высококачественных данных в качестве входных данных. AlhpaGo играет в шахматы сама с собой, сыграв десятки миллионов партий, а человек может сыграть не более тысячи партий за всю жизнь. Без такого объема тренировок AlhpaGo просто не сможет победить людей. Самостоятельным вождением Google занимается уже 10 лет и натренировал сотни тысяч часов, что намного превышает количество тренировок профессионального гонщика, но до настоящего беспилотного автомобиля ему еще далеко. Кроме того, качество данных также очень важно: если данные, которые вы вводите в ИИ, неверны, обученный ИИ также будет давать неверные результаты. Проще говоря, если вы обучаете ИИ с изображениями кошек как с изображениями собак, обученный ИИ обязательно будет считать кошек собаками. Важность данных напрямую привела к появлению большого количества компаний и частных лиц в Китае, которые используют аннотацию данных как средство выживания;
  • Ребенок с талантом и хорошими учебными материалами никогда не станет мастером, если он не будет усердно работать и не будет вкладывать время и энергию в усердную учебу. Точно так же и модель ИИ, каким бы хорошим ни был алгоритм и сколько бы ни было данных, если вычислительной мощности недостаточно для поддержки его непрерывного обучения, эта модель никогда не станет действительно полезной моделью. Вот почему Nvidia поднялась.Чипы GPU компании обеспечивают вычислительную мощность, наиболее подходящую для нейронной сети человеческого мозга.Теперь отечественная промышленность также имеет аналогичный продукт компании – чип DaVinci от Huawei.

Обучение моделей приложений ИИ

Перед практическим

Далее мы начнем с практического введения в процесс обучения и вывода модели приложения ИИ.


Модель обучения требует вычислительной мощности.Для приобретения вычислительной мощности, обучения и рассуждений вы можете выбрать использование общедоступного облака или приобрести сервер с чипами вычислительной мощности в соответствии с потребностями вашего бизнеса.В этом случае я выбрал ИИ Платформа разработки цветочной фабрики.Поскольку они недавно запустили продвижение бесплатных вычислительных мощностей, они могут сэкономить на обучении. Для простоты отладки я сначала написал код и обучил модель на своем собственном ПК с процессором, недостатком этого было то, что модель сходилась немного дольше.

Во время эпидемии для населения ношение маски является наиболее эффективным способом предотвращения заражения новым коронным вирусом, одновременно защищая себя и других. Итак, в этой статье речь идет об обучении модели распознавания в маске. Алгоритмы распознавания неотделимы от обнаружения цели. Задача Object Detection — найти все интересующие объекты (объекты) на изображении и определить их расположение и размер. Обнаружение объектов всегда было одной из самых сложных проблем машинного зрения из-за различных форм, размеров и количества объектов, а также объектов, перекрывающих друг друга.

Большинство алгоритмов обнаружения лиц, основанных на глубоком обучении, являются улучшениями, основанными на алгоритмах обнаружения целей с глубоким обучением, или общая модель обнаружения целей настроена для адаптации к задаче обнаружения лиц. Среди множества моделей обнаружения целей (Faster RCNN, SSD, YOLO) наиболее часто используемым алгоритмом обнаружения лиц является алгоритм SSD (Single Shot MultiBox Detector, «Single Shot» относится к обнаружению одиночной цели, «Box» в «MultiBox» " Это похоже на рамку видоискателя, которую мы обычно используем при съемке, фокусируемся только на изображении внутри рамки и экранируем содержимое за пределами рамки. Многоцелевое обнаружение.Другими словами, SSD делит изображение на N фрагментов, выполняет независимое обнаружение одной цели в каждом фрагменте и, наконец, суммирует результаты обнаружения каждого фрагмента.), другие, такие как модель SSH, модель S3FD, алгоритм RetinaFace , все Это вдохновлено алгоритмом SSD или основано на улучшениях настройки задач на основе SSD, таких как перемещение слоя позиционирования в более высокое положение, настройка размера привязки, настройка правил назначения меток привязки, добавление FPN на основе SSD , и т.д. В этой статье YOLO используется для обучения модели распознавания масок.

Весь процесс обнаружения объекта можно разбить на две независимые операции:

  • Расположение: используйте прямоугольник (ограничивающий прямоугольник) для обрамления объекта.Ограничивающий прямоугольник обычно состоит из 4 целых чисел, представляющих координаты x и y левого верхнего и правого нижнего углов прямоугольника или левого верхнего угла прямоугольника. а длина прямоугольника высокая.
  • Классификация: определите (самый большой) объект в ограничивающей рамке.

Я предпочитаю использовать решение keras-yolo3-Mobilenet, адрес проекта с открытым исходным кодом:
GitHub.com/Адам Рич/Гость…
Инновационная изюминка MobileNet — Depthwise Separable Convolution, которая сокращает объем вычислений в 30 раз с небольшой потерей точности по сравнению с VGG16. Инновационными особенностями YOLOv3 являются DarkNet-53, Prediction Across Scales, слои логистической регрессии с несколькими метками и несколькими классами.

Экспериментальные результаты на основе наборов данных из открытых источников:

практическая модель обучения

Для обучения модели, естественно, требуются обучающие наборы данных и наборы тестовых данных, которые вы можете скачать здесь:

модель arts-labs-beijing 4.obs.cai-north-4.no huawei cloud.com/case zoo/immediately…

Структура каталогов проекта обнаружения целей Yolo v3-MobileNet выглядит следующим образом:

|--model_data
 |--voc_classes.txt
 |--yolo_anchors.txt
|--yolo3
 |--model.py
 |--model_Mobilenet.py
 |--utiles.py
|--convert.py
|--kmeans.py
|--train.py
|--train_Mobilenet.py
|--train_bottleneck.py
|--voc_annotation.py
|--yolo.py
|--yolo_Mobilenet.py
|--yolo_video.py

Преимущество проектов с открытым исходным кодом заключается в том, что процесс инкапсулирован для вас. Например, задействованный код Yolo не нужно изменять. Коды, которые необходимо изменить в этом учебном процессе, в основном следующие три:

1.train_Mobilenet.py: обучающий код модели;
2. yolo/model_Mobilenet.py: код модели yolo на основе мобильной сети, если вы внимательно изучите код модели, вы можете изучить этот код;
3.yolo_Mobilenet.py: код вывода модели.

Далее мы подробно представим код, который нам нужно изменить, который делится на класс данных, класс модели, класс визуализации и класс подготовки к миграции в облако в соответствии с их функциями.

Класс данных:

После modeldata/vocclasses.txt напишите txt, есть ли категория для ношения маски, а содержимое содержит только два символа: yes_mask и no_mask.

Если вы загрузите набор данных, который я дал, вы обнаружите, что формат аннотации xml, указанный в наборе данных маски, является стандартом VOC.Напишите файл преобразования данных после convert.py и voc_annotation.py.Код выглядит следующим образом:

 	import xml.etree.ElementTree as ET 
import os 
 
def convert_annotation(classes, label_path): 
    in_file = open(label_path) 
    tree=ET.parse(in_file) 
    root = tree.getroot() 
    output_list = [] 
    for obj in root.iter('object'): 
        difficult = obj.find('difficult').text 
        cls = obj.find('name').text 
        if cls not in classes or int(difficult)==1: 
            continue 
        cls_id = classes.index(cls) 
        xmlbox = obj.find('bndbox') 
        b = (int(xmlbox.find('xmin').text), int(xmlbox.find('ymin').text), int(xmlbox.find('xmax').text), int(xmlbox.find('ymax').text)) 
        output_list.append(" " + ",".join([str(a) for a in b]) + ',' + str(cls_id)) 
    return (' '.join(output_list)) 
 
 
def mask_convert(data_path, classes): 
    img_list = [] 
    for i in list(os.listdir(data_path)): 
        if i.split('.')[1] == 'jpg': 
            img_list.append(i.split('.')[0]) 
 
    output_list = [] 
    for image_id in img_list: 
        img_path = (data_path + '/%s.jpg' % (image_id)) 
        label_path = (data_path + '/%s.xml' % (image_id)) 
        annotation = convert_annotation(classes, label_path) 
        output_list.append(img_path + annotation) 
 
    return output_list

Класс модели:

Будет ошибка, что тензор не совпадает в процессе обучения, нужно изменить строки 140-141 в коде model_data/model.py, как показано ниже:

 	box_xy = (K.sigmoid(feats[..., :2]) + grid) / K.cast(grid_shape[..., ::-1], K.dtype(feats)) 
box_wh = K.exp(feats[..., 2:4]) * anchors_tensor / K.cast(input_shape[..., ::-1], K.dtype(feats))

Класс визуализации:

Чтобы визуально судить о влиянии модели, добавляется визуальный код, который непосредственно маркируется на картинке, то есть на картинке печатается результат вывода (yes_mask или no_mask) Код выглядит следующим образом:

 	#!/usr/bin/env python 
# coding: utf- 
 
img_path = "D:/Code/mask_detection/data/test" 
save_path = "D:/Code/mask_detection/data/test_result/" 
 
 
import matplotlib 
matplotlib.use('Agg') 
import matplotlib.pyplot as plt 
import matplotlib.patches as patches 
import matplotlib.image as mpimg 
import random 
import json 
 
# 推理输出路径 
with open('D:/Code/mask_detection/keras-YOLOv3-mobilenet-master/annotation_YOLOv3.json') as json_file: 
    data = json.load(json_file) 
 
imgs = list(data.keys()) 
 
def parse_json(json): 
    bbox = [] 
    for item in json['annotations']: 
        name = item['label'] 
        xmin = item['x'] 
        ymin = item['y'] 
        xmax = item['x']+item['width'] 
        ymax = item['y']+item['height'] 
        bbox_i = [name, xmin, ymin, xmax, ymax] 
        bbox.append(bbox_i) 
    return bbox 
 
 
def visualize_bbox(image, bbox, name): 
    fig, ax = plt.subplots() 
    plt.imshow(image) 
    colors = dict()#指定标注某个对象的边框的颜色 
    for bbox_i in bbox: 
        cls_name = bbox_i[0] #得到 object 的 name 
        if cls_name not in colors: 
            colors[cls_name] = (random.random(), random.random(), random.random()) #随机生成标注 name 为 cls_name 的 object 的边框颜色 
        xmin = bbox_i[1] 
        ymin = bbox_i[2] 
        xmax = bbox_i[3] 
        ymax = bbox_i[4] 
        #指明对应位置和大小的边框 
        rect = patches.Rectangle(xy=(xmin, ymin), width=xmax-xmin, height=ymax-ymin, edgecolor=colors[cls_name],facecolor='None',linewidth=3.5) 
        plt.text(xmin, ymin-2, '{:s}'.format(cls_name), bbox=dict(facecolor=colors[cls_name], alpha=0.5)) 
        ax.add_patch(rect) 
    plt.axis('off') 
    plt.savefig(save_path+'{}_gt.png'.format(name)) #将该图片保存下来 
    plt.close() 
 
 
for item in imgs: 
    img = mpimg.imread(img_path+item) 
    bbox = parse_json(data[item]) 
    visualize_bbox(img, bbox, item.split('.')[0])

Класс подготовки к облаку:

Открытый исходный код написан небрежно, прямо указывая все параметры в начале обучающего кода кода trian_Mobilenet.py. Для обучающих заданий в HUAWEI CLOUD необходимо указывать входной и выходной пути OBS, лучше всего передавать параметры пути в виде argparse. Другие параметры могут быть добавлены в соответствии с вашими потребностями.Примеры модификации следующие:

 	import argparse 
 
parser = argparse.ArgumentParser(description="training a maskmodel in modelarts") 
# 训练输出路径 
parser.add_argument("--train_url", default='logs/maskMobilenet/003_Mobilenet_finetune/', type=str) 
# 数据输入路径 
parser.add_argument("--data_url", default="D:/code/mask_detection/data/MASK_MERGE/", type=str) 
# GPU 数量 
parser.add_argument("--num_gpus", default=0, type=int) 
args = parser.parse_args()

В открытом исходном коде часть обработки данных заключается в преобразовании xml в текстовый документ, читаемый yolo, поэтому ввод данных необходимо записать в текстовый файл, а затем учебный проект читает текстовый файл и изображение. После перехода в облако этот процесс не очень удобен, и приходится проходить обработку данных, преобразование данных и обучающий код. Здесь я использую кеш для прямой передачи данных в обучающий код, который удобнее менять, но это ненаучно, когда объем данных большой, а кому интересно, можно модифицировать под себя.

Миграция в общедоступное облако

Я использую платформу обучения ИИ общедоступного облака определенного производителя и использую корзину OBS для загрузки отлаженного кода (рекомендуется испытать метод Notebook, онлайн-программирование и компиляцию), как показано на следующем рисунке:

Затем запускаю блокнот, но вместо того, чтобы писать код в jupyter, я использую ресурсы синхронизированного бакета OBS для запуска образа GPU через блокнот:

Создайте среду ноутбука:

Подтвердите спецификации вычислительных ресурсов:

Среда ноутбука успешно создана:

Синхронизируйте связанные файлы из корзины OBS:

Затем войдите в терминальную среду ноутбука и запустите следующий код, чтобы запустить обучающую задачу:

Выходной фрагмент тренировочного процесса выглядит следующим образом:

2020-04-07 18:58:14.497319: I tensorflow/stream_executor/dso_loader.cc:152] successfully opened CUDA library libcublas.so.10.0 locally
7/7 [==============================] - 17s 2s/step - loss: 4226.4421 - val_loss: 22123.3750
Epoch 2/50
7/7 [==============================] - 6s 855ms/step - loss: 1083.1558 - val_loss: 1734.1427
Epoch 3/50
7/7 [==============================] - 6s 864ms/step - loss: 521.8567 - val_loss: 455.0971
Epoch 4/50
7/7 [==============================] - 6s 851ms/step - loss: 322.8907 - val_loss: 193.3107
Epoch 5/50
7/7 [==============================] - 6s 841ms/step - loss: 227.7257 - val_loss: 150.8902
Epoch 6/50
7/7 [==============================] - 6s 851ms/step - loss: 179.0605 - val_loss: 154.9351
Epoch 7/50
7/7 [==============================] - 6s 868ms/step - loss: 150.4297 - val_loss: 147.3101
Epoch 8/50
7/7 [==============================] - 8s 1s/step - loss: 129.5681 - val_loss: 144.8283

После создания модели создайте скрипт Python со следующим кодом, чтобы скопировать файл модели в корзину OBS:

from modelarts.session import Session
session = Session()
session.upload_data(bucket_path="/mask-detection-modelarts-test/run/log/", path="/home/ma-user/work/log/trained_weights_final.h5")

Запустив скрипт вывода, я напечатал результат вывода на тестовом изображении, как показано на следующем рисунке, и определил маску:

постскриптум

Развитие технологий искусственного интеллекта привело к революции в технологической отрасли, и каждая революция в отрасли сделает одни компании одинокими и заставит другие подняться, и программисты останутся такими же. Понимание современных тенденций в области технологий искусственного интеллекта, использование бесплатных вычислительных ресурсов в облаке, а также изучение и применение технологий искусственного интеллекта станут выбором значительного числа инженеров-программистов и специалистов по обработке и анализу данных. Кроме того, благодаря техническим областям распознавания изображений, распознавания текста, распознавания речи и т. д. точность алгоритма была значительно улучшена, и во многих сценариях он достиг коммерческого уровня, что в дальнейшем позволяет использовать технологию автоматического машинного обучения ( становится возможным автоматическое проектирование моделей и обучение). Поэтому во многих сценариях приложений в вышеупомянутых технических областях общедоступное облако уже может выполнять автоматическое обучение моделей ИИ на основе пользовательских данных.

Нажмите «Подписаться», чтобы впервые узнать о новых технологиях HUAWEI CLOUD~