YOLOv11xモデルをHugging Faceに公開する

日本古典籍くずし字データセットで学習したYOLOv11xモデルをHugging Faceに公開し、Gradio Spacesでデモを作成する手順を紹介します。 概要 モデル : YOLOv11x(くずし字検出用) データセット : 日本古典籍くずし字データセット 公開先 : Hugging Face Models + Spaces 1. Hugging Face Modelsにモデルを登録 1.1 huggingface_hubのインストール p i p i n s t a l l h u g g i n g f a c e _ h u b 1.2 ログイン h u g g i n g f a c e - c l i l o g i n または Python から: ...

2026年1月26日 · 5 分 · Nakamura

YOLOv11xと日本古典籍くずし字データセットを用いた文字の検出モデルの構築

概要 YOLOv11xと日本古典籍くずし字データセットを用いた文字の検出モデルの構築を行う機会がありましたので、備忘録です。 http://codh.rois.ac.jp/char-shape/ 参考 過去に、YOLOv5を用いて同様のことを行いました。以下のspacesで動作デモや学習済みモデルをご確認いただけます。 https://huggingface.co/spaces/nakamura196/yolov5-char 以下は、「国宝 金沢文庫文書データベース」の公開画像に対する適用例です。 YOLOv11を用いることで、文字検出の精度向上を狙うことが目的です。 データセットの作成 「日本古典籍くずし字データセット」をダウンロードし、yoloで求められる形式に整形します。 形式は以下などで確認することができます。 https://github.com/ultralytics/hub/tree/main/example_datasets/coco8 画像のサイズを1280x1280に設定 以下のUltralytics HUBを使用しました。 https://hub.ultralytics.com/ 以下が学習結果です。 テストデータに対して適用したところ、良い精度がでる画像データ(例:「『源氏物語』(東京大学総合図書館所蔵)」)もあれば、 あまり良い精度がでない画像データ(例:「国宝 金沢文庫文書データベース」)もありました。 画像のサイズを640x640に設定 エポック数が10の場合 エポック数が10の場合は、エポック数が10の場合、学習が完全に収束していない可能性がありました。 一方、エポック数が少ないにも関わらず、テストデータに対しては、1280x1280のものより良い結果を示すようでした。 エポック数が100の場合 f # m # m r o o o Y d デ d m O e ー e L l タ l d e # b u O セ . a p a l v = ッ t t o i t t 8 ト r a c m c r の Y と a = h g h a 分 O ト i ' s s = l 類 L レ n / = z 2 y モ O ー ( h 1 = 4 t デ ( ニ o 0 2 i ル ' ン m 0 2 c を y グ e , 4 s ロ o 設 / , ー l 定 m i ド o d m 1 x p 1 u o x s r . e t p r t / Y ' y O ) o L l O o # / c N h a a # n r # o s # バ サ _ エ ッ イ 6 ポ 入 チ ズ 4 ッ 力 サ の 0 ク 画 イ 分 _ 数 像 ズ 類 s サ ( モ p イ オ デ l ズ プ ル i シ t ョ / ン d ) a t a . y a m l ' , # デ ー タ セ ッ ト の パ ス バッチサイズが16(デフォルト)では、GPUメモリの使用率が低く、32に設定すると、OutOfMemoryErrorになってしまいました。 ...

2024年11月6日 · 5 分 · Nakamura

mdx.jpを用いてYOLOv11のクラス分類(くずし字認識)の学習を試す

概要 mdx.jpを用いてYOLOv11のクラス分類(くずし字認識)の学習を行う機会がありましたので、備忘録です。 データセット 以下の「くずし字データセット」を対象にします。 http://codh.rois.ac.jp/char-shape/book/ データセットの作成 yoloの形式に合致するようにデータセットを整形します。まず、書名ごとに分かれているデータをフラットにマージします。 # c | l a e s x s d p e o C f r l t a c # f # f s r i o s e " l o r i a . e u f t . s t f c o i # o s i e / p i l u f s h c _ d = u l s t p . u a d a t e p o r m t t a t g _ = u s c i a i i t a l d i t . o n k l o a / o i n f _ p n t e . n s * b r i f a t ( d c : e / ( t l i t i f i o t c i = q e l h n " r p ( h n d . e . u C s y s a p " m s e e o ( ( e r u . ( p = x p f f l a t . f l i y " i f c _ / i i f s i { l , t f d l t " t n o e e i a e ( { s g u , i r l t s " o ( t n s e a ) / u o { p o p / _ / : " t u f u u u * p d ) p t i t t t / a a [ u p l _ p _ * t t - t u e d u f . h a 2 _ t } i t i j ) s ] d _ r _ l p e i f t } f e g t r i o / i _ " " } l { l p / e { c e a { ) o l ) t c : u s h l t } , s p " } u , o / t u { _ e t f f x p i i i u l l s t e e t _ . } _ d s " o i p ) k r l = ) i T : t r ( u ' e / ) ' ) [ - 1 ] } " 次に、以下のようなスクリプトにより、データセットを分割します。 ...

