Skip to content

100% Open Image Model Lets You Place Text With JSON

Read the Portuguese translation →

Author: Sam Witteveen · Watch on YouTube

Video authored by the channel shown, not by IANIA; all rights belong to the creator. Transcript and summary generated automatically; the original-language content is preserved.

Original language: English

Original video: 100% Open Image Model Lets You Place Text With JSON · Channel: Sam Witteveen · 13:23 · Watch on YouTube

Topics: AI content generation, AI models, Local and open-source models

Moss Image is a 5-billion-parameter, open-weight image model released under the Apache 2.0 license, making it usable in commercial products. The video highlights its strength in generating text-heavy images and its JSON-based layout controls, which let users specify where text and objects should appear. It produces a range of image styles and aspect ratios, but it is text-to-image only and cannot edit or condition generation on existing images. Community LoRAs and fine-tunes can speed it up or add specific people and styles, though image editing remains a key limitation.

  • Moss Image is a 5B diffusion transformer, paired with a Qwen 3.59B text encoder that can process prompts of around 4,000 tokens.
  • Its weights and code use the Apache 2.0 license, allowing commercial use and integration into products.
  • The SFT checkpoint is for generation, while the base checkpoint is intended for fine-tuning and training LoRAs.
  • The model handles photorealistic portraits, product images, lighting, artistic styles, and varied aspect ratios; 1–2 megapixels is described as its sweet spot.
  • Text rendering is a major strength, including titles, poster details, English and Chinese text, menus, and infographic labels, though it can fail with too much text.
  • JSON layout control lets users define bounding boxes for text and objects, helping place elements more precisely and improve text accuracy.
  • Moss Image does not support image-to-image generation or editing; it is primarily a text-to-image model.
  • Generation is slow at the default 50 steps, but community-made LoRAs, quantized versions, and fine-tunes offer faster options, including an eight-step LoRA.
  • Custom LoRAs can introduce people or styles that the model does not reliably know from its original training.
Start Chapter Summary
00:00 Moss Image overview and licensing The video introduces Moss Image, its model architecture, checkpoints, supported tools, and permissive Apache 2.0 license.
02:11 Image quality and text generation The presenter demonstrates general image generation and explains the model’s strong text rendering, benchmark results, and limitations.
04:47 JSON layout control and limitations The video explains how bounding boxes in JSON can position text and objects, then notes that the model cannot edit existing images.
06:26 Fine-tuning, speed, and gallery demonstrations The presenter discusses LoRAs and community speedups, then demonstrates layout-guided changes, styles, and in-painting.
10:44 LoRAs, custom subjects, and final assessment Examples show faster generation and custom-person LoRAs, before the video sums up the model’s strengths and its lack of image editing.

It’s open weight and most importantly, it’s got an Apache 2.0 license — 00:00

But I think the real reason to look at this model is text. — 03:14

So, the whole idea of sort of JSON layout. — 04:47

there’s no editing here. — 05:53

If you need text-heavy images or you need things placed exactly where you want them, and you want a license that you can actually build a product on, this is really an interesting model for its size. — 12:50

Moss image, Open Moss, Qwen3.5 9B, ComfyUI, Apache License 2.0, JSON layout, LoRA, SGLang, VLM Omni

00:00 Okay, so all three of these images came out of a model that’s just 5 billion parameters. It’s open weight and most importantly, it’s got an Apache 2.0 license, meaning that basically you can do whatever you want with it. The model’s called Moss image and in this video I’m going to go through some examples of what it can do, what it can’t do, what its strengths are, and how you can use this very small model to produce really fantastic images out. So let’s take a look at what you can actually get from a 5B image model nowadays. All right, so Moss image comes from Open Moss. This is the team that

00:34 put out Moss TTS and the Mova video model. And this is their first image model. It came out last week. And basically under the hood, this is a 5 billion parameter diffusion transformer that they trained from scratch. Now to get it to work, they’re basically using the text encoder, which is Qwen 3.59B. So you’ve actually got a 9 billion parameter language model reading your prompt. And that prompt can be up to around 4,000 tokens. Older image models used much smaller text encoders. And that’s a big part of why they struggled

01:04 with long context and complicated prompts. Moss basically has two checkpoints here. There’s a base model, which is really for fine-tuning and training LoRAs. And then there’s an SFT model, which you can actually use to generate with. But like I mentioned in the intro, the big thing here is that this is all Apache 2, both the weights and the code. If you look at some of the other strong image models that I’ve looked at in the past, things like Qwen image, et cetera, while the weights are open, the licenses on those are not. They’re often under a non-commercial research license. Things like Flux 3

