За последние два года искусственный интеллект изменил технологическую отрасль с невообразимой скоростью. Не так давно я наткнулся наОт эскиза до HTML за 5 секундСтатья заставляет меня почувствовать, что «использование искусственного интеллекта для автоматического создания веб-страниц» становится все более и более реалистичным. Сверточная нейронная сеть SketchCode, которая будет представлена в этой статье, может напрямую преобразовывать эскизы дизайна графического пользовательского интерфейса веб-сайта в строки кода, разделяя часть процесса проектирования с разработчиками интерфейса. В настоящее время модель получила оценку BLEU 0,76 после обучения.
Ссылка на оригинальную статью:Глубокое обучение использует эскизы кода и рукописи для автоматического создания интерфейсных HTML-страниц.
Вот краткое введение в этот фреймворк, вы можете найти код этого проекта на GitHub:GitHub.com/А — это твой Кумар/ это…
Keras==2.1.2
tensorflow==1.4.0
nltk==3.2.5
opencv-python==3.3.0.10
numpy==1.13.1
h5py==2.7.1
matplotlib==2.0.2
Pillow==4.3.0
tqdm==4.17.1
scipy==1.0.0
Затем перейдите непосредственно в корневой каталог проекта и используйте команду pip для установки.
pip install -r requirements.txt
Войдя в файл скриптов, вы найдете еще два файла.
sh get_data.sh
sh get_pretrained_model.sh
Здесь используйте wget для загрузки необходимых пакетов. Размер файла составляет около 1 ГБ, что будет немного медленным. Рекомендуется открыть эти два файла напрямую. Скопируйте ссылку и используйте Thunder для загрузки и поместите его в указанную папку. каталог.
Для проверки сначала нарисуем картинку
python convert_single_image.py --png_path ../examples/img002.png \
--output_folder ./generated_html \
--model_json_file ../bin/model_json.json \
--model_weights_file ../bin/weights.h5
Затем терпеливо подождите, пока он отобразит интерфейсный код, примерно минуту или около того.
<style>
div{
border:1px solid black;
}
</style>
Сгенерированный код:
<html>
<header>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"
integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css"
integrity="sha384-rHyoN1iRsVXV4nD0JutlnGaslCJuC7uwjduW9SVrLvRYooPp2bWYgmgJQIXwl/Sp" crossorigin="anonymous">
<style>
.header{margin:20px 0}nav ul.nav-pills li{background-color:#333;border-radius:4px;margin-right:10px}.col-lg-3{width:24%;margin-right:1.333333%}.col-lg-6{width:49%;margin-right:2%}.col-lg-12,.col-lg-3,.col-lg-6{margin-bottom:20px;border-radius:6px;background-color:#f5f5f5;padding:20px}.row .col-lg-3:last-child,.row .col-lg-6:last-child{margin-right:0}footer{padding:20px 0;text-align:center;border-top:1px solid #bbb}
</style>
<title>Scaffold</title>
<style>
div{
border:1px solid black;
}
</style>
</header>
<body>
<main class="container">
<div class="header clearfix">
<nav>
<ul class="nav nav-pills pull-left">
<li><a href="#">Rmjoyzs Sj</a></li>
<li><a href="#">Dtve Erhaz</a></li>
<li><a href="#">Rnwy Ytpdy</a></li>
</ul>
</nav>
</div>
<div class="row">
<div class="col-lg-12">
<h4>Ghhbl</h4>
<p>azsiooemicuwzfzihzwszwifivztb ejpb hcukgvayzsrmfd zfheqz</p>
<a class="btn btn-warning" href="#" role="button">Eyzedji Ii</a>
</div>
</div>
<div class="row">
<div class="col-lg-3">
<h4>Cajql</h4>
<p>sw f qpgtzfwyjo fkygfdozgtsmvxqcdgtakfusadoqhj zc ynpmuj</p>
<a class="btn btn-warning" href="#" role="button">Vbcmla Awl</a>
</div>
<div class="col-lg-3">
<h4>Dtgpz</h4>
<p>qtim b baoi ifbohotcxhvyonys hffqjjnip hrl nymsqiawxoou</p>
<a class="btn btn-warning" href="#" role="button">Gypkcdc Cu</a>
</div>
<div class="col-lg-3">
<h4>Pfdib</h4>
<p>met mlu fexp gwty afd qvwislevvmx afymfoytwytucytqpj vma</p>
<a class="btn btn-warning" href="#" role="button">Rtro Omwgb</a>
</div>
<div class="col-lg-3">
<h4>Dofwm</h4>
<p>ipaobcqhuzmtj rw uqlmohukgqfhenp zxgnrjt vgh psgabonmhfn</p>
<a class="btn btn-warning" href="#" role="button">Dssgiz Zqg</a>
</div>
</div>
<div class="row">
<div class="col-lg-6">
<h4>Vyilr</h4>
<p>ztrcrpzxrdqvq ex k dsckj rvwc woshsyvbnydkkk rvsv rsgvlt</p>
<a class="btn btn-warning" href="#" role="button">Evlk Kfglm</a>
</div>
<div class="col-lg-6">
<h4>Rdewa</h4>
<p>ycbtmxmnmt z yqdnclxfektreixx m j ckgyagaqwnkf os nfzfoa</p>
<a class="btn btn-warning" href="#" role="button">Rkcbs Serv</a>
</div>
</div>
</main>
<script src="js/jquery.min.js"></script>
<script src="js/bootstrap.min.js"></script>
</body>
</html>
Опираясь на исследования в области аннотирования изображений, SketchCode может за считанные секунды преобразовывать нарисованные от руки каркасы веб-сайтов в пригодные для использования HTML-сайты. Однако по-прежнему существуют следующие ограничения:
- Так как эта модель сделана только с 16 обученный на словаре элементов, он не может предсказать токены вне обучающих данных. Следующим шагом может быть создание других образцов веб-сайтов с большим количеством элементов, таких как изображения, раскрывающиеся списки и формы. Компоненты Bootstrap — отличный сайт для практики:индивидуальный bootstrap.com/docs/4.0/co…
- В реальной производственной среде веб-сайт претерпевает множество изменений. Хороший способ создать обучающий набор данных, который лучше отражает это изменение, — это просканировать реальные веб-сайты, зафиксировав их HTML/CSS-код, а также скриншоты содержимого веб-сайта.
- Существует также множество вариаций набросков, нарисованных от руки, и модели не полностью усваивают методы модификации CSS. Отличный способ создать больше вариаций нарисованных от руки эскизов — использовать генеративные состязательные сети для создания реалистично нарисованных изображений веб-сайтов.