2024年11月6日 · 34 分 · Nakamura

Hugging Face SpacesとYOLOv5モデル(顔コレデータセットで学習済み)を使った推論アプリの構築

概要 Hugging Face Spacesと、YOLOv5モデル(顔コレデータセットで学習済み)を使った推論アプリを作成しました。 人文学オープンデータ共同利用センターが公開する顔コレデータセットは以下です。 Yingtao Tian, Chikahiko Suzuki, Tarin Clanuwat, Mikel Bober-Irizar, Alex Lamb, Asanobu Kitamoto, “KaoKore: A Pre-modern Japanese Art Facial Expression Dataset”, arXiv:2002.08595. http://codh.rois.ac.jp/face/dataset/ 推論アプリは、以下のURLからお試しいただけます。 https://huggingface.co/spaces/nakamura196/yolov5-face また以下のURLからソースコードや学習済みモデルをダウンロードすることができます。同様のアプリケーションを開発される際の参考になれば幸いです。 https://huggingface.co/spaces/nakamura196/yolov5-face/tree/main なお、アプリケーションの開発には、以下のSpaceを参考にしています。 https://huggingface.co/spaces/pytorch/YOLOv5 使い方 画像をアップロードするか、Examplesから画像を選択してご利用いただけます。以下のように認識結果を確認することができます。 『文正草子』(日本古典籍データセット(国文研所蔵)CODH配信) まとめ 検出精度が十分でない点がありますが、参考になりましたら幸いです。 現在はYOLOv5を用いたモデルですが、今後より新しいモデルも試してみたいと思います。

2024年10月5日 · 1 分 · Nakamura

ModuleNotFoundError: No module named 'huggingface_hub.utils._errors'対応

概要 Hugging FaceのSpacesにアプリをデプロイした際、以下のエラーが発生しました。このエラーに対する備忘録です。 C V U W T M D r i p A r o u e e d R a F F F d r a w a N c i i i u i t t I e l m l r l f l n i U e N b e o e e e r e g n l G a d s o N g t S c " e " u " m o h r e ⚠ k / l / l / t a n a t ️ u u t u h F n e l t ( s = s s u o d w y i D m r r = r g u l t n e o / D / / g n i U i g t s l e l a l i d n l c s e t o t o t o n E g t s c c e c t c g r r w t r a c a e a f r o a S i M e l t l m l a o f l e t u c / M / p / c r y t h l e l u l t l e : t t t t n i l i _ i _ h i i ' i t b t b d b h N e c n y B / i / o / u o s g o a c p B p w p b a s l c a y a y n y . m b S o k l t c t l t u o o e w e l h k h o h t d v t i s n o e o a o i u e t t e d l n n n d n l l i h t a 3 d 3 _ 3 s e e n t f s . ( . f . . x g ' i a t 1 1 r 1 _ n c s y n i ) 0 0 0 e a e o g l : / m / r m p v l s e s s _ s r e t 0 o d i i h i o d i . k : t t u t r o 0 s e e e b e s ' n . e y N - - ( - h , 6 t = o p p w p i u t v a a , a m g a f i a m c c c p g n i n l o k k h k o i o l g u d a a f a r n t e s e u g g _ g t g h ' ' l e e t e f e ✅ , e s s s R a r o / k / e c r i n y y e y p e e . a o o n o o _ x a e m l l = l s h c t . e o o h o i u e d v v f v t b p ' 5 5 _ 5 . t y ' / / t r u i h o h h m u y t o o l u e o k t N i n m o g l d e i o l e g p e n l t s o / s i e l ) s F . c u e n r s / o _ c s t g s / d u e u e t f . c o n r r r i a p o w d r r / n c y m n E o e . g e " m l r r d c s _ , o o r s : o h n a o ' n r u l . d r f u b i p s i n . n y . g s u e " p / _ t , y U d i 3 " l i l 8 l , t r s , i r = . n l a p _ i e i l a e n n y t r 3 e t h r l 3 i / o o 8 1 c t r a , 5 s s d 0 / ' _ i , s d m n e i o i t r d n t ' e _ i . l i a n n t g F i t s o t e . r _ m j _ p s h t o e _ n l d ' p o w s n e l e o a h d t _ t f p r s o : m / _ / h d u o b c s . u l t r a l y t i c s . c o m / q u i c k s t a r t / # u l t r a l y t i c s - s e t t i n g s . 参考 以下の記事が参考になりました。 ...