01:37 client is gated under the Flux community license. And often that just limits what you can actually do with this. This one, because it’s Apache 2, basically you can do what you want. You can make money out of it. You can put it in your own products. And you can pretty much make any kind of images that you would want to do. Amazingly, both safe for work images and NSFW images as well. So out of the box, the model is actually up on Hugging Face already. It runs natively in ComfyUI, which I think most people are going to use. You can also use it in SG Lang and VLM Omni, which is basically how I’m running it here today. All

02:11 right, so let’s start with just general images. These are all on the SFT model at default settings. We’ve got 50 steps, and we’ve got a CFG, which is a classifier-free guidance of three in here. So, you’ll notice that photorealistic portraits are really solid here. The skin and the details really hold up well. Product shots come out really nice and clean, and the model’s perfectly good at generating out bouquet effects for the background, etc. And I’ll talk about that as we go through. I also find that the lighting effects and lighting sources here, the model seems to handle those very well,

02:44 both for realistic images, but also if you want to make something like a watercolor or some kind of artistic interpretation as well. Styles work, too. If you want to do something like anime or some particular kind of artist, etc., the model seems to be really good at being able to do that. Also, being able to set it to actually do different kinds of aspect ratios means that it’s not just locking you into square images. You can really go into wide banners, sort of portrait phone wallpapers, and can do that with

03:14 anything from about a quarter of a megapixel up to 4 megapixels. With what I would say is 1 to 2 megapixels is being the sweet spot there. So, the model can definitely make decent images for this model size. But I think the real reason to look at this model is text. So, we start with something simple. You’ll see that just a single title, well, that’s no problem. Three lines, title, date, venue for a poster or something, can handle that kind of thing really well. It also can generate the text both in English and Chinese for

03:45 the same scene. And if you wanted to have something stylistic, like having something written on a chalkboard menu and stuff like that, it has no problems with doing things like that. Even for things like infographics, where you basically want to call out different steps, that kind of thing, this model’s doing really well at this. And you can see if we look at these scores here, MOS image is scoring way above the other open models for this. In fact, it’s only just behind fraction of Nano Banana and only a few percentage behind GPT image

04:15 two. So, clearly at the lab’s own long text benchmark, it’s really doing fantastically well for one of the open models. I guess though, do keep in mind that that’s their own benchmark. And so far, I haven’t really found any third-party evals there. Now, that doesn’t mean that it’s perfect at text all the time. There are times that it’s going to break if you push the limit to be too many words on a page, something like that. It can start to fall apart. And perhaps when compared to bigger models like the Korea 2 model, etc., you are going to find that perhaps this model is not quite as good. That said,

04:47 it’s got some really nice features just like those other systems have. So, the whole idea of sort of JSON layout. So, along with a regular prompt, you can give MOS image a layout where you describe the whole scene and then you list out elements, text or objects, each with a bounding box. And they basically train the model to respect this sort of layout JSON and the captions that go along with it. So, it seems to me that this is not something that’s just bolted on afterwards. You’ve basically got the opportunity to have it where you can

05:19 describe what it is that you want and then use JSON sort of bounding boxes to show where you actually want it on the actual image. This can be really cool if you’ve been trying to do things with in-painting in the past and you just haven’t been able to get what you wanted where you wanted it, that kind of thing. And it’s also kind of cool trick of how you can generate something and then look at the output and then decide, “No, actually I wanted that on a different part of the image.” Now, the cool thing here, too, is that don’t forget you can get an LLM to actually write that JSON out. So, you can go from a very

05:53 descriptive brief to have an LLM actually write out the prompt with the JSON to then have MOS image actually generate this in a pipeline. And they’ve got their own layout prompt enhancer, which you can play around with and does exactly that. All right, so what does the model not do? Well, first off, there’s no editing here. You cannot put in image to image here. You can’t do any sort of editing of images. It’s purely text to image. You can do sort of stuff like the standard in painting in ComfyUI, but that’s pretty much about

06:26 it. You’re not going to be able to do something where you take a real-world photo and then edit it, like you can with Nano Banana and Quant Image Edit, etc. And who knows, maybe that’s going to be the next model that they actually release, which would be pretty cool to see, especially if that’s also Apache 2. Now, one of the cool things is because they’ve given you the base model, we can actually do sort of LoRAs and fine-tunes ourselves to actually get very specific styles or get certain people in there, that kind of thing. Now, at the time I’m recording this, I’m not sure all the code examples are out for that, but I

06:58 imagine that’s something that the community is going to be able to work out themselves as well. Out of the box itself, it’s pretty slow at these stock settings. You’re about 50 steps there, and I imagine if you’re doing all of this with a smaller, older GPU, it is going to take time for you to generate that out. Now, that said, I think the community has already released some distillations of this and modifications for versions that you can run in ComfyUI. I wouldn’t be surprised that we actually see a sort of turbo version of this, and I think the community will put out a lot of different versions of this.

