Upgrade to Pro — share decks privately, control downloads, hide ads and more …

28万枚の写真に タグづけした話

28万枚の写真に タグづけした話

Avatar for T. Fujiba

T. Fujiba

June 27, 2026

More Decks by T. Fujiba

Other Decks in Programming

Transcript

  1. 自己紹介:撮るほうが本業です ふじば(T.Fujiba) 航空写真作家 「情景的飛行機写真」— 飛行機そのものより、飛行機のいる風景を撮る ホームは鳥取空港(TTJ) 撮影のほとんどがここ。ただし遠征の例外がたまに混ざる プログラマ Lightroom カタログは10年もの。気づけば

    28万枚 TTJ HND NRT + 27空港 写真展: 空港散歩 V 朱から蒼 〜Airport Stroll V TOTTORI SUNSET & STARLIGHT〜 ▪東京 富士フォトギャラリー銀座 スペース2 2026/10/23(金)〜29(木) 10:30〜19:00(土日: 11:00〜17:00)、最終日は14:00まで ▪大阪 イロリムラ プチホール 2026/11/4(水)〜9(月) 12:00〜19:00(初日: 13:00〜、最終日15:00まで) 2 https://www.fujiba.net/ twitter/insta/github:@fujiba
  2. 撮影地タグ、もう何年もつけてない 01 最初はまめだった 撮影地(空港名)を毎回手入力。えらい 。ただし最初の数年だけ。 → その後ズボラが勝利 02 「基本は鳥取」の罠 9割は鳥取空港。でも遠征・出張の例外が

    混ざるので「全部TTJ」では誤爆する。 → 一括処理ができない 03 手作業は無理 10年分・28万枚超。1枚1秒でも79時間。検 索できないカタログは資産じゃない。 → なんとかせねば 285,630 枚。これを「プラグインを作って」自動でタグ付けすることにした 3
  3. 作ったもの:Lightroomプラグイン + ローカル推論サーバ Lightroom Classic プラグイン Lua(SDK) 常駐デーモンとして少しずつ処理 カタログ検索で未処理だけ抽出 カスタムメタデータに書き戻し

    airportCode / burstId / chunkId HTTP localhost 推論サーバ Python / FastAPI GPS判定(空港ジオフェンス辞書) YOLOv8:飛行機・猫の検出 CLIP + 線形SVM:空港の推定 SQLite 処理管理DB burst / chunk / photo の台帳 再開・再推定に使う ポイント:Lightroomを止めない。寝てる間も撮影に出てる間も、デーモンが裏で淡々と消化する設計 4
  4. タグ付けの仕様はシンプル 被写体キーワード YOLOv8で検出するのは 「飛行機」と「猫」だけ。 検出したらLightroomのキーワードに登録。 飛行機 猫 空港には猫がいる。撮ってしまう。 だからクラスは2つ必要(伏線)。 撮影地(空港)の特定

    信頼できる順に使う。上が獲れたら下は見ない。 1. GPS カメラ/スマホ連携の位置情報。最強 2. 手入力 過去の自分が付けた空港名。信用する 3. 写真から推定 CLIP特徴量 + SVM。最後の砦 優先度: GPS > 手入力 > 画像からの推定 5
  5. 時間で切るだけ:session ⊃ burst ⊃ chunk session 同一空港とみなす範囲 burst 最長20分 chunk

    chunk chunk chunk = 5秒以内の連写塊 burst chunk chunk burst間隔 <1時間 ≥1時間 空いたら 別session session =空港が変わった可能性 時間 → 28.5万枚 → 10,267 burst / 100,366 chunk に圧縮(平均27.7枚/burst・最大442枚/burst) 8
  6. 伝播の戦果:推論しなかった分が勝ち 62,713回 YOLO推論の総数(28.5万枚の22%) 32,572枚 伝播だけで空港が確定(1,399 burst・推論ゼロ ) 0回 locked burst(手入力済み)への再推論。過去の

    自分を上書きしない 空港コードの確定ソース(写真ベース・285,208枚) 手入力 98,015 GPS 81,373 CLIP推定 49,026 伝播 32,572 未確定 23,117 10
  7. 機械学習の話は、ここだけ(飾りです) 写真 CLIP 特徴量 線形SVM 空港コード 教師データは手持ちの写真 — 3空港ぶん、自分のカタログから (TTJ/HND/NRT)

    足りなければあとで足して再分析と割り切る 重心ベースのオープンセット判定 — どの空港でもなければ「わからない」と 言わせる 出番はGPSも手入力も無いときだけ — あくまで最後の砦 PHOTO [図/スクショ] 空港分類の混同行列 or 学習データのコンタクトシート 11
  8. 実装:人間はほぼ書いてない(まあどうでもいい) STEP 1 AntiGravity にコードを書かせる 仕様と文句は人間が言う STEP 2 Claude Code

    にレビューと修正をさ せる AI同士で殴り合ってもらう STEP 3 土日 プラグインを回しっぱなし 月曜未明、28万枚完了 12
  9. 結果 285,208 処理した写真(カタログ実数 285,630 ) 10,267 burst 100,366 chunk 30空港

    タグ付けされた空港 ※一部は要精査 156,823 鳥取空港(TTJ)— 全体の55% 108,426 「飛行機」が写っていた枚数 3,666 「猫」が写っていた枚数 2 飛行機と猫が同時に写っていた枚数 ※集計後に撮影してるので増えてます。 PHOTO 13 結果を見る限り、まあまあいい感じ。