2024年10月4日 · 5 分 · Nakamura

YOLOv5モデル(文字領域検出)を使った推論アプリ

概要 以下で文字領域の検出アプリを公開しています。 https://huggingface.co/spaces/nakamura196/yolov5-char 上記アプリが動作しなくなっていたので、以下の記事と同じ手順で修正しました。 なお、本アプリで使用しているモデルの構築にあたっては、「『日本古典籍くずし字データセット』(国文研ほか所蔵/CODH加工) doi:10.20676/00000340」を使用しています。 この修正において、細かい改善も加えたので、紹介します。 gr.JSONの高さ設定 返却結果のJSONデータが大きくなると、結果が見づらいことがありました。 そこで、以下のように、demo.cssを設定することにより、 d d . } " d e e j " e m m s " m o o o o . n h . = c - e v l s h i e a g s o g r u r l h f n . = d t l c I e : o h n " r w ( t " 3 : ) e " { 0 r 0 a f p u a x t c ; o e ; ( y o l o , i n p u t s , o u t p u t s , t i t l e = t i t l e , d e s c r i p t i o n = d e s c r i p t i o n , a r t i c l e = a r t i c l e , e x a m p l e s = e x a m p l e s ) 以下のように、スクロールバーとともに結果を表示できるようになりました。 ...

2024年5月23日 · 3 分 · Nakamura

Hugging Face SpacesとYOLOv5モデル(NDL-DocLデータセットで学習済み)を使った推論アプリの修正

概要 以下の記事でHugging Face Spacesと、以下の記事で紹介したYOLOv5モデル(NDL-DocLデータセットで学習済み)を使った推論アプリを紹介しました。 このアプリが動作しなくなっていたため、動作するように修正しました。 https://huggingface.co/spaces/nakamura196/yolov5-ndl-layout この修正で行なった対応についてメモします。 修正点 修正を加えたapp.pyは以下です。 i f i i m d i o ] t d a e ] d d m r m m o e n u i e r x e e p o p p d f p t t s t a m m o m o o e u p l c i m o o r r r l y r d r i # o r ] t u g g e r c p [ [ [ . t P t t o e f e m u e s t r r i l l ' ' ' = l I = l s s _ C t t s . . = p e e 『 『 『 a g L y j o u = w o p u = I J t s 源 源 平 g u r o s y ( l = i n u r o r = m S " i = 氏 氏 家 r n a i l o o i t r t v t n u e g a O Y o = 物 物 物 . c d m o n l m s e j h e _ t s r [ g N O n " 語 語 語 I h i p v o ) s s _ r i [ p . e ( L < [ 』 』 』 n ( o o 5 v : = u o b t m u I ( ) O = p ( ( ( t s r 5 l n o a t m t v 東 京 国 e h a t . m t . x t g _ a y 5 " s 京 都 文 r a s l o s l e h e i g p Y t 大 大 学 f r I o d . o s e m e e N O y 学 学 研 a e g m a e p a = a ( = D L l 総 所 究 c = r a d l a d = n g t " L O e 合 蔵 資 e F g ( ( n s u I e y p - v = 図 ) 料 ( a e " i d ( r m m , p i D 5 ' 書 . 館 y l n m a d e p a e l o t 館 j 提 o s a ) s f s y g = " c N e 所 p 供 l e k ( ) u e ' , L D x 蔵 g ) o ) a ) l a . p L t ) ' . , m # . t r f i l D - - . ] j u x s r r l a a D a j , p i r i y . a o ' b t o l p g n a n x r y m , e a c i g ' p 1 f y e a l s L g ' ] u 9 e [ n b r l = e n ] t 6 r 0 d a r a " t D : , s / e ] e c a b O s a , y n . r k y e u " t c o c t ( ( l t a e o l e o ) t i = p s n u o _ [ o m " u e t t v j 0 _ O t t e p 5 s ] a w r s r u - o n i i I ' t n n t g m G > s d ( # i h i a r Y , l o m _ n g a O - r r a b a e d L t l i e g o l " i O i a e s e x ) o v t y n u e I , 5 l o t l s m d e u = t ) a e N = t " s g m D t " r . e o L i ) e r " - t c e ) f D l o n o o e r d r c , d e L s r o d " ( b D e ) ) j a s e t c r c a r e t s i t e p u d t t r e s i n t o s e i n c s = a t d i a e l o n s i n c s . o r t b i U j p o p e t f l c i o t o i a n m d d , a e g a t a e n e r s c t i t i m i c a o l g n e e = m a o o r r d t e i c l c l l i t e c r , k a i e a n x n e a d m e p x o l a n e m s p t = l h e e e x a i < m m a p a l g h e e r s e ) t f = u " s h e t . t " p s : / / g i t h u b . c o m / n d l - l a b / l a y o u t - d a t a s e t \ " > N D L - D o c L D a t a s e t s < / a > . < / p > " まず、Gradioのバージョンアップに伴い、gr.inputs.Imageをgr.Imageなどに変更しました。 ...