07:30 In just under a week, the community has already put out like an eight-step and four-step LoRAs, quantized versions, and even a full fine-tune on the base model. Not to mention that the Most team themselves have said that they’re actively working on a few-step distillation. So, that itself might even lead to an official turbo version on the way. So, let’s take a look at some of the images you can actually do with this in this little demo that I’ve created. Okay, so if we come into this sort of gallery app that I built here, just go through and show you a number of different things in here. First off,

08:02 you’ve got lots of things that you can generate. Now, obviously, you can generate with text. The big issue is that sometimes the text is going to work, sometimes not. The way to actually make it work is to use layout control. So, you see that something like this, I basically had in there as just a straight-up generation where I’m not guiding it in any way, and it will start to get different parts of the text wrong over time. Whereas, if I come in and do something like this, you can see here I’ve basically got different layout

08:33 boxes. So, I can actually draw a box and then fill it in. Right? So, this is using the JSON generation in here. Once I I’ve put it in there, I can then basically tell it what do I want to appear in that box. We’ve got, you know, a whole bunch of different things. If you want to Let me just turn on the turbo version. So, this is going to be a bit quicker. We can go even deeper in here. So, you can see here we’ve basically got the actual layouts there. If we want to change, you know, the couch, we could come in and just change

09:05 the color in here. We can change it here. I can then click generate, and you’ll see now we’ll get a green couch instead of a red couch there. We can also do things like we can change, you know, things on the the poster at the back there. If I generate that now, we should see we’re going to get Ready Player One instead of just Player One there. And so, this is sort of the key way if you want to actually play with text, you want to actually control where it’s going to appear, and that also seems to make the text a lot more

09:38 accurate in here. Not just text though, we can also change, you know, the cat to a tiger. Let’s see how that’s going to come out. And you can see now we’ve got our tiger. Now, we will find sometimes, you know, things like that changed, you know, him to putting the hoodie on. And so, if we had something really specific that we wanted, we would basically go through and tell it, “Okay, change these different things.” We would go through and actually tell it to not put the hoodie on his head, keep it at the back, or something like that. We can also do

10:08 really nice sort of styles and effects in here. So, these are just straight out of the model, no sort of Laura pre-trains or anything like that, and it does a really nice job of those. It can also do things like in-painting, so you can see here we’ve got the same picture, we’re just changing what’s going to appear there. And you can see in this case the books got cut off, but for the cat it works well, for the dog perhaps not as much. So, you do want to experiment with it. Back to the styles here, it really is able to capture some really nice styles of different kinds of pictures and stuff like that. You can

10:44 then basically use Laura’s with it. So, one of the Laura’s that’s already been made is this eight-step Laura. So, this just speeds up generation. So, generation without it for me is around about 30 seconds, but if I use this, let’s just come in and remix this. If I use this and I actually put on this Laura here, I can actually come in here and change that. So, we had him wearing a yellow top now, we change it to basically an orange one. And you can see

11:15 that that’s generating a lot quicker now than 30 seconds. We’ve got the time down much quicker. So, you’ll see in regards to sort of famous people, certain people it will know very well, for example, Brad Pitt, etc. it knows really well. But if I ask it to make a picture of Sam Altman, it really doesn’t know who he is, right? For whatever reason, there’s just not enough of him in the weights and stuff in it. You’ll see that like each of these, it doesn’t really work. But if I create a Laura, and you can see basically I’ve made a custom Laura of

11:48 him here, trained up on not a huge amount of images, and probably not the best quality images, and actually many of the images when I scraped them were actually from things that he did when he was much younger at Y Combinator, etc. So, that’s why they tend to come out looking a bit younger. But if you put the effort in, you can actually train up a Laura pretty quickly that will put someone into the photos, even though they weren’t in the original training data set. Just to sort of compare that, this is one that I did with nano banana

12:19 with him. And you can see that, yeah, okay, it’s gotten better quality on certain things, but it still hasn’t got his face perhaps as good as I would like here. And that’s coming about here because we’re not doing image editing. We’re not conditioning on a picture of him to actually generate. We’re actually generating from the weights of the model out there. So, that really shows where the weakness of this model is, is that because you can’t do image editing, you either have to fine-tune through a Laura or something like that to actually

12:50 inject a person or a topic or a style into the actual weights itself, rather than just using it in context and doing some kind of editing here. So, I do hope that they would go on to make a version of this that actually can do image editing and can condition on images, not just condition on text, etc. All right. So, if you need text-heavy images or you need things placed exactly where you want them, and you want a license that you can actually build a product on, this is really an interesting model for its size. If you need editing, yeah,

13:23 it’s not quite there yet. You’ll have to wait for a newer model or a newer version of this as it comes. Anyway, I’ve put the links in the description. Let me know in the comments what you think if you’re playing with this, what you’re sort of noticing this to be good at, what you’re noticing it to be bad at. As always, if you found the video useful, please click like and sub- scribe, and I will talk to you in the next video. Bye for now.