Вы никогда не представляете, что реализовать инструмент автоматизированного тестирования ИИ так просто! (Основы)

искусственный интеллект контрольная работа
Вы никогда не представляете, что реализовать инструмент автоматизированного тестирования ИИ так просто! (Основы)

1. Введение

Команда качества Xianyu стремится предоставлять пользователям высококачественные приложения. Благодаря постоянному развитию технологии искусственного интеллекта и популярности TensorFlow он также предоставил больше возможностей для методов тестирования. В этой статье мы познакомим вас с искусственным интеллектом в тестировании Xianyu. практика: как применять технологию ИИ для поиска ошибок по картинкам.

2. Выбор модели

Ошибки, которые можно найти без понимания бизнеса, в основном включают пустую страницу в целом, некоторые исключения отображения элементов управления и текстовые исключения. Для общих пустых изображений обнаружено, что их общие черты относительно очевидны: большая пустая область или ошибка в центральной области, поэтому я решил использовать простую модель CNN, построенную TensorFlow, для идентификации нормальных изображений и ненормальных. фотографий. Для изображений с искаженными символами, такими как текстовые аномалии, OCR + LSTM используется для создания простой модели распознавания китайских символов для идентификации текстового содержимого на изображении, а затем для определения наличия искаженных символов. Образцы для обучения вышеуказанных моделей получены из скриншотов истории ошибок и имитации положительных образцов данных.

3. Переобучение модели — повышение точности распознавания модели

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

4. Обработка изображений — повысьте эффективность ручного скрининга результатов.

4.1 Специальные скриншоты

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

4.2 Дедупликация изображений

В настоящее время, чтобы убедиться, что все элементы на странице извлекаются в текущей задаче обхода скриншота, одна задача обхода посещает одну и ту же страницу как минимум дважды; в то же время, чтобы облегчить анализ контекста страницы. , выбранные элементы отмечаются красными прямоугольниками. Отсюда возникает проблема: в наборе изображений для распознавания будет несколько дубликатов скриншотов на одной и той же странице, и одна и та же страница может быть отмечена красными прямоугольниками в разных местах. Ручная проверка большого количества повторяющихся результатов распознавания изображений неизбежно приведет к утомлению зрения, поэтому отображение результатов после дедупликации может значительно повысить эффективность ручной проверки и снизить затраты.

4.2.1 Решение

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

4.2.2 Реализация

1) Рассчитать расстояние между картинками

Сначала преобразуйте изображение в w*h*3-мерный вектор и используйте евклидово расстояние между векторами в качестве расстояния между изображениями.Чем больше похожи изображения, тем меньше расстояние.

  1. def get_pic_array(url,w,h):

  2.    file = cStringIO.StringIO(urllib2.urlopen(url).read())

  3.    img = Image.open(file)  # PIL打开图片

  4.    img=img.resize((w, h))

  5.    try:

  6.        r, g, b, k = img.split()  # rgb通道分离,兼容4通道情况

  7.    except ValueError:

  8.        r, g, b = img.split()

  9.    # 获得长度为(w*h)的一维数组

  10.    r_arr = np.array(r).reshape(w * h)

  11.    g_arr = np.array(g).reshape(w * h)

  12.    b_arr = np.array(b).reshape(w * h)

  13.    #将RGB三个一维数组(w*h)拼接成一个一维数组(w*h*3)

  14.    image_arr = np.concatenate((r_arr, g_arr, b_arr))

  15.    return image_arr

скопировать код

Чтобы завершить кластеризацию n изображений, полученных одним обходом приложения, одно изображение обрабатывается, как указано выше, а затем объединяется в матрицу n * (w * h * 3) в качестве набора образцов.

2) Метод расчета расстояния между кластерами

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

  1. Z = linkage(X, 'ward')

скопировать код

После выполнения приведенного выше оператора кластеризация завершена.

3) Выбор критического расстояния

Это значение напрямую влияет на эффект кластеризации.Если критическое расстояние слишком мало, некоторые похожие изображения не могут быть сгруппированы в одну категорию.Если критическое расстояние слишком велико, изображения, которые не находятся на одной странице, будут сгруппированы вместе, так как выбрать подходящий?Расстояние очень важно. В ходе эксперимента было установлено, что если изображения идентифицируются моделью аномалии страницы как аномальные, сходство между такими изображениями зачастую выше, а критическое расстояние класса исключений будет установлено меньшим.

5. Резюме и перспективы

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

Затем мы интегрируем инструмент LabelImg и используем TensorFlow для построения модели SSD для выявления изображений с ненормальными элементами управления.Кроме того, мы также пытаемся определить проблемные страницы, такие как неупорядоченное расположение элементов/текста, и ожидаемые результаты операций со страницей. Мы продолжим изучать использование методов обработки изображений и выявления ошибок в качестве метода обеспечения качества.

Справочный документ: [1] https://haojunsui.github.io/2016/07/16/scipy-hac/