2024年5月20日 · 5 分 · Nakamura

ultralyticsplus: ValueError: Invalid CUDA 'device=0' requested...への対処

概要 YOLOv8を用いた推論アプリを以下で公開しています。 https://huggingface.co/spaces/nakamura196/yolov8-ndl-layout 当初、以下のエラーが発生しました。 V t t o S a o o s e l r r . e u c c e e h h n h E . . v t r c c i t r u u r p o d d o s r a a n : : . . [ i d ' / I s e C p n _ v U y v a i D t a v c A o l a e _ r i i _ V c d l c I h a o S . C b u I o U l n B r D e t L g A ( ( E / ) ) _ g ' : : D e d E t e F 0 V - v a I s i l C t c s E a e e S r = ' t 0 ] e ' : d / r N l e o o q n c u e a e l s l t y e / d . f o U r s e u p ' - d t e o v - i d c a e t = e c p t u o ' r c o h r i p n a s s t s a l v l a l i i n d s t C r U u D c A t i d o e n v s i c i e f ( s n ) o i C f U D a A v a d i e l v a i b c l e e s , a i r . e e . s e ' e d n e v b i y c e t = o 0 r ' c h o . r ' d e v i c e = 0 , 1 , 2 , 3 ' f o r M u l t i - G P U . このエラーがに対して、以下のようにdeviceを追記することで対処できました。 ...

2024年5月20日 · 4 分 · Nakamura

ultralytics/yolov5でのAttributeErrorへの対応

ultralytics/yolov5を使用した際、以下のエラーが発生しました。 A t t r i b u t e E r r o r : ' D e t e c t i o n s ' o b j e c t h a s n o a t t r i b u t e ' i m g s ' これは、以下のissueにあるように、apiが変更されたために発生するようです。 https://github.com/robmarkcole/yolov5-flask/issues/23 一例ですが、以下のようにプログラムを書き換えることで、エラーが解消しました。 r # d # d r e e e e s n f o f n u e l d l w g o i r r d o r r e t e u f e e l e e r s t t s t d s t e I p o u u G u u d = m u s s l r e l r I a t . h t n t t n m m g _ p u s I s g o e d a t . I m . I d ( i t i s m a r m = e r r h l a a g e a l e . . v g e n g g ( s = e r e e ( d e e i u x m ( . r e . t m l " i t s o e r f I ) t s s r a p s ( r m s t t e v e u ) o a ) a s e e n l m g # : t ( ( _ ( t a e i o o d f s r ( i c u u i " ) r r n " t t r { : a e f p p = o y s e u u f u ( u r t t " t r l e _ _ { p e t n d d o u s s c i i u t u ) e r r t _ l ) ) p d t : u i s t r . _ } i d / m i i g r m s } a [ / g 0 " e ] ) 0 ) . j p g " ) 同様のことでお困りの方の参考になりましたら幸いです。 ...

2022年10月18日 · 2 分 · Nakamura

Hugging Face SpacesでJSONを返却する

以前、Hugging Face SpacesとYOLOv5モデル(NDL-DocLデータセットで学習済み)を使った推論アプリの構築を行いました。 今回は上記のアプリを一部変更して、以下の差分に示すように、JSON出力を追加しました。 https://huggingface.co/spaces/nakamura196/yolov5-ndl-layout/commit/4d48b95ce080edd28d68fba2b5b33cc17b9b9ecb#d2h-120906 これにより、以下のノートブックのように、返却結果を利用した処理が可能になりました。 https://github.com/nakamura196/ndl_ocr/blob/main/GradioのAPIを用いた物体検出例.ipynb 他により良い方法があるかと思いますが、参考になりましたら幸いです。

2022年8月16日 · 1 分 · Nakamura

NDL-DocLデータセットとYOLOv5を用いたレイアウト抽出モデルを作成しました。

