Faits: Faits: A. Y._ vit seule avec ses trois enfants, dont Z._, née le 19 juin 1987. Entre la fin de 1999 et celle de 2000, elle a entretenu une relation avec X._, ressortissant portugais né le 14 mai 1969, qui partageait son appartement à cette époque. Entendue le 14 juin 2004 par la police de sûreté du canton de Vaud, Z._ a déclaré qu'en 2000 et jusqu'en mars 2001, X._ l'aurait violée à plusieurs reprises. Il se serait glissé nuitamment dans son lit pour la contraindre à des relations sexuelles complètes, ainsi qu'à des fellations. Après son départ du domicile familial, X._ l'aurait attirée chez lui pour la violer et lui montrer des films pornographiques. Le 16 juin 2004, le Juge d'instruction de l'arrondissement de l'Est vaudois a inculpé X._ de viol, de contrainte sexuelle, d'actes d'ordre sexuel avec des enfants et de pornographie. Il a ordonné son arrestation immédiate. Entendu le 16 juin 2004, X._ a contesté les accusations portées contre lui et nié toute relation sexuelle avec Z._. Lors de son audition du 21 juin 2004, il a changé de version, mais en expliquant que c'était Z._ qui avait pris l'initiative de trois ou quatre rapports sexuels et d'une ou deux fellations, sans contrainte. Le 24 juin 2004, X._ a demandé sa libération provisoire. Le Juge d'instruction a rejeté cette requête le 25 juin 2004. Le même jour, le Juge d'instruction a ordonné que le prévenu soit soumis à une expertise psychiatrique. Le 15 juillet 2004, le Tribunal d'accusation du Tribunal cantonal du canton de Vaud a rejeté le recours formé par X._ contre le refus de sa libération provisoire, en raison des besoins de l'enquête, du risque de collusion et de réitération, ainsi que de la nécessité de protéger l'ordre public. Le 15 juillet 2004, le Tribunal d'accusation du Tribunal cantonal du canton de Vaud a rejeté le recours formé par X._ contre le refus de sa libération provisoire, en raison des besoins de l'enquête, du risque de collusion et de réitération, ainsi que de la nécessité de protéger l'ordre public. B. Agissant par la voie du recours de droit public, X._ demande au Tribunal fédéral d'annuler l'arrêt du 15 juillet 2004 et d'ordonner sa libération immédiate. Il invoque les art. 10 Cst., 5 CEDH et 59 CPP/VD. Le Tribunal d'accusation et le Ministère public se réfèrent à l'arrêt attaqué. Le Juge d'instruction ne s'est pas déterminé. 