こんにちは.
前回*1に引き続き,pix2pixで遊んでみます. 今回はピンぼけ画像を鮮明化する,所謂,超解像のようなことをやってみます.
- 入力画像
前回と同じトカゲの画像を使います.前回は黒いシミを画像に付加したのに対して,今回はボカしを加えます. 「ミディアン・フィルターをランダムに掛ける」とか色々考えたのですが,簡単のために,画像サイズを一度小さくして,再度256×256に戻すという処理にしました. 画像をどの程度小さくするか(下記ソース内のsize)を乱数で与え,学習の難易度を上げています.
images/resize_and_blur_image.py
# blur blured = Image.new(img.mode, (256, 256), (255, 255, 255)) blured.paste(resized, (0, 0)) size = random.randint(32, 128) blured = blured.resize((size, size), Image.LANCZOS) blured = blured.resize((256, 256), Image.LANCZOS) blured.save(directory + '/' + file + '_256_blot.jpg')
1. プログラム
前回と全く同じです. 間違いがあった箇所だけ直しました. 全画像を一つのファイルにまとめて配置するconfigurate_data.pyに一行だけ追加しています.
すみません. 前回のソースはそのままでは動きませんでした(汗).
configurate_data.py
import common as c
2. 学習結果
(学習に使っていない)テスト画像を復元した結果です. ボカしていない元画像と比較したい方は,参照先を見てみて下さい.
左: ボカし画像,右: 復元画像
出典*2
*3
*4
*5
*6
*7
何となく,顔周りが復元されやすい気がしました. 人の顔を復元するデモをよく見ますが,共通する特徴があると学習しやすいのでしょう. 今回は単純に「トカゲが写っている写真」を解析しましたが,例えば,「トカゲの顔のアップ」といった限定条件をつければ,復元性能がよりアップすると思います.
3. むすび
面白いですね. 前回,監視カメラの画像を鮮明化して「この顔見たら110番」という話をしましたが,冗談ではなく実現できそうです. 既にやられているんでしょうね...
Deep Learningは「こめかみにホクロがある」といったクリティカルな特徴までを復元することはありません. しかし,ある程度は統計的に,安定した動きをする筈です. 一方,人の目撃証言は曖昧ですが,「この人に間違いない」と確信するようなアテンションを伴っていたりします. ヒトとAIの特徴を捉え,うまく共存していくことが重要そうですね.
ソースは前回と同じ場所に,ボカし処理用のresize_and_blur_image.pyを追加する仕方でアップしています*8.
*1:https://changlikesdesktop.hatenablog.com/entry/2020/06/22/201412
*2:https://tucson.com/lifestyles/pets/surprisingly-beautiful-southern-arizona-lizards/collection_c681537c-191f-11e5-9eb7-c7ad03baf446.html
*3:https://animals.sandiegozoo.org/animals/lizard
*4:https://www.gettyimages.co.jp/%E5%86%99%E7%9C%9F/frilled-lizard?mediatype=photography&phrase=frilled%20lizard&sort=mostpopular
*5:https://animals.sandiegozoo.org/animals/lizard
*6:http://www.californiaherps.com/lizards/pages/p.mcallii.html
*7:https://www.dailymail.co.uk/news/article-2613154/Salmonella-outbreak-infected-132-people-linked-bearded-dragons-bought-pet-stores.html