概要 NDL-DocLデータセットとYOLOv5を用いたレイアウト抽出モデルを作成しました。 https://github.com/ndl-lab/layout-dataset https://github.com/ultralytics/yolov5 本モデルは以下のノートブックからお試しいただけます。 https://colab.research.google.com/github/nakamura196/ndl_ocr/blob/main/NDL_DocLデータセットとYOLOv5を用いたレイアウト抽出モデル.ipynb 本記事は、上記の学習過程の備忘録です。 データセットの作成 Pascal VOC形式のNDL-DocLデータセットを、YOLO形式に変換します。この方法については、以下の記事を参考にします。Pascal VOC形式からCOCO形式への変換に加えて、COCO形式からYOLO形式への変換を追加しています。 学習 以下のページにカスタムデータの学習方法が記載されています。 https://github.com/ultralytics/yolov5/wiki/Train-Custom-Data 以下のノートブックにも学習方法が記載されています。 https://colab.research.google.com/github/ultralytics/yolov5/blob/master/tutorial.ipynb 入力画像のサイズを1024、バッチサイズを4、エポック数を300に設定した結果、以下のような結果が得られました。なお、データセットをtrain 80%, validation 10%, test 10%に分けています。 推論 上述した通り、以下のノートブックから推論をお試しいただけます。 https://colab.research.google.com/github/nakamura196/ndl_ocr/blob/main/NDL_DocLデータセットとYOLOv5を用いたレイアウト抽出モデル.ipynb 以下、推論結果の例です。うまく認識できた例のみを掲載しています。 『源氏物語』(東京大学所蔵) 『源氏物語』(京都大学所蔵) 『源氏物語』(九州大学所蔵) まとめ レイアウト認識の結果を踏まえ、次は行内の文字認識に取り組みたいと思います。

2022年7月25日 · 1 分 · Nakamura

AWS Lambdaを用いた物体検出API(Flask + yolov5)の構築

概要 AWS Lambdaを用いた物体検出API(Flask + yolov5)の構築を行います。機械学習の推論モデルをAWS Lambdaを用いて構築することにより、コストの軽減を目指します。 以下の記事を参考にさせていただいています。 https://zenn.dev/gokauz/articles/72e543796a6423 リポジトリの内容の更新や、API Gatewayからの利用方法の追記などを行なっています。 Lambdaへの関数登録 以下のGitHubリポジトリをクローンします。 g i t c l o n e h t t p s : / / g i t h u b . c o m / l d a s j p 8 / y o l o v 5 - l a m b d a . g i t ローカルで実行する 次に、venvを用いて仮想環境を作成して、モジュールをインストールします。 ...

2022年3月24日 · 3 分 · Nakamura

Flaskを用いてyolo5モデルを公開するリポジトリのECRとAWS App Runnerでの使用方法

本記事では、AWS App Runnerとyolo5を用いた物体検出APIの構築例について紹介します。 Amazon ECR 以下で公開されている、Flaskを用いてyolo5モデルを公開するリポジトリについて、 https://github.com/robmarkcole/yolov5-flask Amazon ECR(Elastic Container Registry)のパブリックレジストリにイメージを登録しました。 https://gallery.ecr.aws/b8m8i5m3/yolov5-flask 元のリポジトリから一部ソースコードを変更しています。フォークしたリポジトリは以下です。 https://github.com/ldasjp8/yolov5-flask 以下では、本イメージの利用例として、App Runnerでの使用方法を説明します。 AWS App Runner App Runnerにアクセスして、画面右上の「サービスの作成」をクリックします。 次の「ソースおよびデプロイ」画面において、以下のように選択します。「コンテナイメージのURI」には、以下を与えてください。 public.ecr.aws/b8m8i5m3/yolov5-flask:latest 次の「サービスを設定」画面において、サービス名を入力し、ポートを5000に変更します。 その後の設定はデフォルトのまま進めると、以下の画面に遷移します。 5分から10分程度待つと、「ステータス」が「Running」となったら成功です。 「デフォルトドメイン」のドメイン「 https://XXXX.us-east-1.awsapprunner.com/ 」を用いて、以下のURLにアクセスしてください。 https://XXXX.us-east-1.awsapprunner.com/detect?url=https://raw.githubusercontent.com/ultralytics/yolov5/master/data/images/zidane.jpg 以下に示すような物体検出結果のJSONデータが返却されます。 まとめ AWS App Runnerを用いて、yolo5を用いた物体検出APIを簡単に構築することができました。 App Runnerを用いたAPI構築の一例として、参考になりましたら幸いです。

2022年3月21日 · 1 分 · Nakamura