UpSkill & CodeArchivist
CodeArchivist CodeArchivist
Слышал про PixelForge, графический редактор 1988 года? У меня есть чистая версия программы, и формат исходных файлов до сих пор загадка. Думаешь, сможешь быстро написать небольшой скрипт на машинном обучении, чтобы найти иконки и, может, немного UI оживить? Я, правда, скругленные углы трогать не буду.
UpSkill UpSkill
Конечно, без проблем. Могу скинуть простой Python скрипт, использующий OpenCV и крошечную свёрточную сеть, чтобы сканировать сырые файлы на предмет похожих на иконки областей. Без закруглений, только жесткие квадраты. Там `width`/`height` подкорректируешь под размер холста PixelForge. Эта маленькая сеть отметит всё, что хоть немного похоже на иконку размером 32x32. Потом сможешь их склеить в новый макет интерфейса в Фотошопе или GIMP – закругления там и не нужны. Удачного кодинга!
CodeArchivist CodeArchivist
Скрипт неплохой, но не забудь, что старые файлы в формате 1 байт на пиксель, а не в 8-бинной шкале серого. Тебе придётся привести к `uint8` перед изменением формы, иначе свертка вызовет проблемы. К тому же, иконки PixelForge были с однопиксельной рамкой – сеть может принять это за скругление углов. Поиграй с порогом или добавь слой с отступами в обучающих данных. Как только вытащишь их, просто скопируй сырые PNG-файлы в структуру кадра в стиле Win16 – без кривых, только прямые края. Удачи с восстановлением!
UpSkill UpSkill
Понял, подкину лишних актёров прямо в загрузчик, чтобы сеть видела чистые uint8 пиксели. Добавлю ещё слой с отступом в один пиксель к тренировочным патчам, чтобы граница не принималась за угол. Повысим порог до 0.85, чтобы минимизировать ложные срабатывания. Вот быстрое исправление: ```python def load_raw(path): with open(path, 'rb') as f: raw = np.frombuffer(f.read(), dtype=np.uint8) # уже uint8 return raw # добавляем отступ к каждому патчу def pad_patch(patch): return np.pad(patch, ((1,1),(1,1)), mode='constant', constant_values=0) # во время обучения: X_padded = np.array([pad_patch(p) for p in X]) model.fit(X_padded, y, epochs=5, batch_size=8) ``` Когда запустишь сканер, он обойдёт границу и будет отмечать только содержимое иконки. Потом скопируй PNG-файлы в твой Win16-фрейм, с ровными краями. Приятного восстановления!
CodeArchivist CodeArchivist
Отличное решение с подpadding'ом – эти однопиксельные границы всегда доставляли кучу проблем. Только убедись, что входной слой модели всё ещё ожидает 32x32 после padding'а, иначе он воспримет лишние пиксели как часть иконки. И если вдруг позже возникнут ложные срабатывания, попробуй увеличить stride в `find_icons`, чтобы пропускать перекрывающиеся окна. Как только PNG-файлы будут готовы, помести их в простую рамку и дай знать – я протестирую это на своей копии заставки PixelForge. Удачи с восстановлением!
UpSkill UpSkill
Понял, оставлю модель на 32x32 и буду делать паддинг только в обучающих данных, чтобы сеть вообще не видела лишние границы. Увеличиваю шаг сканера до 32 вместо 16 – так перекрытия окон будет меньше, что должно снизить количество ложных срабатываний. Как только PNG-файлы будут готовы, скину их в простой контейнер и дам знать. Удачного восстановления!
CodeArchivist CodeArchivist
Звучит здорово – эта подстройка шага должна держать поиск быстрым и чистым. Как только эти иконки появятся у тебя, просто дай знать, и я сравню их с моей копией. Удачи с восстановлением!
UpSkill UpSkill
Will do, ping you as soon as they’re in the frame. Happy restoring!