Rose debug info
---------------

Записки архивариуса

Тексты заведующего фонограмм архивом фольклорно-этнографических записей Центра русского фольклора @

Нейросеть для повышения детализации лиц на фото

Улучшить детализацию лица на фото

Собрал колаб для повышения детализации лица на фото в расфокусе. Что это значит? Пример можно посмотреть в карусели выше. У меня была фотография отца переснятая на смартфон и камера при этом не успела навести резкость. Детали лица потеряны.
Нейросеть умеет дорисовывать детали у таких фотографий. В карусели видно, что одно и то же фото я обработал два раза. Так же я ее раскрасил в колабе DeOldify
Я экспериментировал с разными фотографиями. Например я пробовал улучшить лицо Василия Артемьевича Сидорова выдернутое из видео. На третьем фото видны глюки. Я подозреваю, что нейросеть обучена на людях возрастом примерно 25-50 лет и поэтому вместе с улучшением идет и «омоложение» лица. Собрать датасет из лиц пожилого возраста и обучить на них нейросеть дело будущего. Возможно этот пост будет позже дописан.

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

 Нет комментариев    79   1 мес   neuro   python

Настройка NGINX

server {
        listen 80; # порт, прослушивающий nginx
        server_name    server.local; # доменное имя, относящиеся к текущему виртуальному хосту
        root  /var/www/site; # каталог в котором лежит проект, путь к точке входа

        index index.php;
        # add_header Access-Control-Allow-Origin *;

        # Отдавать статику
        location ~* \.(jpg|jpeg|gif|css|png|js|ico|html)$ {
                access_log off;
                expires max;
                log_not_found off;
        }

        location ~* \.php$ {
        try_files $uri = 404;
        auth_basic "Restricted Content"; #  Настройка авторизации htpasswd
        auth_basic_user_file /var/www/.htpasswd; # указываем место нахождения файла с паролями
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php/php7.2-fpm.sock; # подключаем сокет php-fpm
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    location ~ /\.ht {     #запрещаем чтение файлов htaccess и htpasswd
                deny all;
        }
    location /files {    # В директории files 
           autoindex on; # разрешаем просматривать файлы
           charset UTF-8; # Устанавливаем кодировку что бы файлы не читались кракозябрами
         }
   }

Что бы формировать файл htpasswd и добавлять в него пользователей надо поставить утилиты apache

sudo apt-get install apache2-utils -y
sudo htpasswd -c /var/www/.htpasswd newuser 
# создаем файл и одновременно добавляем в него пользователя
 Нет комментариев    50   2 мес   web

MySQL шпаргалка

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

CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';

GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
FLUSH PRIVILEGES;

DROP USER 'demo'@'localhost';

Множественное объединение в запросе.
Есть одна таблица Записи

Индекс Дата Место Исполнитель1 Исполнитель2
1 01.02.2003 Совхоз им. Ленина 1 2

И вторая таблица с исполнителями
Исполнители

Индекс Имя
1 Иванов Иван Иванович
2 Петров Петр Петрович

нам нужно вывести в запросе все имена вместе с датой и местом

Запрос будет таков:

SELECT Дата, Место, Исп1.Имя, Исп2.Имя FROM Записи
#Здесь в селекте используются псевдонимы, 
# которые будут определяться позже в запросе, что вызывает путаницу поначалу
LEFT JOIN Исполнители AS Исп1 ON Записи.Исполнитель1 = Исп1.Индекс
LEFT JOIN Исполнители AS Исп1 ON Записи.Исполнитель2 = Исп2.Индекс
# В left join мы задали те самые алиасы (псевдонимы)

Условие совпадения не обязательно могут быть по индексу.
Будут выведены все записи, если исполнителя нет, то будет выведено NULL

Сам пример не случайный, именно так была устроена база ГРЦРФ. Ошибка здесь в том, что у одной записи строго ограниченное количество исполнителей жестко прошитое в структуре, то же самое было и относительно участников сеанса записи со стороны экспедиции. Правильным решением является соединение через еще одну промежуточную таблицу. Это называется «реляционное деление». В промежуточной таблице указывается id записи в основной таблице «Записи» и id в записи «Исполнители». Соответственно запрос ищет сначала все записи в промежуточной таблице с id потом считывает из поискового запроса все id исполнителей и после этого их подставляет в финальную выдачу.
Примера пока нет. Возможно когда-то будет updated.

 Нет комментариев    39   2 мес   web
Ранее Ctrl + ↓